Javascript Safari扩展:将窗口对象从注入脚本传递到全局页面

Javascript Safari扩展:将窗口对象从注入脚本传递到全局页面,javascript,safari,safari-extension,Javascript,Safari,Safari Extension,是否有方法将窗口对象从inject脚本传递到global.html页面 我试图将窗口作为对象的一部分传递到全局页面,从“加载”侦听器函数,它在尝试分派消息时抛出类型错误 这是代码 window.addEventListener("load", onDocLoad); function onDocLoad() { var msg = new Object(); msg.url = window.location.href; // this all works ....

是否有方法将窗口对象从inject脚本传递到global.html页面

我试图将窗口作为对象的一部分传递到全局页面,从“加载”侦听器函数,它在尝试分派消息时抛出类型错误

这是代码

window.addEventListener("load", onDocLoad);

function onDocLoad()
{
    var msg = new Object();

    msg.url = window.location.href; // this all works 
    .....
    msg.win = window; // With this it throws type error on line safari.self.tab.dispatchMessage("XXX",msg);
    safari.self.tab.dispatchMessage("XXX",msg);  
}
消息分派工作和其他数据可以无错误地传递,窗口对象除外。
如何做到这一点?

您不能传递像HTMLWindow这样的对象,因为文档中说:

消息数据不限于单一数据类型;它可以是布尔值、数字、字符串、数组、RegExp对象,也可以是符合W3C标准的任何对象,用于安全传递结构化克隆数据。在命令不需要数据的情况下,它也可以为null、未定义或留空


您不能传递像HTMLWindow这样的对象,因为文档中说:

消息数据不限于单一数据类型;它可以是布尔值、数字、字符串、数组、RegExp对象,也可以是符合W3C标准的任何对象,用于安全传递结构化克隆数据。在命令不需要数据的情况下,它也可以为null、未定义或留空