2013-03-29 51 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注入到已安裝擴展之前加載的頁面中。您可以考慮暫時添加一個工具欄按鈕並以編程方式激活一個彈出頁面,該頁面可以包含您的消息,但與強制刷新或打開新選項卡並無太大區別。 –