Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阻止加载DOM对象_Javascript_Jquery_Html - Fatal编程技术网

Javascript 阻止加载DOM对象

Javascript 阻止加载DOM对象,javascript,jquery,html,Javascript,Jquery,Html,我知道可以将display属性设置为“none”并使用jquery进行切换,但最终该对象仍然被加载,只是没有显示。是否有一种方法可以防止加载元素以节省加载时间?我使用下面的代码切换css属性,但我希望它根本不加载元素 js 我的元素 <div class="startb"><a href="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/start.png" width="40" height="40" /&g

我知道可以将display属性设置为“none”并使用jquery进行切换,但最终该对象仍然被加载,只是没有显示。是否有一种方法可以防止加载元素以节省加载时间?我使用下面的代码切换css属性,但我希望它根本不加载元素

js

我的元素

<div class="startb"><a href="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/start.png" width="40" height="40" /></a></div>

<div class="flashObj"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="200" height="20">
            <param name="movie" value="dbs/js/singlemp3player.swf?file=Audio/004_IAM_God_is_Love.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90" />
            <param name="wmode" value="transparent" />
            <embed wmode="transparent" width="200" height="20" src="dbs/js/singlemp3player.swf?file=Audio/004_IAM_God_is_Love.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90"
            type="application/x-shockwave-flash" />
            </object></div>

不要将元素放在页面上,并在需要时创建它


如果html中有一个html元素,那么它已经存在了。除非您有多个版本的元素,否则这不会造成太大的开销。

您可以从页面中删除它:

$(".startb").remove();
但它仍将被加载,然后被删除。

因此,不要在不需要时删除它,而是在需要时创建它…

将此内容放在html文件的末尾:

<script type="text/template" id="myContent">
    <div>content</div>
</script>
这样可以节省渲染元素的时间。但是你仍然需要下载html。 另一种方法是通过AJAX下载内容。

不管您做什么,某些类型的元素都会加载

var img = document.createElement('img');
img.onerror = function () { alert("The browser tried to load me and failed"); };
img.src = 'bogus';
// img hasn't even been added to the DOM.

您可以使用服务器端语言(如PHP)来加载DOM的各个部分。虽然它并不总是一个选项,但它比客户端脚本可靠得多。缺点是调试可能更困难。

让我们假设页面中有这样一个div元素

<div id="containerDiv">
</div>


您可以使用
$(“#containerDiv”).append()
方法在页面加载中添加元素。但是,我不明白为什么不在服务器端执行此操作。

您可以按如下方式使用AJAX加载,但必须将其拆分为三个不同的HTML文件和一个JS文件

JS

startb.html

<div class="startb"><a href="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/start.png" width="40" height="40" /></a></div>

flashObj.html

<div class="flashObj"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="200" height="20">
            <param name="movie" value="dbs/js/singlemp3player.swf?file=Audio/004_IAM_God_is_Love.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90" />
            <param name="wmode" value="transparent" />
            <embed wmode="transparent" width="200" height="20" src="dbs/js/singlemp3player.swf?file=Audio/004_IAM_God_is_Love.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90"
            type="application/x-shockwave-flash" />
            </object></div>

以及你的网页:

<div id="container"></div>


请告诉我您是否需要任何进一步的帮助?

您可以使用延迟加载:例如,您将html。。在javascript中有一个条件,当宽度变化低于768px时,用src替换数据src。

您是指嵌入式/链接媒体吗?比如YouTube视频/图像等等?我之所以这么做是因为在平板电脑上很难在页面上加载大量flash元素。对于平板电脑,我将直接链接到.mp3文件,而不是使用flash播放器。不在页面上添加
元素不会阻止加载。抱歉,迈克,请注意,你确定你的意思是,这是双重否定吗?如果你创建一个
,无论你做什么,它都会加载。你可以把它放在页面上,不放在页面上,不管怎样,浏览器仍然会请求
src
。而且,我不相信双重否定是糟糕的英语。如果你不能处理反作用,你就不应该写代码:)如果有人有这个问题,你可以使用jquery插件,比如
<div class="startb"><a href="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/start.png" width="40" height="40" /></a></div>
<div class="flashObj"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="200" height="20">
            <param name="movie" value="dbs/js/singlemp3player.swf?file=Audio/004_IAM_God_is_Love.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90" />
            <param name="wmode" value="transparent" />
            <embed wmode="transparent" width="200" height="20" src="dbs/js/singlemp3player.swf?file=Audio/004_IAM_God_is_Love.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90"
            type="application/x-shockwave-flash" />
            </object></div>
<div id="container"></div>