2011-09-04 125 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

相关问题