修改将要打开的窗口

时间:2018-07-23 14:01:20

标签: javascript

当我单击一个按钮并修改将要打开的页面的html和css时,我想打开一个窗口。我怎样才能做到这一点?

我正在做一个symfony项目,我只想在要打开的窗口的一段上写东西。因此,我尝试了:

$( "#tom" ).click(function() { 
  var wind = window.open("{{ path('AjoutFournisseur') }}", "Ajouter un fournisseur", "width=520,height=1080");
  wind.document.getElementById("can").innerHTML='TEST'; 
});

我有这个错误:

  

未捕获的TypeError:无法在以下位置设置null的属性“ innerHTML”   HTMLSpanElement。 (附加投票号:113)在   HTMLSpanElement.y.handle上的HTMLSpanElement.dispatch(jquery.min.js:2)   (jquery.min.js:2)

1 个答案:

答案 0 :(得分:1)

如果弹出窗口与父窗口不在同一个域中,那么在没有其他站点配合的情况下将不可能(CORS规则和同源策略将适用)。

如果两个页面都在同一个域中,则需要进行的更改是等待弹出窗口完成加载,然后再尝试对其进行修改;现在,您正在打开窗口,然后立即尝试更改其内容,直到网络请求有机会返回它们为止。

我无法在正常运行的堆栈溢出代码段中对此进行演示,因为它不允许弹出窗口,但这是这样的:

$('#tom').on("click", function() {
  let thePopup = window.open("url_of_popup_window.html");
  thePopup.onload = function(e) {
    thePopup.document.getElementById("can").innerHTML = 'TEST';
    // Or, since you're already using jQuery, use this equivalent to the above line:
    // $('#can', e.target).html('TEST'); // e.target is the popup document here
    // (this would be usable even if jQuery is not in the popup window, because this script runs in the parent)
  }
});