0

このコードは正常に機能します。

<a href="#" onClick="MyWindow=window.open('{{ path('metadata', {'id': q.id}) }}',
'MyWindow', 'toolbar=yes, location=no, directories=yes, status=yes, 
 menubar=yes, scrollbars=yes, resizable=no, width=600, height=800'); 
 return false;">Quotes Metadata</a>

しかし、私は自分のhtmlにjsを入れたくありません。

分離しようとしましたが、いくつか問題がありました。

これは私がやったことです:

これをテンプレートに追加しました:

{% block javascripts %}

     <script src="{{ asset('bundles/acmequotes/js/popup.js') }}" type="text/javascript"></script>

{% endblock %}

上記のコードを次のように変更しました。

<a href="#" id="popup">Quotes Metadata</a>

私のpopup.js

var popupObj = document.getElementById("popup");

popupObj.addEventListener('click', function () {

    window.open( "link", "myWindow", 
    "status = 1, height = 300, width = 300, resizable = 0" )

},false);

最初の問題は、popupObjがnullであるということです。これは、Firebugが、nullオブジェクトに対してaddEventListenerを呼び出すことができないと言っているためです...

そして2番目-これは.jsファイルなので、どのように設定"link"するの
{{ path('metadata', {'id': q.id}) }}ですか?

私はjsについて何も知らないので、それを機能させるために私を助けてください!事前にどうもありがとうございました!

4

1 に答える 1

1

domreadyイベント(またはwindow.onload)でコードを実行するだけです。例:

window.addEventListener('load', function() {

   var popupObj = document.getElementById("popup");    
   popupObj.addEventListener('click', function () {

         var url = this.getAttribute('href'); // see snippet below
         window.open(url, "myWindow", 
                     "status = 1, height = 300, width = 300, resizable = 0" );

         return false;

   },false);
}); 

リンクをに変更します

<a href="{{ path('metadata', {'id': q.id}) }}" id="popup">...</a>

そうすることで、ユーザーデバイスのJavaScriptが利用できない場合でもリンクが機能します

于 2012-09-26T07:33:39.957 に答える