Создайте iframe и добавьте к нему данные с помощью jQuery. - PullRequest
1 голос
/ 06 декабря 2011

Я пытаюсь внести некоторые изменения в пользовательский скрипт greasemonkey, чтобы реализовать нужную мне функцию. Код похож на

<code>showAddress:function(addrString,type)
{
        this.addrBox=$('<div id="batchPublish"></div>')
        .append('<div id="batchHeader"></div>')
        .append('<div id="batchContent" style="float:left;clear:both"></div>');

   .........

 var batchContent=this.addrBox.find('#batchContent')
        .append('<pre width="300" style="text-align:left" id="batchedlink">
'); this.addrBox.find ('# batchedlink'). css ({'width': '500px', 'height': '250px', 'overflow': 'auto', 'word-wrap': 'break-word' }) .append (addrString); $ .BlockUI ({сообщение: this.addrBox, CSS: {ширина: "520px", высота: "300px"}}); }

В основном этот код записывает данные в html. То, что я хочу реализовать, - это добавить addrString во встроенный фрейм. Теперь это в теге "pre". Я перепробовал много подходов, но все еще не повезло. Ифраме всегда был пустым. Я совершенно новичок в javascript и неясно, возможно ли это.

Спасибо за помощь.

Ответы [ 2 ]

4 голосов
/ 06 декабря 2011

Поскольку вы добавляете iFrame в тот же домен, вы можете управлять его содержимым следующим образом:
( См. Это в действии на jsBin. )

$("#batchContent").append ('<iframe id="batchedlink"></iframe>');

/*--- Compensate for a bug in IE and FF, Dynamically added iFrame needs 
    some time to become "DOM-able".
*/
setTimeout ( function () {
        var iframeBody  = $("#batchedlink").contents ().find ("body");

        iframeBody.append (addrString);
    },
    333
);

Примечание:
Для пользовательского скрипта Chrome вам, очевидно, не нужна задержка таймера. Но для FF и IE 8 (два других браузера, которые я дважды проверил), динамически добавленный iFrame не манипулируется до тех пор, пока по какой-то причине он не «установится». Это кажется , чтобы занять около 200 мс.

Статически загруженный iFrame не имеет этой задержки, см. Демонстрационную версию jsBin.

0 голосов
/ 06 декабря 2011

Трудно точно сказать, о чем вы спрашиваете, но если вы хотите узнать, можете ли вы добавлять элементы DOM в iFrame, ответ будет «нет».

...