Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.08.2011, 15:14
Аспирант
Посмотреть профиль Найти все сообщения от bugmenot
 
Регистрация: 24.07.2009
Сообщений: 62

getElementsByTagName("script")
Этот код прекрасно работает во всех браузерах, кроме ... .

function ajaxLoad(url, target) {
    ajaxGet(url, function(content) {
        var container = document.getElementById(target);
        container.innerHTML = content;
        var scripts = container.getElementsByTagName("script"); // IE < 9 не работает
        for (var i = 0; i < scripts.length; ++i) {
            eval(scripts[i].innerHTML);
        }
    });
}


Ишак возвращает Object HTMLCollection с length = 0. Может кто подскажет как исправить? И ещё вопрос пробовал с помощью регулярок получить всё что внутри тегов script вот рабочая регулярка(она должна работать, потому как правильная) /<script[^>]*>(.*)<\/script>/gi, что мне непонятно в js есть re.exec(str), но данный метод возвращает только первое вхождение, в цикле тоже не получается, покажите рабочий пример
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2011, 18:37
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

bugmenot,
подная тема
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2011, 19:26
Аспирант
Посмотреть профиль Найти все сообщения от bugmenot
 
Регистрация: 24.07.2009
Сообщений: 62

там нет ответа на мой вопрос, с регуляркой помочь можешь?
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2011, 19:35
Аспирант
Посмотреть профиль Найти все сообщения от bugmenot
 
Регистрация: 24.07.2009
Сообщений: 62

Это я так пробовал с помощью регулярок выцепить скрипты, но не работает
// ...
        var str = content;
        // alert(str);
        while (1) {
            alert(str);
            var tmp = /<script[^>]*>(.*)<\/script>/gi.exec(str);
            alert(tmp);
            if (!tmp) {
                break;
            }
            str = str.replace(tmp[0], "");
        }


Объясните кто-нибудь в этом ***баном js как оно делается!
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2011, 02:24
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

<html>
<head>
<script>//скрипт</script>
<script>//скрипт</script>
<script>// ещё скрипт))</script>
<script>// и ещё скрипт</script>
<script>alert(document.getElementsByTagName("script").length);//узнаем, сколько их))</script>
</head>
</html>


Это у вас мозги не работают, по-видимому. Во-первых, в моём восьмом эксплорере всё прекрасно работает, во-вторых, вы второго августа тоже на улице "ВДВ - гавно!" кричите? Нет? А почему здесь плохо про js говорите? Вы какбэ обижаете людей, которые на нём пишут.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)

Последний раз редактировалось trikadin, 06.08.2011 в 02:31.
Ответить с цитированием
  #6 (permalink)  
Старый 06.08.2011, 12:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от trikadin
Вы какбэ обижаете людей, которые на нём пишут.
ну меня это не обижает, лично мне все равно кто что и как называет. Их проблемы)
Ответить с цитированием
  #7 (permalink)  
Старый 06.08.2011, 12:29
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Да я тоже не плачу от этого Просто это глупо - просить помощи, и при этом оскорблять людей, пусть даже косвенно, у которых помощи просишь.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 06.08.2011, 13:08
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function makeArray( obj, undefined ) {

	if ( !obj ) return [];

	var out = [], i = 0, j = 0;

	if ( typeof obj.length === "number" ) {
		for ( var l = obj.length; j < l; j++ ) {
			out[ i++ ] = obj[ j ];
		}
	} else {
		while ( obj[ j ] !== undefined ) {
			out[ i++ ] = obj[ j++ ];
		}
	}

	out.length = i;

	return out;
}

function ajaxLoad(url, target) {
    ajaxGet(url, function(content) {
        var container = document.getElementById(target);
        container.innerHTML = content;
        var scripts = makeArray( container.getElementsByTagName("script") );
        for (var i = 0; i < scripts.length; ++i) {
            eval(scripts[i].innerHTML);
        }
    });
}
Ответить с цитированием
  #9 (permalink)  
Старый 06.08.2011, 13:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от bugmenot Посмотреть сообщение
Это я так пробовал с помощью регулярок выцепить скрипты, но не работает
// ...
        var str = content;
        // alert(str);
        while (1) {
            alert(str);
            var tmp = /<script[^>]*>(.*)<\/script>/gi.exec(str);
            alert(tmp);
            if (!tmp) {
                break;
            }
            str = str.replace(tmp[0], "");
        }


Объясните кто-нибудь в этом ***баном js как оно делается!
str = str.replace(tmp[ 1 ], "");
Ответить с цитированием
  #10 (permalink)  
Старый 06.08.2011, 15:51
Аспирант
Посмотреть профиль Найти все сообщения от bugmenot
 
Регистрация: 24.07.2009
Сообщений: 62

оно у меня не в хиде лежит, аяксом берется контент страницы, контент вставляется в див, а у дива выбираются элементы по тегу
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск