Firefox 使用Greasemonkey将外部JS库加载到页面中
我想在我的Firefox中有一个翻译。我从网上找到一些代码。但它在我的Firefox中不运行。我安装了GreasemonkeyFirefox 使用Greasemonkey将外部JS库加载到页面中,firefox,greasemonkey,javascript,Firefox,Greasemonkey,Javascript,我想在我的Firefox中有一个翻译。我从网上找到一些代码。但它在我的Firefox中不运行。我安装了Greasemonkey function loadBingTranslator() { script = document.createElement('script'); script.src = 'http://dict.bing.com.cn/cloudwidget/Scripts/Generated/BingTranslate_Selection_ShowIcon.js
function loadBingTranslator() {
script = document.createElement('script');
script.src = 'http://dict.bing.com.cn/cloudwidget/Scripts/Generated/BingTranslate_Selection_ShowIcon.js';
script.onload = initBingTranslator;
document.body.appendChild(script);
};
function initBingTranslator() {
BingCW.Init({
MachineTranslation: true,
WebDefinition: true
});
}
loadBingTranslator();
我的JavaScript控制台正在输出“组件不可用” 第10行:script.onload=initBingTranslator 所以我把它改成了…=initBingTranslator(),因为它是一个函数 现在它说“BingCW没有定义” 第15行:BingCW.Init({ 机器翻译:对, WebDefinition:true });
这是对的,我不确定是否有什么东西丢失了,或者这只适用于IE,我会亲自找一个Google translator解决方案(或者只使用现有的附加组件)。这样的脚本必须考虑GM沙盒,并且(通常)允许库加载和初始化时间。看 因此,您可以这样使用此库:
//--- Load the library.
var D = document;
var appTarg = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
var jsNode = D.createElement ('script');
jsNode.src = 'http://dict.bing.com.cn/cloudwidget/Scripts/Generated/BingTranslate_Selection_ShowIcon.js';
jsNode.addEventListener ("load", initBingTranslatorOnDelay, false);
appTarg.appendChild (jsNode);
//--- Allow some time for the library to initialize after loading.
function initBingTranslatorOnDelay () {
setTimeout (initBingTranslator, 666);
}
//--- Call the library's start-up function, if any. Note needed use of unsafeWindow.
function initBingTranslator () {
unsafeWindow.BingCW.Init ( {
AppID: "GM Foo",
MachineTranslation: true,
WebDefinition: true
} );
}
与此问题相关的一些问题:
onload
不可用;看到陷阱了吗。事件处理程序不能在GM中以这种方式设置。另外,addEventListener()
是最佳实践unsafeWindow
AppID
/@require
指令加载到GM范围而不是页面范围。我没有在这个图书馆尝试过,但在其他图书馆,这是可能的。不要对不受信任的库执行此操作,因为一旦进入GM范围,它们将获得感染您的计算机的额外能力
必应词典已经出版了一本。
你可以直接使用它。
dict.bing.com.cn
--你确定你没有安装特洛伊木马吗?“我想在我的Firefox中安装一个翻译器”你的意思是像这些插件一样:| |?(只是一个示例,还有更多)这可能是Greasemonkey沙盒处理javascript的方式。虽然我以前在插入脚本标记时没有遇到任何问题…但是您是否可以从JavaScript控制台或Firebug中获得任何错误?它没有显示来自控制台的脚本的任何内容。是否可以将其写入不插入标记的函数中?