【发布时间】:2020-07-26 00:26:53
【问题描述】:
我一直在尝试将用户脚本迁移到我自己的扩展中,但由于某种原因我无法运行以下代码:
// ==/UserScript==
console.info('BEFORE Hooked! MONKEY');
(function() {
'use strict';
// Reference [Augular loaded detect]: https://stackoverflow.com/a/31970556/9182265
var initWatcher = setInterval(function () {
if (window.MegaUtils) {
console.info(window.MegaUtils);
clearInterval(initWatcher);
hookImport();
hookFull();
console.info('FUNtions Hooked! MONKEY');
}
}, 500);
})();
但由于某种原因,IF 语句永远不会为 TRUE,而是从 ViolentMonkey 运行完全相同的代码,它可以立即运行。
所以 window.MegaUtils 根本没有被检测到,我不知道为什么。 有人告诉我,我的扩展程序可能无法访问 DOM 对象,但为什么 ViolentMonkey 确实可以访问它。
这是我在 Chrome 中导入扩展程序时使用的清单:
{
"manifest_version": 2,
"content_scripts": [ {
"exclude_globs": [ ],
"include_globs": [ "*" ],
"js": [ "mega.user.js" ],
"matches": [ "https://mega.nz/*",
"http://mega.nz/*" ],
"run_at": "document_end"
} ],
"converted_from_user_script": true,
"description": "testing extension",
"permissions": [],
"name": "MegaByPass",
"icons": {
"16": "images/mega-cloud-icon.png",
"32": "images/mega-cloud-icon.png",
"48": "images/download.png",
"128": "images/873133.png"
},
"version": "1.0"
}
提前致谢。
【问题讨论】:
-
上面的代码在哪里运行?背景脚本还是内容脚本?它是如何注入的?
-
我相信这就是您要问的://@run-at document-end full source in:greasyfork.org/en/scripts/397876-mega-nz-ultimately-import/code
-
没有。我在问adon如何注入上述脚本?通过
manifest.json或tabs.executeScript或contentScripts.register()或userScripts.register()等? -
这是一个很好的问题,我正在使用 manifest.json 但不确定 ViolentMonkey 是如何做到的。如何找出来?我将清单添加到问题中。
-
回复更新了更多信息。
标签: javascript greasemonkey userscripts