我在ASP.net网站上有一个页面,其中有多个内容占位符,带有JavaScript函数的脚本标记和其他元素。我正在使用JavaScript隐藏所有内容持有者和其他html元素,除了我要显示的div。但我得到该页面中运行的其他脚本。我该如何删除它们?
有什么想法吗?
EDIT1
让我们考虑一下以下页面
<html>
<head>
<script type="text/javascript">
alert("unnecessary script")
</script>
</head>
<body>
<script type="text/javascript">
alert("another one")
</script>
<div id="div1">
Div 1</div>
<div id="div2">
Div 2</div>
<div id="div3">
Div 3</div>
<script type="text/javascript">
alert("one more")
</script>
</body>
</html>
我正在另一个页面的iFrame中加载此页面,其中在框架OnLoad()中我调用HideUnneededHTML(),它隐藏除div2之外的所有内容。如何在加载之前删除不必要的Javascript?
答案 0 :(得分:1)
您可能尝试的一件事是将不必要的函数重新分配给不执行任何操作的新函数。毕竟,Javascript函数是一流的对象,因此可以为它们分配一个新值。这不会删除页面中的行,但会使函数无效。如果要暂时将其关闭,请将其值分配给另一个变量,然后重新分配。您始终可以将它们切换回另一个变量中保存的值。
<script type="text/javascript">
function myAmazingFunction(){
alert("Does Something");
}
</script>
...后
<script type="text/javascript">
myAmazingFunction = function(){};
//Now, call it...
myAmazingFunction();
</script>
这是安全的,因为这意味着调用这些函数的任何其他代码都不会导致错误 - 它们只是不会做任何事情。
试一试,让我知道你是怎么过的。
修改强> 我已经确认这种方法应该有效。在这里,我将功能从Do Something切换到Do Something Else,然后再返回。
<script type="text/javascript">
function myAmazingFunction() {
alert("Does Something");
}
myAmazingFunction();
var temp = myAmazingFunction;
myAmazingFunction = function() { alert("Does Something Else"); };
myAmazingFunction();
myAmazingFunction = temp;
myAmazingFunction();
</script>
按此顺序生成3个警告框:
Does Something
Does Something Else
Does Something