Есть ли способ отключить все другие скрипты Java, кроме моего с помощью Grease Monkey - PullRequest
0 голосов
/ 21 апреля 2010

Мне нужна помощь, чтобы Grease Monkey с JQuery Script работал на сломанном сайте.

Я пытаюсь запустить следующий GM-скрипт, но страница, на которой я хочу работать, имеетОшибка JS и мой JS не выполняется.

// ==UserScript==
// @name          BILL INFO PAGE ALTER
// @namespace     http://jenkinslaw.org
// @description   Alter the web page in order to pretty print
// @include       http://www.legis.state.pa.us/cfdocs/billinfo/bill_history.cfm?*
// @require       http://code.jquery.com/jquery-1.4.2.min.js

// ==/UserScript==
*/
(function() {

  //Make a copy of the bill table
  var bill_table = $('.main_table').clone();

  //empty the whole lot
  $(body).empty();

  //append the bill back to the dom.
  $(body).append(bill_table);

}());

Спасибо!

D

Прогресс:

Я согласен с @mkoryak, этоНевозможно решить проблему с GM.Поэтому я отбрасываю его и вместо этого использую расширение Firefox (надеюсь, оно не столкнется с той же проблемой).

Я буду следовать примеру, который я видел в другом посте здесь, в ОС: Какиспользовать jQuery в Firefox Extension

Мне удалось заставить его работать, но с небольшим изменением из показанного примера:

(в качестве отступления)Я использовал мастер расширений Firefox , чтобы легко и быстро получить базовую основу для установки расширений).

jQuery.noConflict();
(function($){

billinfo = new function(){};
billinfo.log = function(){ Firebug.Console.logFormatted(arguments,null,"log"); };
billinfo.run = function(doc,aEvent) {

  // Check for website
  if(!doc.location.href.match(/^http:\/\/(.*\.)?legis\.state\.pa\.us\/cfdocs\/billinfo\/bill_history\.cfm\?(.*)?$/i)) return; 

  // Check if already loaded
  if(doc.getElementById("plugin-billinfo")) return;

  // Setup
  this.win = aEvent.target.defaultView.wrappedJSObject;
  this.doc = doc;

  //Make a copy of the bill table
  bill_table = $('.main_table', doc).clone();

  //empty the whole lot
  $('body', doc).empty();

  //append the bill back to the dom.
  $('body', doc).append(bill_table);      
}; 

// Bind Plugin
var delay = function(aEvent){ var doc = aEvent.originalTarget; setTimeout(function(){ billinfo.run(doc,aEvent); },1); };
var load = function(){ gBrowser.addEventListener("DOMContentLoaded", delay, true); };
window.addEventListener("pageshow", load, false) 
})(jQuery);

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010

Вы не можете сделать это.

В случае ошибки javascript ваш код (который выполняется последним) никогда не будет выполнен.

Я искал далеко и широко , чтобы найти решение для этого, но так и не смог его найти.

1 голос
/ 24 апреля 2010

GM и jQuery 1.4. * В настоящее время не могут сосуществовать из-за ошибки в функции eventSupported.
Следовательно, вы можете использовать 1.3. * JQuery или включить модифицированную версию 1.4.2 непосредственно в вашСценарий, такой как предложенный здесь .
Поскольку вы выбрали путь расширения, это не имеет значения для вас, но я все еще публикую это для других с похожими проблемами, которые могут наткнуться на это вбудущее.

...