【问题标题】:Validating form in Chrome extension popup not working在 Chrome 扩展弹出窗口中验证表单不起作用
【发布时间】:2012-10-09 16:41:37
【问题描述】:

我正在制作的 Chrome 扩展程序有一个 popup.html,其形式如下:

<head>
  <script src="myscript.js"></script>
</head>
<form id="myform" action="http://www.example.com/myurl.jsp" method="get" target="_blank">
  #<input type="text" size="10" name="numid" value="" />
  <input type="Submit" value="Go" />
</form>

myscript.js 列在 manifest.json 的“background”和“content_scripts”部分:

"background": { "scripts": ["myscript.js"] }`
"js": ["jquery-1.8.2.min.js", "myscript.js"]

而 myscript.js 包含:

$(document).ready(function(){
  $('#myform').submit(function() {
  alert("alert!");
});

当我单击 Go 按钮或按表单的 enter 键时,如何让它显示 alert()?

【问题讨论】:

    标签: jquery google-chrome-extension


    【解决方案1】:

    如果您只打算在弹出窗口中使用它,则无需在background 和content_script 中指定popup.js。

    警报未显示,因为您无法显示弹出窗口中的警报。而是尝试:

    • document.getElementsByTagName('body')[0].innerHTML = "Works!"(这将用一条消息替换整个弹出窗口)
    • 或使用console.log("Works!")(这会将文本输出到开发者工具控制台 - 请务必查看弹出式开发者工具而不是当前页面开发者工具)

    编辑:您的myscript.js 似乎无效,您缺少});。另外,请注意,由于页面立即重新加载,您可能会错过提交回调中的代码执行结果。

    $(document).ready(function(){
      $('#myform').submit(function() {
         alert("alert!");
      });
    });
    

    【讨论】:

    • 如果忘记将}); 添加到sn-p,它实际上在文件中。我尝试了您的两个建议,但它会立即打开一个新选项卡并且不显示消息。我打开了开发工具控制台,但新选项卡没有显示控制台。
    • 正如我所提到的,您可能会错过提交回调中的代码执行结果,因为您会立即被重定向到另一个页面。尝试在回调末尾添加return false;:$('#myform').submit(function(){... return false;})。这将阻止提交发生,但您实际上会看到结果。
    • 嗯..你确定你的弹出窗口中包含 jquery 吗?您应该在script.js 之前将它放在&lt;head&gt; 中。您在弹出控制台上没有收到任何错误吗?
    • 是的,您的两个 cmets 都解决了这个问题,谢谢!我认为由于 js 在 manifest.json 的 background 和 content_scripts 部分中列出,因此 html &lt;head&gt; 部分中不需要它。
    猜你喜欢
    • 1970-01-01
    • 2016-07-18
    • 2011-03-13
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2015-07-07
    • 2022-01-05
    相关资源
    最近更新 更多