【问题标题】:How to force a HTML dropdown menu to open on loading WordPress page如何在加载 WordPress 页面时强制打开 HTML 下拉菜单
【发布时间】:2020-03-01 19:10:03
【问题描述】:

我在我的 WordPress 页面中嵌入了一个 iFrame(使用自定义 HTML 块)用于按摩预订。 https://aanmassage.nl/boek-jouw-massage/

iFrame 使用类MenuGroup--header--443090 加载,其中包含各种消息),但此 MenuGroup 已关闭。选择组标题或 V 形时,它会打开,并且按摩会显示在下拉列表中。

对于想要预约按摩的用户,我觉得这很让人分心。有没有办法强制默认打开组?使用 html、js 或 css 代码。

Screenshot with closed menu

Screenshot with opened menu

【问题讨论】:

    标签: javascript html css wordpress


    【解决方案1】:

    也许有一个选项可以作为 iframe 的属性进行编辑?问题是,您需要访问 Javascript 文件才能编辑该行为。但既然你使用的是 iframe,我猜你没有访问权限?

    编辑:

    好吧,你可以把它粘贴到一个 JS 文件中,应该可以:

    function eventFire(el, etype){
      if (el.fireEvent) {
        el.fireEvent('on' + etype);
      } else {
        var evObj = document.createEvent('Events');
        evObj.initEvent(etype, true, false);
        el.dispatchEvent(evObj);
      }
    }
    
    window.onload = function {
    eventFire(document.querySelector('.MenuGroup--header--443090'), 'click');
    }
    

    这样做是在您的网站上复制点击事件,因此菜单会在页面加载时打开。

    EDIT2:

    确实,我忘了考虑 iframe 加载时间与窗口加载时间是分开的,因此使用它可能会更好

    
    function eventFire(el, etype){
      if (el.fireEvent) {
        el.fireEvent('on' + etype);
      } else {
        var evObj = document.createEvent('Events');
        evObj.initEvent(etype, true, false);
        el.dispatchEvent(evObj);
      }
    }
    
    document.querySelector("iframe").addEventListener( "load", function(e) {
        eventFire(document.querySelector('.MenuGroup--header--443090'), 'click');
    
    } );
    

    【讨论】:

    • 不,我无权访问源代码。不过,我可以通过插件使用额外的 javascript 代码。
    • 这不起作用。该事件似乎在加载 iframe 之前被触发。可能我也应该从脚本加载 iframe?
    • 你是对的,脚本应该在 iframe 上运行。检查编辑
    • 谢谢。可悲的是,它仍然没有按预期工作。未捕获的类型错误:无法在 HTMLIFrameElement 的 eventFire ((index):50) 处读取 null 的属性“fireEvent”。 ((index):60)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2012-05-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多