safari ReferenceError: Не удается найти переменную - PullRequest
3 голосов
/ 08 декабря 2010

У меня есть следующее в своем DIV

<script>
function newfunc()
{
alert("here");
}
</script>
<button type="button" onclick="newfunc()">Press me</button>

В IE и FF он работает нормально, но в Safari (по крайней мере, Safari 4.0.5) написано «ReferenceError не может найти переменную» - теперь содержимое загружается в DIV динамически, и кажется, что Safari не видит определения функций в этом DIV - однако, если я помещу функцию newfunc() на главную страницу HTML (т.е. не в DIV), то нажатие кнопки вызывает функцию.

Как будто Safari не видит функции Javascript, добавленные в DIV.

Любая помощь будет оценена.

адам

1 Ответ

5 голосов
/ 05 января 2012

Javascript, который динамически добавляется на страницу, должен быть eval-d для правильной инициализации.

Для того, чтобы это работало правильно для определений функций, их необходимо отформатировать немного по-другому.Например:

<script>
newfunc = function()
{
alert("here");
}
</script>
<button type="button" onclick="newfunc()">Press me</button>

После добавления содержимого в DIV извлеките все элементы тега из DIV и оцените их содержимое.

Например, используя PrototypeJS (http://www.prototypejs.org/api/):

$(divid).innerHTML.evalScripts();

Где divid - это идентификатор div, который вы только что заполнили контентом.

...