Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   getElementsByTagName("script") (https://javascript.ru/forum/css-html-internet-explorer/19472-getelementsbytagname-script.html)

bugmenot 05.08.2011 15:14

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

monolithed 05.08.2011 18:37

bugmenot,
подная тема

bugmenot 05.08.2011 19:26

там нет ответа на мой вопрос, с регуляркой помочь можешь?

bugmenot 05.08.2011 19:35

Это я так пробовал с помощью регулярок выцепить скрипты, но не работает
// ...
        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 как оно делается!

trikadin 06.08.2011 02:24

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


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

devote 06.08.2011 12:17

Цитата:

Сообщение от trikadin
Вы какбэ обижаете людей, которые на нём пишут.

ну меня это не обижает, лично мне все равно кто что и как называет. Их проблемы)

trikadin 06.08.2011 12:29

Да я тоже не плачу от этого :) Просто это глупо - просить помощи, и при этом оскорблять людей, пусть даже косвенно, у которых помощи просишь.

devote 06.08.2011 13:08

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);
        }
    });
}

devote 06.08.2011 13:14

Цитата:

Сообщение от bugmenot (Сообщение 117522)
Это я так пробовал с помощью регулярок выцепить скрипты, но не работает
// ...
        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 ], "");

bugmenot 06.08.2011 15:51

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


Часовой пояс GMT +3, время: 19:29.