【问题标题】:Safari extension, open new tab with HTML page, pass parametersSafari 扩展,使用 HTML 页面打开新标签,传递参数
【发布时间】:2019-03-24 22:40:16
【问题描述】:

在我的扩展程序中,我想在单击工具栏按钮时打开一个新选项卡(工作),在选项卡上显示一个带有 JavaScript 的静态 HTML 页面(工作)并将数据(来自原始页面的 URL)传递到新选项卡(不起作用)。我试过了:

  • 使用像myTab.url = safari.extension.baseURI + 'page.html?' + params这样的查询参数,但目标页面似乎没有分配位置(location.search没有结果)。

  • myTab.page.dispatchMessage("url", "someUrl"); 打开标签后,但消息永远不会到达新标签(我怀疑,当标签打开时,它已经“通过”了)。

有什么建议吗?

【问题讨论】:

    标签: javascript safari safari-extension


    【解决方案1】:

    我在打开的页面中解析了 document.URL 以获取特定参数,它对我有用。例如

    function __onLoad()
    {
        var p = $.url(document.URL);
        alert(p.param("url"));
    }
    

    错过消息的两个可能原因:

    • 您没有在页面上添加 message 事件监听器
    • 您在添加事件侦听器之前调用了 dispatchMessage

    https://developer.apple.com/library/archive/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html查看 Safari 开发文档

    【讨论】:

    • 请原谅我的无知,但这是什么$.url(document.URL);?这是特定于 Safari 的还是某个库?我收到了ReferenceError: Can't find variable: $
    • 抱歉,不清楚。我使用了来自 github.com/allmarkedup/jQuery-URL-Parser 的 jQuery url 解析器插件。但我只是想表明您可以使用正则表达式或任何其他类型的工具从文档 url 获取参数
    • 抱歉这么晚才回来;我刚刚通过使用document.URL 验证了它的工作原理。谢谢!
    猜你喜欢
    • 2012-03-23
    • 2017-11-14
    • 2011-06-26
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多