我在 ASP.net 站点中有一个页面,其中有多个内容占位符、带有 JavaScript 函数的脚本标记和其他元素。我使用 JavaScript 隐藏了所有内容持有者和其他 html 元素,但我想显示的 div 除外。但是我在该页面中运行了其他脚本。我怎样才能删除它们?
有什么想法吗?
编辑1
假设我有一个后续页面
<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?
最佳答案
您可能会尝试的一件事是将不必要的函数重新分配给一个什么都不做的新函数。毕竟,Javascript 函数是一流的对象,因此可以为它们分配一个新值。这不会从您的页面中删除行,但会导致函数无用。如果您想暂时关闭它们,请将它们的值分配给另一个变量,然后重新分配它们。您可以随时将它们切换回保存在其他变量中的值。
<script type="text/javascript">
function myAmazingFunction(){
alert("Does Something");
}
</script>
稍后...
<script type="text/javascript">
myAmazingFunction = function(){};
//Now, call it...
myAmazingFunction();
</script>
这是安全的,因为这意味着调用这些函数的任何其他代码都不会导致错误 - 它们只是不会执行任何操作。
试一试,告诉我你的进展情况。
编辑: 我已经确认这种方法应该有效。在这里,我将功能从 Does Something 切换到 Does 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
关于javascript - 使用 JavaScript 删除不必要的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3386185/