【发布时间】:2015-02-02 00:37:57
【问题描述】:
我正在开发这个 chrome 扩展,我在 Django 上有后端。我正在做一个 XMLHttpRequest POST 来登录用户。当我在“DOMContentLoaded”上调用该函数时,它可以工作。但是,当我单击按钮时,它不起作用。
这里是javascript代码:
function login(){
//alert("hello");
var http = new XMLHttpRequest();
var url = "someURL";
//var email = document.getElementById("email").value;
//var password = document.getElementById("password").value;
var params = "email=someEmail&password=Password";
//alert(params);
//var params = "email=" + email + "&password=" + password;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
//alert(http.responseText);
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
}
现在,当我这样做时:
document.addEventListener('DOMContentLoaded', function(){
login();
});
它有效。单击扩展程序时,我会收到一条成功消息。
但是,当我这样做时:
document.addEventListener('DOMContentLoaded', function(){
document.getElementById("btn").addEventListener("click", login);
});
它不起作用。
这里是popup.html:
<html>
<head>
<script src="popup.js"></script>
</head>
<body>
<div id="content">
<p id="demo"></p>
<form>
<input type="email" id="email">
<input type="password" id="password">
<button id="btn">Login</button>
</form>
</div>
</body>
</html>
这是manifest.json
{
"manifest_version": 2,
"name": "payback",
"description": "payback.",
"version": "1.0",
"content_scripts": [
{
"matches": ["http://*/", "https://*/"],
"js": ["popup.js"]
}
],
"browser_action": {
"default_popup":"popup.html"
},
"permissions": [
"http://*/", "https://*/"
]
}
【问题讨论】:
-
你能更好地描述发生了什么而不是“它不起作用”吗?考虑您可以通过右键单击浏览器操作按钮并选择“检查弹出窗口”来调试代码
-
@Xan “它不起作用”我的意思是我没有收到警报。在 if(http.readyState == 4 && http.status == 200) 语句之前放置一个警报(http.responseText),我得到一个空警报。我尝试了“检查弹出窗口”,但控制台中没有显示任何内容。
-
不建议在弹出窗口中使用
alert(),因为它会使它失去焦点并可能消失。使用console.log()+inspect 进行调试。 -
@Xan 我尝试使用 console.log()。日志中仍然没有显示任何内容。
-
很奇怪。我猜
login由于某种原因甚至没有被调用。仔细检查您的元素 ID 是否有拼写错误。
标签: javascript google-chrome-extension xmlhttprequest