为什么这个Greasemonkey脚本不能使用这个jQuery插件?

时间:2014-03-25 06:25:41

标签: javascript jquery-plugins safari greasemonkey ninjakit

我在Safari中使用NinjaKit(与Greasemonkey相同)。代码就像这样

// ==UserScript==
// @name          demo
// @namespace     http://dailymed.nlm.nih.gov/
// @include       http://dailymed.nlm.nih.gov/dailymed/*
// @require      http://code.jquery.com/jquery-1.11.0.min.js
// @require      http://johannburkard.de/resources/Johann/jquery.highlight-4.closure.js
// ==/UserScript==
$(document).ready(function () {
    document.title = 'Hello!' + document.title;
    alert("ZaiJian");

    $("body p").highlight(["a"]);
});

当我访问this page时,alert可以很好地显示,但依赖.highlightjQuery.highlight的{​​{1}}函数不会显示工作。它说:

jQuery

我觉得调试这个很难。有没有人对它有任何想法?

2 个答案:

答案 0 :(得分:1)

我相信NinjaKit目前不做@require。这是我做的一个例子,它适用于Firefox / GreaseMonkey,而不适用于Safari / Ninjakit:

// ==UserScript==
// @name           DEBUG
// @include       http://localhost/Library.html
// @require  file:///Users/#######/Sites/hello_world.js 
// @require  http://localhost/~#######/hello_world.js  // EITHER WAY
// ==/UserScript==
alert('activated');
hello_world();

# hello_world.js

function hello_world(){
    alert('Hello World!');
}

作为"遥控器"地址或本地文件,它在GreaseMonkey中运行良好,在Safari中失败。根据我的经验,目前很难得到NinjaKit的来龙去脉。

答案 1 :(得分:0)

在使用jQuery插件之前,您需要阅读相关的docs

首先,

  

在高亮表的样式表中创建一个条目。

     
    
      

.highlight {background-color:yellow}

    
  

在Greasemonkey中,相当于GM_addStyle('.highlight { background-color: yellow }');

第二,

  

要突出显示所有li元素中“bla”(不区分大小写)的所有出现,请使用以下代码:

     
    

$('利')亮点。(' BLA&#39);

  

你应该遗漏括号,即$("body p").highlight("a");

第三,我认为你不需要$(document).ready(),因为默认情况下,Greasemonkey脚本会在DOMContentLoaded事件时执行。

全部放在一起:

// ==UserScript==
// @name          demo
// @namespace     http://dailymed.nlm.nih.gov/
// @include       http://dailymed.nlm.nih.gov/dailymed/*
// @require       http://code.jquery.com/jquery-1.11.0.min.js
// @require       http://johannburkard.de/resources/Johann/jquery.highlight-4.closure.js
// @grant         GM_addStyle
// ==/UserScript==
GM_addStyle('.highlight { background-color: yellow }');
document.title = 'Hello!' + document.title;
$("body p").highlight("a");