我不知道为什么,但我的greasemonkey / tampermonkey脚本拒绝在有iframe的页面上运行。 该脚本在iframe内运行,但不在根域内运行。如果我使用@noframes选项,则在包含iframe的网页上根本不会发生任何事情。
我甚至采取了行动
// @match http://*/*
我的测试代码非常简单......
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = document.location.protocol + '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(script)
var title = $('title').html();
alert(title);
这将显示一个警告,其中包含iframe的名称,但不显示实际的网站。我已经尝试过使用greasemonkey和tampermonkey。
答案 0 :(得分:1)
您的目标父网页可能没有实际的<head>
元素,
导致该脚本实例崩溃。
这不是你用脚本添加jQuery的方式!你会遇到各种各样的时间问题和代码冲突。
请参阅this answer for the best cross-platform way to add jQuery的第二部分(但如果您只使用GM / TM,那就太过分了)。并this bit for resolving jQuery conflicts and crashes in GM/TM scripts。
iframe可能会自己加载jQuery,或者你只是有一个快乐的计时事故(现在),但不要依赖这样的运气代码。
如果脚本是针对Tampermonkey / Greasemonkey(没有纯Chrome),则可以使用:
// ==UserScript==
// @name _YOUR_SCRIPT_NAME
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
var title = $('title').html();
alert(title);