2011-09-04 94 views
1

我正在嘗試爲Google Chrome創建一個簡單的基於JavaScript的擴展,它從一個特定的iframe獲取數據並將其作爲POST請求的一部分發送到網頁。 將通過POST請求提交的數據發送到我的電子郵件地址的網頁。如何檢查我的javascript瀏覽器擴展是否工作

我試着運行擴展,它看起來運行良好,但我沒有收到任何電子郵件。 接收表單數據的servlet非常簡單,我不認爲它有任何錯誤。 我想要的是一些方法來檢查基於JavaScript的擴展是否工作。

的JavaScript代碼如下─

var mypostrequest=new ajaxRequest() 
mypostrequest.onreadystatechange=function(){ 
    if (mypostrequest.readyState==4){ 
     if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){ 
      document.getElementById("result").innerHTML=mypostrequest.responseText 
     } 
     else{ 
      alert("An error has occured making the request") 
     } 
    } 
} 
var namevalue=encodeURIComponent("Arvind") 
var descvalue=encodeURIComponent(window.frames['test_iframe'].document.body.innerHTML) 
var emailvalue=encodeURIComponent("[email protected]") 
var parameters="name="+namevalue+"&description="+descvalue &email="+emailvalue 
mypostrequest.open("POST", "http://taurusarticlesubmitter.appspot.com/sampleform", true) 
mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
mypostrequest.send(parameters) 

UPDATE

,這樣在js文件的內容是通過後臺頁面調用,但即使是現在擴展沒有工作,我所做的更改給出。

我把下面的代碼在background.html:

<script> 
    // Called when the user clicks on the browser action. 
    chrome.browserAction.onClicked.addListener(function(tab) { 
     chrome.tabs.executeScript(null, {file: "content.js"}); 
    }); 
    chrome.browserAction.setBadgeBackgroundColor({color:[0, 200, 0, 100]}); 
</script> 

回答

1

你的代碼看貌似你試圖發送從內容腳本跨域Ajax請求。這是不允許的,你只能從後臺頁面和清單中聲明相應的域後才能這樣做。更多信息here

要檢查您的擴展是否有效,您可以打開dev tools並檢查控制檯是否有任何錯誤。打開「網絡」標籤,看看是否有請求發送到您的網址。將console.log放在代碼中的各個位置進行調試,或者使用全功能的內置javascript調試器進行逐步調試。

+0

我做了更改,以便js文件中的內容由背景頁面調用,但即使現在擴展也不起作用 - 我將下面的代碼放在background.html-- user893664

+0

@ user893664從背景頁面調用內容腳本不會解決任何問題。您需要從**背景頁面本身發送ajax請求**。如果您需要先使用內容腳本收集一些數據,請使用消息傳遞功能:http://code.google.com/chrome/extensions/dev/messaging.html – serg

+0

我可以在包含我的網站的窗口中發送iframe的內容頁面,從內容腳本到後臺頁面? (然後後臺頁面將提交該數據到遠程URL)...你也可以指向我的代碼從內容腳本中檢索iframe的內容嗎?我嘗試了一些可用的代碼,但總是顯示的值是「未定義」... – user893664

相關問題