0

私は、ポップアップでフォームがユーザーに表示され、入力後にローカルで評価され、ユーザーへの応答がその評価で定義される、Safari Firefox および Chrome 用の単純な拡張機能を開発しようとしています。元のフォームはhttps://dl.dropbox.com/u/86545493/Waze/Calculadora.htmlにあります。

ここからダウンロードできる作業用のサファリ拡張機能を既に作成することもできました: https://dl.dropbox.com/u/86545493/Waze/Extensions/WRTC.safariextz しかし、Chrome 拡張機能を作成しようとすると問題が発生します。 .

最初の拡張機能を作成するためのチュートリアルに従い、ボタンを作成してフォームをポップアップとして読み込むことができました。ただし、セキュリティ上の制限により、フォームを実行できません。開発者ガイドを読んで理解したことから、JavaScriptを独自のファイルに分離し、ポップアップファイルから呼び出す必要があります。しかし、ドキュメントの言語は私 (医学生) には専門的すぎて、使用すべきメッセージをフォーマットする適切な方法を理解できませんでした。私のコードの現在のステータスは次のとおりです。

popup.html

<head>
<script type="text/javascript" src="popup.js"></script>
</head>
<body>
<h1>Calculadora de Tipo de Camino</h1>
<form id="Calle" target="_self">
    Cruceros <select id="cruceros">
     <option value=1>Glorietas</option>
     <option value=1>Rotondas</option>
     <option value=1>Sem&aacuteforos</option>
     <option value=0 selected>Sin Control</option>
     <option value=2>Sin Cruceros</option>
    </select></br>
    Carriles <select id="carriles">
        <option value=1 selected>1</option>
        <option value=2>2</option>
        <option value=3>3 o m&aacutes</option>
    </select></br>
    Sentidos Separados f&iacutesicamente o parte de par vial <input type="checkbox" id="sentidos"></br>
    Con Laterales o Acotamiento <input type="checkbox" id="laterales"></br>
    Entradas y Salidas delimitadas <input type="checkbox" id="ramps"></br>
    Avenida, Boulevard, o Circuito <input type="checkbox" id="name"></br>
    Es Carretera
    <select id="carretera">
        <option value=0 selected>No</option>
        <option value=1>Municipal</option>
        <option value=2>Estatal</option>
        <option value=3>Federal</option>
    </select> Revisar en: <a href="http://petra.sdg.mx/sigcsi/" target="_blank">SCT</a></br>
    Tiene topes <input type="checkbox" id="topes"></br>
    </br>
</form>
<button type="button" onclick="textR()">Calcular Puntos</button>
<hr><p id="resultn"></p>
<p id="resultt"></p>
</body>

popup.js

function textR()
{var cru=document.getElementById("cruceros").value;
if (cru==0){crun=0}
else if (cru==1){crun=1}
else{crun=2}
var carr=document.getElementById("carriles").value;
if (carr==1){carrn=0}
else if (carr==2){carrn=1}
else{carrn=2}
sen=(document.getElementById("sentidos").checked==true)?1:0;
lat=(document.getElementById("laterales").checked==true)?1:0;
ram=(document.getElementById("ramps").checked==true)?1:0;
av=(document.getElementById("name").checked==true)?1:0;
var hw=document.getElementById("carretera").value;
if (hw==1){hwn=1}
else if (hw==2){hwn=2}
else if (hw==3){hwn=3}
else{hwn=0}
saluden=(document.getElementById("topes").checked==true)?1:0;
var r=crun+carrn+sen+lat+ram+av+hwn+saluden;
document.getElementById("resultn").innerHTML=(r+" puntos");
if (r<2){rt='Street'}
else if (r<4){rt='<span class="pstreet">Primary Street'}
else if (r<7){rt='<span class="mihw"> Minor Highway '}
else if (r<9){rt='<span class="mahw"> Major Highway '}
else {rt='<span class="fw"> Freeway '}
document.getElementById("resultt").innerHTML=(rt);
}

使用する適切な構文を教えてください。

4

2 に答える 2

0

結局、popup.js の最後に置くことdocument.getElementById("calcButton").addEventListener("click", textR);になり、popup.html の最後に移動<script type="text/javascript" src="popup.js"></script>する必要がありました。

この記事が役に立ちました: Javascript: Uncaught TypeError: Cannot call method 'addEventListener' of null

于 2013-02-20T15:11:37.390 に答える
0

インライン コードを削除し、ここに示すようonclick="textR()"に追加します。popup.js

document.getElementsByTagName("button")[0].addEventListener("click",textR);
于 2013-01-25T05:37:19.373 に答える