Изменение содержимого тега скрипта в IE 8 с помощью YUI - PullRequest
1 голос
/ 23 ноября 2011

Следующий скрипт отлично работает в Firefox, но вылетает в IE 8 с ошибкой «Неизвестная ошибка времени выполнения».

YUI().use('node', function (Y) {
    if (Y.one('#testel') == null) {
        Y.one('head').append(Y.Node.create('<script id="testel" />'));
    }
    Y.one('#testel').set('text', 'Wish this would work in IE!');
    console.log( Y.one('#testel').get('text') );
});

Я поиграл с этим в IE, пытаясь что-то вроде:

Y.one('#testel').set('innerHtml', 'Wish this would work in IE!');
Y.one('#testel').set('html', 'Wish this would work in IE!');
Y.one('#testel').setContents('Wish this would work in IE!');

с той лишь разницей, что иногда она дает более полезную ошибку "Неожиданный вызов метода или доступа к свойству", из-за чего я думаю, что текст тега сценария нельзя изменить в IE?

При поиске я нашел много ссылок на вышеуказанные проблемы при работе с элементами таблицы в IE, но обходные пути в этих случаях, похоже, не относились к тегу script.

Есть ли способ достичь вышеизложенного в IE? (Я проверял это только в IE 8, но я полагаю, что проблема в 6,7).

Спасибо !!

1 Ответ

0 голосов
/ 23 ноября 2011

Вот обходной путь, который решает проблему и работает в IE 8 (еще не проверил 6,7).

Кажется, вы можете установить текст только при создании тега сценария, поэтому вместо попытки обновить текст, как код в вопросе, я просто удаляю и воссоздаю тег сценария в любое время, когда я хочу изменить текст (и это работает и в FF).

Так, например:

YUI().use('node', function (Y) {

    var writeToScript = function(text) {
        if (Y.one('#asdf') != null)
            Y.one('#asdf').remove();
        Y.one('head').append(Y.Node.create("<script id='asdf'>"+ text + " </script>"));
    }

    writeToScript("Hello there!");
    console.log( Y.one('#asdf').get('innerHTML') );
    writeToScript("How are you?");
    console.log( Y.one('#asdf').get('innerHTML') );
    writeToScript("Goodbye");
    console.log( Y.one('#asdf').get('innerHTML') );
});

Однако, если кто-то может объяснить, почему настройка текста не работает, как указано в вопросе, или если у вас есть другой способ сделать это без удаления / повторного добавления (это плохо для производительности?), Пожалуйста, добавьте свой ответ и я буду голосовать! Обходной путь делает это менее актуальным, но мне все еще любопытно !!

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