0

非常にシンプルなChromeアプリを持っています。検索ボックス付きのポップアップが表示されます。検索ボックスを送信すると、新しいタブで私のサイトが開きます。

デフォルトでは、検索ボックスは空です。空の場合、[送信]をクリックしても何も起こりません。私のpopup.htmlは次のようになります:

<html>
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
   <title>foo</title>   
   <link rel="stylesheet" type="text/css" href="popup.css" />
  </head> 
<body>
    <div id="srch">
    <form target="_blank" action="foo.php" method="get" onsubmit="if (document.getElementById('box').value.length < 1) return false;">
        <input type="text" id="box" name="foo" value="" />
        <input type="submit" value="foo" />
    </form>
    </div>
</body>
</html>

ブラウザでpopup.htmlを開いた場合、[送信]をクリックしても何も起こりません。ただし、Chromeアプリとして開いた場合でも、[送信]をクリックすると、何も入力されずにフォームが送信されます。そのため、JavaScriptは無視されているようです。

4

2 に答える 2

1

スクリプトの問題

Chrome拡張機能では<script>、HTMLコードでインラインJSまたはタグを使用できないため、onsubmit="if これらを削除した後、スクリプトを実行して、コードがCSPを超えることはありません。

コードのサンプルデモンストレーション

マニフェスト.json

マニフェストファイルへの登録済みブラウザアクション。

{
    "name": "chrome-app-onsubmit",
    "description": "http://stackoverflow.com/questions/14263946/chrome-app-onsubmit",
    "version": "1",
    "manifest_version": 2,
    "browser_action": {
        "default_popup": "popup.html"
    }
}

popup.html

削除されたインラインスクリプト

<html>
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
   <title>foo</title>  
   <script src="popup.js"></script>
  </head> 
<body>
    <div id="srch">
       <input type="text" id="box" name="foo" value="" />
        <input type ="submit" id="submit" value="foo" />
    </div>
</body>
</html>

popup.js

あなたの機能はここにあります。

function _clickHandler() {
    if (document.getElementById('box').value.length < 1) {
        return false;
    } else {
        console.log("In Success Handler..");
        //Do Your AJAX Request Call here
    }
}
document.addEventListener("DOMContentLoaded", function () {
    document.getElementById("submit").onclick = _clickHandler;
});

スクリプトをテストするための拡張機能をロードする方法を確認してください。

参照

于 2013-01-10T19:39:11.733 に答える
0

これを試してみてください...さまざまなブラウザーは、JavaScriptのフォーマットについてうるさい場合があります...ちょっと考えただけです

onsubmit="if (document.getElementById('box').value.length < 1) {return false;};">
于 2013-01-10T17:51:45.460 に答える