3

我需要擴展音頻目的是提供一個停止功能。通常這個代碼將工作:音頻擴展/ HTMLMediaElement JavaScript對象

Audio.prototype.stop = function() { 
    this.pause(); 
    this.currentTime = 0; 
} 

不過,我需要這從一個Chrome擴展的內容腳本內發生,並且隨着環境是分開的變化不會傳播到其他方面。

我嘗試過使用this unsafeWindow hack試圖突破隔離環境,但沒有成功,並嘗試使用Object.create並設置constructor屬性。

+1

頁的全球'window'對象是從來沒有的內容腳本訪問。問題是重複[構建一個Chrome擴展 - 使用腳本內容在頁面注入代碼(http://stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a -page-使用-A-內容腳本)。注意,我會使用'if(!Audio.prototype.stop)...;',以避免執行'stop'時發生衝突。 – 2012-07-17 10:38:55

回答

0

內容腳本具有隔離執行環境,但這股與頁面的DOM。

var s = document.createElement("script"); 
s.innerText = "Audio.prototype.stop = function() { this.pause(); this.currentTime = 0; }"; 
document.documentElement.appendChild(s); 

我相信這個代碼將運行在這兩種執行環境腳本(或者,至少是:你可以通過添加一個<script>標籤到DOM運行在頁面的實際執行環境的腳本它應該在頁面的環境中運行)。

注意,期間或資源加載時間後,這種解決方案只能運行腳本,不盡快DOM是完整的,因爲它需要瀏覽器過程中被添加到頁面的新腳本資源。這對你當前的需求不應該是一個問題。