javascript IE中网页上的JS消息

a64a0gku  于 2023-01-08  发布在  Java
关注(0)|答案(3)|浏览(128)

如何解决下面的错误。div应该在表单中吗?

<script>

 function EvalSound(soundobj) {

  var thissound= eval("document."+soundobj);
  thissound.Play();
 }
</script>

<div id="s_player" style="display:block;width:620px;height:53px;">
<embed src="/media/a.wav" autostart=false width=0 height=0 id="sound1" enablejavascript="true">

<a href="#" onclick="javascript:EvalSound('sound1');">   <b>Play test sound</b></a></td>
</div>
    • 错误为**:

网页错误详细信息
用户代理:Mozilla/4.0(兼容; windows NT 5.1操作系统三叉戟/4.0 NET语言开发工具3.0.04506.648; . NET语言3.5.21022; . NET核心语言2.0.50727; . NET核心语言3.0.4506.2152; . NET语言核心语言3.5.30729;信息路径2 FDM)时间戳:世界协调时2010年12月29日星期三14:22:09
消息:"undefined"为空或不是对象

0kjbasz6

0kjbasz61#

您可以在此处更正以下几点:
1)不要使用eval查找属性

var thissound= eval("document."+soundobj);

变成

var thissound= document[soundobj];

2)但是,如果某个对象有id,则使用document.getElementById查找它,因此:

var thissound = document.getElementById(soundobj);

3)在事件处理程序属性上不使用javascript:前缀,因此

<a href="#" onclick="javascript:EvalSound('sound1');">

变成

<a href="#" onclick="EvalSound('sound1');">

(尽管这个协议基本上是无害的,但它只是定义了一个您从未使用过的标签)(您只在链接属性上使用javacript:伪协议,如href)。

更新:您指出上述问题均未解决,因此:

4)sound1真的独一无二吗?
页面上还有其他名为“sound 1”的 * 任何东西 * 吗?IE在mixing together namespaces方面有问题。即使只是页面范围内具有该名称的变量也会导致问题。

进一步更新

5)您可以在IE中使用embed吗?
我一点也不确定你能做到,我以为IE想要object而不是embedThis page在IE中播放声音很有趣,看起来IE可能内置了一个脚本来加载这样的对象;查看脚本的内容很可能帮助您确定需要执行的操作。
X)走过它
解决这个问题的最佳方法是使用调试器遍历代码(IE8有内置的开发工具,或者你可以使用VS .NET的免费版本)。这将帮助你缩小问题的范围。(没有双关语)就好像sound1元素没有被找到一样,但实际上,它可能是几种情况中的任何一种。我猜5号是罪魁祸首。

可能离题:您已经将问题标记为jquery。如果您真的在使用jQuery,那么您可能会比现在看起来更好地使用它。例如,您可以使用jQuery来设置事件处理程序,而不是使用onclick,后者非常过时。您可以使用jQuery来代替document.getElementById,但在此特定情况下,它不会为您带来任何好处。

fnvucqvd

fnvucqvd2#

尝试使用

document.getElementByID(soundobj)

而不是文档. soundobj

huus2vyu

huus2vyu3#

试试这个:

<script>

 function EvalSound(soundobj) {

  var thissound= document.getElementById(soundobj);
  thissound.Play();
 }
 </script>

相关问题