Как получить значение src динамически сгенерированного iframe - PullRequest
0 голосов
/ 28 января 2019

У меня есть функция, которая создает iframe с содержимым на моей странице (у меня нет контроля над этой функцией, потому что она также извлекается удаленно).функция генерирует: <span id="myspan"></span>

как только функция js полностью загружена, это: <iframe id="myspan" src="https://google.de">

мой вопрос, как я могу получить src iframe.все попытки с .src, getElementById завершились неудачно или дают мое "undefined" в качестве значения src.для обычного набора iframe .src и т. д. работает нормально.также onload терпит неудачу на этом src.какие-нибудь идеи?

я попробовал <script>var iframeSrc = document.getElementById('#myspan').src;alert(iframeSrc);</script> результаты в неопределенном.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Попробуйте использовать setInterval, который запустит код, указанный в качестве первого аргумента, в интервале, указанном в качестве второго аргумента.В этом случае он запрашивает, существует ли iframe каждые 500 мс.

Когда был найден iframe, обязательно очистите интервал, используя clearInterval, так как нам больше не нужно опрашивать.

var intervalId = setInterval(function() { 
    var iframe = document.getElementById('myspan');

    if (iframe) { 
        clearInterval(intervalId);

        var iframeSrc = iframe.src;
        alert(iframeSrc);
    }
}), 500);

Надеюсь, это поможет.

0 голосов
/ 28 января 2019

опрос сработал, <script>var existCondition = setInterval(function() { if (jQuery("iframe#myspan").length) { clearInterval(existCondition); var iframeSrc = jQuery("#myspan").attr("src");window.location.replace(iframeSrc) } }, 100);</script>

0 голосов
/ 28 января 2019

Попробуйте удалить хештег из вашего документа.нужно добавить в него хэштег.

Другая причина того, что ваш скрипт не работает, заключается в том, что вы можете пытаться получить src до того, как iframe был добавлен в dom.

Если вы хотите проверить dom и дождаться запуска некоторого скрипта после добавления iframe, вы можете сделать что-то вроде этого:

var selector = document.getElementById('myspan');
var time = 400;

function waitForElementToDisplay(selector, time) {
        if(document.querySelector(selector)!=null) {
            alert("The element is displayed, you can put your code instead of this alert.")
            return;
        }
        else {
            setTimeout(function() {
                waitForElementToDisplay(selector, time);
             }, time);
         }

Обязательно отредактируйте параметры: селектор и времятак что это соответствует вашему коду.

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