当我单击一个按钮并修改将要打开的页面的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)
答案 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)
}
});