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 为空,因为 Firebug 说我不能调用 addEventListener 到空对象...

第二个 - 因为这是一个 .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 回答