首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用以下javascript代码触发模式框?

如何使用以下javascript代码触发模式框?
EN

Stack Overflow用户
提问于 2018-04-18 03:52:46
回答 1查看 59关注 0票数 0

嘿,伙计们,我只需要一点帮助。所以我把模式框隐藏在我的页面上,当我使用视频平台VERSE点击它们时,它们工作得很好。

我的问题是:如果我想从页面上的常规链接或按钮调用相同的模式框,我如何调用它们。

下面是示例:http://digitalfeast.com/clients/nccv/ncc-verse.html

以下是我的Javascript代码:

代码语言:javascript
复制
(function() {
(function() {
  window.onload = function() {

    var frame = document.getElementsByName("verse-iframe")[0].contentWindow;

    // Variables below (i.e. "menu-1") reference div id from your markup
    function receiveMessage(event) {

      var data = (typeof event.data === "String") ? JSON.parse(event.data) : event
      var modalWindow1 = document.getElementById("ruben-1");
      var modalWindow2 = document.getElementById("ruben-2");
      var modalWindow3 = document.getElementById("menu-3");
      var modalWindow4 = document.getElementById("menu-4");

      // Variables below (i.e. "menu-1") reference the unique callback names entered for your hotspots in the Verse editor
      if (data.data["identifier"] === "ruben-1") {
        modalWindow1.style.display = "block";
      }
      if (data.data["identifier"] === "ruben-2") {
        modalWindow2.style.display = "block";
      }
      if (data.data["identifier"] === "menu-3") {
        modalWindow3.style.display = "block";
      }
      if (data.data["identifier"] === "menu-4") {
        modalWindow4.style.display = "block";
      }
    }

    var closeBtns = document.getElementsByClassName("modal-close");

    for (var i = 0; i < closeBtns.length; i++) {
      var btn = closeBtns[i];
      btn.onclick = function (event) {
        event.target.parentNode.parentNode.style.display = "none";
        frame.postMessage({action: "play"}, "*");
        };
    }

    window.addEventListener('message', receiveMessage);
    var frame = document.getElementsByName("verse-iframe")[0].contentWindow;

  };
}());
}());
EN

回答 1

Stack Overflow用户

发布于 2018-04-18 04:07:08

给定您的代码,您所需要做的就是使用按钮单击处理程序中的消息传递API向窗口发送一条消息。然后,您的事件侦听器将执行receiveMessage函数,并为ruben-1打开模型。

代码语言:javascript
复制
window.onload = () => {
  document.querySelector('[data-modal="ruben-1"]').addEventListener("click", (e) => {
    let postData = {
      identifier: e.target.dataset.modal
    };
    window.postMessage(postData, "*");
  });

  window.addEventListener('message', m => {
    alert(m.data.identifier);
  });
}
代码语言:javascript
复制
<button data-modal="ruben-1">Ruben-1 Video</button>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49886407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档