05.08.2011, 15:14
|
Аспирант
|
|
Регистрация: 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), но данный метод возвращает только первое вхождение, в цикле тоже не получается, покажите рабочий пример
|
|
05.08.2011, 18:37
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
|
|
05.08.2011, 19:26
|
Аспирант
|
|
Регистрация: 24.07.2009
Сообщений: 62
|
|
там нет ответа на мой вопрос, с регуляркой помочь можешь?
|
|
05.08.2011, 19:35
|
Аспирант
|
|
Регистрация: 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 как оно делается!
|
|
06.08.2011, 02:24
|
|
Модератор
|
|
Регистрация: 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 говорите? Вы какбэ обижаете людей, которые на нём пишут.
Последний раз редактировалось trikadin, 06.08.2011 в 02:31.
|
|
06.08.2011, 12:17
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от trikadin
|
Вы какбэ обижаете людей, которые на нём пишут.
|
ну меня это не обижает, лично мне все равно кто что и как называет. Их проблемы)
|
|
06.08.2011, 12:29
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Да я тоже не плачу от этого Просто это глупо - просить помощи, и при этом оскорблять людей, пусть даже косвенно, у которых помощи просишь.
|
|
06.08.2011, 13:08
|
что-то знаю
|
|
Регистрация: 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);
}
});
}
|
|
06.08.2011, 13:14
|
что-то знаю
|
|
Регистрация: 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 ], "");
|
|
06.08.2011, 15:51
|
Аспирант
|
|
Регистрация: 24.07.2009
Сообщений: 62
|
|
оно у меня не в хиде лежит, аяксом берется контент страницы, контент вставляется в див, а у дива выбираются элементы по тегу
|
|
|
|