【问题标题】:How to load jQuery before DOM is ready如何在 DOM 准备好之前加载 jQuery
【发布时间】:2011-05-06 16:51:49
【问题描述】:

我想在 DOM 准备好之前加载一些 jQuery 代码。我想在 DOM 加载时使 Flash 文件透明。我打算使用这样的东西,但 Flash 在 DOM 加载之前就被初始化了。

jQuery(document).ready(function(){
    jQuery('object:not(:has(wmode))').each(function(){
        jQuery(this).attr('wmode', 'transparent');
        jQuery(this).prepend('<param name="wmode" value="transparent">');
        jQuery(this).children('embed').attr('wmode', 'transparent');
    });
});

关于如何做到这一点的任何想法?


编辑

大家好,感谢您的帮助,基本上,flash 内容来自我们的广告管理器,这很愚蠢,不允许直接编辑 HTML,以便将所需的 wmode 添加到特定标签中。 .

所以 Javascript 是我唯一的选择...

【问题讨论】:

  • 所以你想在 DOM 加载之前操作 DOM?
  • 是的,没错。有什么办法吗?
  • Hunter 的意思是你如何操作没有加载的东西?如果您想编辑 Flash,您必须在 HTML 本身中进行。稍后您可以使用 jquery 将其编辑为“正常”
  • 嗯,很难。不确定以后是否可以在不重新创建整个 Flash 电影的情况下设置 wmode。这值得一个单独的问题 IMO,你在这里问的本身就是一个悖论

标签: javascript jquery flash dom document


【解决方案1】:

ready() 是您可以安全访问任意 DOM 元素的最早点。

您可以在声明 object 标记后直接放置 script 块:应该可以,您将可以访问 object 元素。

但是,我认为这对您也没有帮助:据我所知,Flash 无论如何都不会接受 JavaScript 端对 wmode 参数的更改。

您必须将wmode.transparent 放入 HTML 中,或者在加载 DOM 时动态创建 Flash 影片。

【讨论】:

    【解决方案2】:

    在加载 dom 之前使用 javascript 会产生不可预知的结果。 根据需要修改您的 html 代码,但不要使用 javascript。

    【讨论】:

    • 只有当JS用于访问DOM时(当然是问题的上下文中的情况)
    【解决方案3】:

    最安全的方法是在 dom 就绪事件上构造对象或嵌入元素:

    <div id="flash"></div>
    
    $(document).ready(function(){
       var htm= '<object ...><param name="some" value="val" ... /></object>';
       $('#flash').html(htm);
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2019-04-05
      • 1970-01-01
      相关资源
      最近更新 更多