Chrome iframe родитель не определен - PullRequest
3 голосов
/ 06 марта 2011

У меня есть этот скрипт для Gmail.Он запускается внутри iframe canvas_frame.
Я хочу получить дескриптор родительского документа, используя parent.document.Но в Chrome мне говорят, что это не определено.Прекрасно работает в Firefox, но взрывается в Chrome.
Итак, как именно я могу получить дескриптор родительского документа изнутри iframe в Chrome.Вот код, который не работает:

function init() {
    try {
        if(parent == null) {
            console.log(typeof parent);
            window.setTimeout(init, 200);
            return;
        }
        // SOME MORE STUFF
    } catch(e) { console.log(e) }
}

Эта часть просто бесконечно выводит undefined в окне журнала.
Вот тестовый скрипт, который дает тот же результат.Он выводит undefined, за которым следует cQ бесконечно.

// ==UserScript==
// @name           TEST SCRIPT FOR CHROME
// @version        1.0
// @namespace      1nfected
// @description    TEST
// @include        http://mail.google.com/*
// @include        https://mail.google.com/*
// ==/UserScript==

(function() {
if(document.documentElement.className != 'cQ') {
    console.log('not our frame');
    return;
}
function init() {
    if(window.parent == null) {
        console.log(typeof window.parent);
        console.log(document.documentElement.className);
        window.setTimeout(init, 1000);
        return;
    }
    console.log('Found the parent');
}
init();
})();

Ответы [ 2 ]

4 голосов
/ 06 марта 2011

Пользовательские скрипты в Chrome ограничены, особенно когда речь идет о фреймах.

Есть причина, почему вы не можете сделать это иначе? Например:

var frame = document.getElementById('canvas_frame');
if (frame) {
  var dom = frame.contentDocument;
}

Лучшим ответом здесь будет Chrome Extensions , вы получите больший контроль над Content Script вместо пользовательского скрипта

0 голосов
/ 10 марта 2011

Наконец-то я понял, что в Google Chrome пользовательским сценариям запрещен доступ к window.parent.
Это сработало бы, только если я вставил скрипт в веб-страницу.

...