2012-04-08 71 views
6

我对Chrome扩展还是很新的,只是测试了一些东西。 现在,我有一个popup.html,它带有一个简短的表单,我希望在单击提交时创建警报。我不能为了我的生活找出为什么它不起作用。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上打开了一个警报,但是它的工作原理。

回答

9

函数返回false后停止。 如果在声明结束时返回false,那么您的警报应该起作用。或者你可以把它拿出来。

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

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

联JavaScript将不被执行

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

Source here

+0

嗯我改变了,因为它是有道理的,但警报仍然没有出现。我甚至在身上添加了一个onLoad,以查看是否会发生警报,​​但它不会:/ – 2012-04-08 18:08:34

+0

确保您在更改时重新加载扩展名。您可以通过在chrome中转到chrome:// settings/extensions#并点击扩展的名称来扩展以获得更多选项。 – 2012-04-08 18:19:41

+0

啊我明白了!好吧,我把所有东西都移动到了一个单独的js文件中,并使用addeventlisteners,它完美地工作。谢谢!! – 2012-04-08 18:30:57

3

这可能是你的问题太多:inline scripts doesnt work with "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> 

我希望它有用。关心吉姆..

+0

欣赏你的努力,但我试着改变'manifest_version',似乎没有为我工作。 – 2017-11-09 14:39:03

相关问题