2

最近、chrome ext の学習を始めました。そして、私はこの問題に直面しています。基本的に、文字列を対応する数値に変換しようとしています。たとえば、a=1、b=2、c=3... などです。したがって、HTMLフォームを使用して入力文字列を取得しようとしている場合、送信ボタンでonclickを使用すると、JavaScriptファイルで文字列を数値に変換し、同じ入力テキストボックスに値を出力する必要があります。

これは私の現在のコードです。プロンプトを使用して入力を取得すると、正常に動作します。私の質問は、マニフェスト バージョン 2 がインライン js を制限しているため、onclick をどのように呼び出すかです。

マニフェスト

{
  "name": "String converter",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Convert string to number",
  "browser_action": {
    "default_icon": "icon.ico",
    "default_popup": "popup.html"
  }

}

Popup.html:

<!doctype html>
<html>
<head>
 <title>Convert string</title>
    <style>
     body {
        min-width:160px;
        overflow-x:hidden;
      } 
    </style>
    <script src="popup.js"></script>
</head>
<body>
    <input type="text" id="result" />
    <!--I need the button here-->
</body>
</html>

popup.js (チュートリアルからこれをコピーして貼り付けて変更するだけです)

var req = new XMLHttpRequest();
req.open(
    "GET",
    "http://api.flickr.com/services/rest/?" +
        "method=flickr.photos.search&" +
        "api_key=90485e931f687a9b9c2a66bf58a3861a&" +
        "text=hello%20world&" +
        "safe_search=1&" +  // 1 is "safe"
        "content_type=1&" +  // 1 is "photos only"
        "sort=relevance&" +  // another good one is "interestingness-desc"
        "per_page=20",
    true);
req.onload = test;
req.send(null);


function test(){
    var s=prompt("enter string");
    var result ="";
    for(var i =0; i<3; i++){
        if(s.charAt(i) == "a"){
            result += "1"
        }
        else if(s.charAt(i) == "b"){
            result += "2"
        }
        else if(s.charAt(i) == "c"){
            result += "3"
        }

    document.getElementById("result").value = result;

}

ありがとうございました!

4

1 に答える 1

1

ボタンが必要な場所にこのボタンコードを配置します。

<button id='sbmt'>Submit</button>

これらの行をpopup.js追加して、上記のボタンのクリックイベントをリッスンします。

function myAlert(){
 alert('Button Clicked');
}
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('sbmt').addEventListener('click', myAlert);
});
于 2013-08-27T11:46:57.613 に答える