2013-03-29 45 views

回答

2

我已经只是把在全球页面的代码,并使用隐藏的设置项,以确保它只能运行在第一时间做过这样的事情:

if (!safari.extension.settings.hasRun) { 
    safari.extension.settings.hasRun = true; 
    alert('Congratulations!'); 
} 

有一点要注意的意思是,任何注入的脚本只能在新加载的页面上或刷新后注入。所以使用上面的代码向注入的脚本发送一条消息来修改当前打开的页面的内容会有点麻烦。你将不得不强制刷新,或者只开一个欢迎消息的标签:

if (!safari.extension.settings.hasRun) { 
    safari.extension.settings.hasRun = true; 
    safari.application.openBrowserWindow(); 
    safari.application.activeBrowserWindow.activeTab.url = "http://www.example.com/welcome"; 
} 
+0

感谢,简单巧妙:)我不知道是否在某些方面有可能消息从全球网页的页面所以要避免刷新。我试图通过safari.application.activeBrowserWindow.activeTab.page.dispatchMessage向页面发布消息,它看起来好像是发送的,但我无法从我的页面的js中听到它(试过window.addEventListener和document .addEventListener但它看起来不起作用)。 – Pietro

+0

据我所知,出于安全原因,页面上的js与扩展保持完全分离。我想不出任何方法来将额外的js注入到已安装扩展之前加载的页面中。您可以考虑暂时添加一个工具栏按钮并以编程方式激活一个弹出页面,该页面可以包含您的消息,但与强制刷新或打开新选项卡并无太大区别。 –