9

我对 chrome 扩展还是很陌生,只是在测试。现在我有一个 popup.html,它有一个简短的表单,我想在单击提交时创建一个警报。我一生都无法弄清楚为什么它不起作用。

<!doctype html>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="popup.js">

</script>
</head>
<body onload="alert('open')">
<form>
Username: <input type='text' id="username" name='username'></input>
Password: <input type='password' id='password' />
          <button onclick="alert('test');return false;">Login</button>
</form>
</body>
</html>

有什么建议么?

编辑:我什至在body标签中做了一个onload,看看是否会在那里打开警报,但它没有。在 popup.js 中,我在 window.onload 上打开了一个警报,但是它可以工作。

4

2 回答 2

11

返回 false 后函数停止。将 return false 放在语句的末尾,那么您的警报应该会起作用。或者你可以把它拿出来。

 <button onclick="alert('test')">Login</button>

更新 经过一番研究,我发现了以下...

内联 JavaScript 不会被执行

内联 JavaScript 以及危险的字符串到 JavaScript 方法(如 eval)不会 > 被执行。此限制禁止内联块和内联事件处理程序>(例如)。

来源在这里

于 2012-04-08T18:02:00.310 回答
4

这也可能是您的问题:内联脚本不适用于“manifest_version”:2

因此,我进行了测试,并使用以下清单,您的代码可以正常工作

{
  "name": "test",
  "version": "1.0",
  "description": "test",
  "manifest_version":1,
  "browser_action": {
    "default_icon": "images/padlock.png",
    "default_popup":"html/popup.html"
  },
  "permissions": [
    "tabs", 
    "http://*/*"
  ]
}

无论如何.. 最好在 popup.js 中处理操作,但首先,将 popup.html 中的按钮属性更改为以下内容:<button type="button">Login</button>

popup.js:

$(document).ready(function(){
    $(":button").click(function(){
        alert("test");
        //more code here...
    });
});

请记住将 jquery.js 插入到您的<head>标签中,在popup.html中,就在popup.js的上方:

<head>
<title>Test</title>
<script type="text/javascript" src="../js/jquery.js"></script> 
<script type="text/javascript" src="../js/popup.js"></script>
</head>

我希望,它很有用。问候吉姆..

于 2012-04-09T10:45:10.573 回答