调用在(xul)浏览器元素中定义/链接的javascript函数
作者:互联网
我正在开发一个包含浏览器元素的XUL应用程序.此浏览器元素的类型为“内容”,因此无法从浏览器中使用JavaScript访问XUL元素.不仅可以,还可以这样.
现在的问题是我无法从XUL元素访问浏览器元素中定义的功能.
有什么方法可以调用在浏览器元素中定义或链接的函数?
解决方法:
如您已经提到的,不能直接访问内容是一项安全功能.如果您只想调用一个函数但对返回值不感兴趣,那么最简单和安全的方法是将javascript:URL加载到该浏览器中:
myBrowser.contentWindow.location.href = "javascript:void someFunction()";
如果您需要取回数据,那么安全地进行此操作就很复杂(任何涉及wrappedJSObject的方法本质上都是不安全的).最好使用message manager.您可以将内容脚本加载到浏览器中(未经测试,仅举例说明):
myBrowser.messageManager.loadFrameScript("chrome://.../contentScript.js", false);
myBrowser.messageManager.addMessageListener("result", function(name, sync, data)
{
alert("Got response from content script: " + data);
});
而contentScript.js看起来像这样:
var result = someFunction();
sendAsyncMessage("result", result);
请注意,contentScript.js具有内容特权,这意味着利用它不会给网页任何东西.并且它发送的数据将被转换为JSON并返回另一端,任何“恶意”都无法传递.
标签:xul,xulrunner,browser,javascript 来源: https://codeday.me/bug/20191202/2084932.html