【问题标题】:Is there a way to disable all other Java Scripts other than my own with Grease Monkey有没有办法用 Grease Monkey 禁用我自己以外的所有其他 Java 脚本
【发布时间】:2010-04-21 18:33:17
【问题描述】:

我需要帮助让带有 JQuery 脚本的 Grease Monkey 在损坏的站点上运行。

我正在尝试运行以下 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 扩展(希望它不会遇到同样的问题)。

我将按照我在 OS 上的另一篇文章中看到的示例进行操作: How to use jQuery in Firefox Extension

我能够让它工作,但对所示示例稍作修改:

(顺便说一句,我使用Firefox Extension Wizard 轻松快速地获得了扩展设置的基本框架)。

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);

【问题讨论】:

  • 你能给我举个例子来说明如何用 GM 做到这一点。我没有直接访问该文件的权限。

标签: jquery firefox greasemonkey


【解决方案1】:

你做不到。

如果出现 javascript 错误,您的代码(最后执行)将永远不会执行。

我已经远方寻找解决方案,但始终找不到。

【讨论】:

  • 你知道firefox扩展是否会遇到同样的问题吗?
  • 我不知道,但我猜会的。
  • @DKinzer:如果您打算尝试扩展路线,您应该考虑将 GM 插件编译到扩展中。我认为这是可能的,它可能会为您节省一两步
【解决方案2】:

由于eventSupported 函数中的错误,GM 和 jQuery 1.4.* 目前无法共存。
因此,您可以使用 1.3.* jQuery 或直接在脚本中包含修改后的 1.4.2 版本,例如建议的 here
由于您选择了扩展路径,因此这与您无关,但我仍然将其发布给其他有类似问题的人,他们将来可能会偶然发现此问题。

【讨论】:

  • 谢谢,这实际上仍然很有用。虽然我已经通过扩展路由解决了我的问题。
猜你喜欢
  • 2015-06-22
  • 2016-03-18
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 2021-08-27
  • 2014-01-08
  • 1970-01-01
  • 2016-02-09
相关资源
最近更新 更多