Несколько вещей, которые вы можете исправить там:
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
, хотя в данном конкретном случае он ничего не покупает.