Ошибка JS на веб-странице в IE - PullRequest
0 голосов
/ 29 декабря 2010

Как устранить приведенную ниже ошибку. Должен ли 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 (совместимый; MSIE 8.0; Windows NT 5.1; Trident / 4.0; GTB6.6; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152;.NET CLR 3.5.30729; InfoPath.2; FDM) Отметка времени: ср, 29 дек. 2010 14:22:09 UTC

Message: 'undefined' is null or not an object

Ответы [ 3 ]

2 голосов
/ 29 декабря 2010

Несколько вещей, которые вы можете исправить там:

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 действительно уникальным?

У вас есть что-нибудь еще на странице под названием "sound1"? IE имеет проблемы с смешиванием пространств имен . Даже просто переменная с таким именем в области видимости страницы может вызвать проблемы.

Дальнейшее обновление :

5) Можете ли вы использовать embed с IE?

Я совсем не уверен, что вы можете, я думал, что IE хотел object вместо embed. Эта страница интересна для воспроизведения звуков в IE, похоже, в IE может быть встроен скрипт для загрузки подобных объектов; просмотр содержания сценария может помочь вам понять, что вам нужно делать.

X) Пройдите через него

Лучшее решение для выяснения этого - пройтись по коду с помощью отладчика (в IE8 встроены средства разработки или вы можете использовать бесплатную версию VS.Net). Это поможет вам сузить суть проблемы. Звучит (без каламбура), как будто элемент sound1 не найден, но на самом деле это может быть одна из нескольких вещей. Если это так, что элемент не найден, я предполагаю, что виновником является # 5.


Возможно, не по теме : Вы отметили свой вопрос jquery. Если вы действительно используете jQuery, вы, вероятно, сможете извлечь из него больше пользы, чем кажется в настоящее время. Например, вы можете использовать jQuery для настройки обработчика событий, а не onclick, который очень старомоден, и вы можете использовать jQuery вместо document.getElementById, хотя в данном конкретном случае он ничего не покупает.

0 голосов
/ 29 декабря 2010

Попробуйте это:

<script>

 function EvalSound(soundobj) {

  var thissound= document.getElementById(soundobj);
  thissound.Play();
 }
 </script>
0 голосов
/ 29 декабря 2010

Попробуйте использовать

document.getElementByID(soundobj)

вместо document.soundobj

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...