0

我在 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"]);
});

当我访问此页面时,alert可以很好地显示,但是.highlight依赖的功能jQuery.highlight不起作用jQuery。它说:

TypeError: 'undefined' is not a function (evaluating 'c.toUpperCase()')

而且我发现调试这个非常困难..有人对此有想法吗?

4

2 回答 2

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 的来龙去脉。

于 2015-12-29T00:19:37.597 回答
0

在使用 jQuery 插件之前,您需要阅读相关文档。

第一的,

在样式表中为突出显示类创建一个条目。

.highlight { 背景颜色:黄色 }

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

第二,

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

$('li').highlight('bla');

您应该省略括号,即$("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");
于 2014-03-25T08:54:14.420 回答