С нами с 17.12.00
Сообщения: 1653
Рейтинг: 1082
|
Добавлено: 20/08/15 в 10:38 |
На странице генерится яваскрипт где объявляется функция в результате работы которой вывод строка через document.write()
и далее вызов этой функции
При каждой загрузке страницы имя функции разное.
Внимание, знатоки, вопрос:
Как мне результат этой функции присвоить моей переменной.
рандомный код
<script>
function random_name() {document.write('some');}
random_name();
</script>
я хочу иметь, что-то типа
var my_var = 'some';
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 20/08/15 в 11:34 |
это что такое?
если есть доступ к генерирующему скрипту, поменять на
Код: |
<script>
var my_var = 'some';
</script>
|
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 20/08/15 в 11:50 |
Nikso писал: | При каждой загрузке страницы имя функции разное. |
Тут не совсем понятно, как имя функции в приведённом примере может деклирироваться рендомно?
Если тебе нужне результат того, что пишет в документ функция и ты можешь влезть в JS код самой функции, то ты бы и сам сделал верно?
Тогда рассматриваем фариант, когда влезть в код функции нельзя..
Код: |
<div id="random_name">
<script>
function random_name() {document.write('some');}
random_name();
</script>
</div>
<script>
var my_var = document.getElementById('random_name').innerText;
</script> |
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 20/08/15 в 12:07 |
Код: |
<!doctype html>
<script>
function random_name() {
document.write('some');
}
random_name();
</script>
<script id="self">
;(function (window) {
var self = document.getElementById("self");
if (self !== void 0 && self.nodeName.toString().toLowerCase() === "script") {
var all = document.getElementsByTagName("SCRIPT"), i, prev, current, text, exp;
for(i in all){
current = all[i];
if(!!current.id && current.id === "self"){
prev = all[i - 1];
text = prev.innerText || prev.textContent;
exp = /document\.write\((\W)([^\)]+)\1\)/i.exec(text);
if(!!exp && !!exp[2]){
window.my_var = exp[2];
}
break;
}
}
}
})(window);
</script>
<script>
alert(my_var);
</script>
|
|
|
|
|
продаю базы адалт кейвордов
С нами с 09.11.02
Сообщения: 9045
Рейтинг: 3772
|
Добавлено: 20/08/15 в 12:44 |
freeek: красиво
P.S. но вряд-ли сработает...
|
|
сдам подпись, стучите в личку
|
0
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 20/08/15 в 12:52 |
да понятно дело, исходных данных мало, плюс эта рандом функция пишет в дерево сразу.
just for fan, хотел дернуть текст 'some'. так то дергает, разве что в древних браузерах отпадет, без оптимизации, на коленке)
|
|
|
|
С нами с 17.12.00
Сообщения: 1653
Рейтинг: 1082
|
Добавлено: 20/08/15 в 13:38 |
На выводимый скрипт повлиять не могу, он где-то в глубинах пхп генерируется. В тексте 'some' ссылка на флвшку, мне вот ее надо выцарпать и засунуть в плейер. Потому что
Код: | <param name="flashvars" value="file=<script>function random_name()...</script>&image=/" /> |
Не работает.
Если этот урл как-то ранее выдернуть в переменную и сделать так
Код: | <script>document.write('<param name="flashvars" value="file='+my_var+'&image=/" />'); |
то порядок
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 20/08/15 в 13:54 |
Nikso:
Я же дал решение выше.
Оберни вывод функции в невидимый див
Код: | <div id="random_name" style="display:none"><script>random_name();</script></div> |
получи её вывод
Код: | <script>
var my_var = document.getElementById('random_name').innerText;
</script> |
и замени везде на странице random_name(); на my_var
|
|
|
|
С нами с 17.12.00
Сообщения: 1653
Рейтинг: 1082
|
Добавлено: 20/08/15 в 14:11 |
S_Flash: извиняюсь, промотнул что-то до большой бороды freeek:'a )
идею понял, попробовал, но чето my_var у меня Undefined получается
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 20/08/15 в 14:47 |
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 20/08/15 в 14:56 |
Nikso:
Да, я не кроссбраузерно делал пример. Вот так работает в последних браузерах:
Код: | <!DOCTYPE html>
<head>
</head>
<body>
<script>
function random_name() {document.write('some');}
</script>
<div id="random_name" style="display:none"><script>random_name();</script></div>
<script>
var my_var = document.getElementById('random_name').childNodes.item(1).textContent;
console.log(my_var);
alert(my_var);
</script>
</body>
</html> |
|
|
|
|
С нами с 17.12.00
Сообщения: 1653
Рейтинг: 1082
|
Добавлено: 20/08/15 в 15:07 |
S_Flash: Спасибо. поменял childNodes.item(1) на 2 и все вышло. Первый индекс выводил просто кусок яваскрипта.
freeek: хардкорщик ))
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 20/08/15 в 15:24 |
Nikso писал: | поменял childNodes.item(1) на 2 и все вышло. Первый индекс выводил просто кусок яваскрипта. |
Это у тебя если где-то пробел или перевод строки в коде. Если в одну строчку вывести, то должно работать при 1
Код: | <div id="random_name" style="display:none"><script>random_name();</script></div> |
если так
Код: |
<div id="random_name" style="display:none">
<script>random_name();</script>
</div> |
или
Код: |
<div id="random_name" style="display:none"> <script>random_name();</script></div> |
то при item(2), как у тебя..
Пробел или перевод строки идёт за отдельную ноду, это добавляет лишний индекс.
|
|
|
|
С нами с 17.12.00
Сообщения: 1653
Рейтинг: 1082
|
Добавлено: 20/08/15 в 18:12 |
Вон что. Спасибо.
Да, пробел был в конце. Отрезал его нафиг.
отсыпал
|
|
|
|