如何在子窗口的父窗口中运行脚本?

时间:2019-01-25 11:12:41

标签: javascript jquery

我的child.html有一个按钮,可以使用脚本$('[value="Submit"]').click();单击 我想从parent.html

调用它

类似这样的东西:

var popUp = window.open('https://child.html'); popUp.$('[value="Submit"]').click(); //此行应固定

这怎么办?

3 个答案:

答案 0 :(得分:3)

您应该使用window.postMessage API。这是示例代码。

child.html

function functionToBeExecuted(event)
{
  // do click or whatever you want
}

window.addEventListener("message", functionToBeExecuted, false);

parent.html

let child = window.open('child.html');

child.postMessage(); // notice that I did not pass message argument, since you just want to trigger the function, but if you want to pass some data to function using event parameter, just pass data to this function (for example string or object etc.)

答案 1 :(得分:2)

我遇到了类似的问题,即我的父html中包含iframe(包含子html)。 我解决了这个$(“。DivClass iframe”)。contents()。find(“ button”)。trigger('click');  就您而言,它的弹出窗口不是不使用的弹出窗口:自定义弹出窗口或浏览器弹出窗口。 您可以使用与我相同的代码在弹出窗口中添加iframe以解决此问题。 条件是弹出窗口应为自定义html弹出窗口,而不是浏览器提供的其他弹出窗口

答案 2 :(得分:1)

使用parent.html中的以下代码单击按钮:

let child = window.open('child.html');
let doClick = () => child.document.getElementById('my-button').click();

child.addEventListener('load', doClick(), true);

这就是您想要的...但是我的建议是在子对象上创建函数并使用window.postMessage API触发它...