JavaScript 执行父页面的 JS

流程图

pie
    title JavaScript 执行父页面的 JS
    "小白" : 开发者
    "父页面" : 父页面

步骤说明

步骤 描述
步骤1 小白在子页面中添加一个按钮,并编写 JavaScript 代码
步骤2 小白在子页面中通过 window.opener 获取父页面的引用
步骤3 小白使用 postMessage 方法向父页面发送消息
步骤4 父页面接收到消息后执行相应的 JavaScript 代码

代码示例

子页面代码

// 步骤1:在子页面中添加一个按钮,并编写 JavaScript 代码
const button = document.createElement("button");
button.innerText = "执行父页面的JS";
button.addEventListener("click", () => {
    // 步骤2:通过 `window.opener` 获取父页面的引用
    const parentWindow = window.opener;

    // 步骤3:使用 `postMessage` 方法向父页面发送消息
    parentWindow.postMessage("执行父页面的JS", "*");
});
document.body.appendChild(button);

父页面代码

// 步骤4:父页面接收到消息后执行相应的 JavaScript 代码
window.addEventListener("message", (event) => {
    if (event.origin !== window.location.origin) return; // 防止跨域攻击

    if (event.data === "执行父页面的JS") {
        // 在这里写入需要执行的父页面的 JavaScript 代码
        alert("父页面的JS已执行");
    }
});

代码说明

在子页面中,我们首先创建了一个按钮,并通过 addEventListener 方法给按钮绑定了一个点击事件。在点击事件中,我们通过 window.opener 获取到了父页面的引用,并使用 postMessage 方法向父页面发送了一条消息。

在父页面中,我们使用 window.addEventListener 方法来监听消息事件。当接收到消息后,我们首先通过 event.origin 来验证消息的来源是否为当前页面的同源域名,以防止跨域攻击。然后,我们判断接收到的消息内容是否为我们预期的内容,如果是,则执行相应的 JavaScript 代码,例如弹窗提示。

这样,当子页面中的按钮被点击时,父页面就会执行相应的 JavaScript 代码。

希望本文对你有所帮助,有任何问题欢迎随时提问。