Я пишу расширение Google Chrome. Теперь мне нужно проверить содержимое iframe, но сценарий содержимого, похоже, не может получить доступ к этому содержимому, хотя отладчик может. Содержимое iframe - это список сообщений, которые я ранее отправил на этот сайт. Если я добавлю следующий оператор в скрипт содержимого, он всегда возвращает ноль:
document.getElementById("td_messages_show").getElementsByTagName("iframe")[0].contentWindow.document;
Но если я открою отладчик и выполню ту же команду из командной строки, он вернет «Документ» с соответствующим содержимым. Сначала я подумал, что это потому, что кадр не был загружен, поэтому я нашел такой фрагмент и попытался его использовать.
function wait4Iframe2Load() {
// Get a handle to the iframe element
//console.log('Checking for null myFrame');
var myFrame = document.getElementById("td_messages_show").getElementsByTagName("iframe")[0].contentWindow;
if (myFrame!=null)
{
console.log(myFrame);
// Check if loading is complete
if ( myFrame.document.readyState == 'complete' ) {
// The loading is complete, call the function we want executed once the iframe is loaded
console.log('Loading Complete');
//frameContent=document.getElementById("td_messages_show").getElementsByTagName("iframe")[0].contentWindow.document.getElementsByTagName('tbody')[0];
return;
}
else alert(" Frame is Not Loaded");
}
else myFrame = document.getElementById("td_messages_show").getElementsByTagName("iframe")[0].contentWindow;
// If we are here, it is not loaded. Set things up so we check the status again in 100 milliseconds
console.log('Waiting for frame to load...');
window.setTimeout('wait4Iframe2Load()', 100);
}
Это просто возвращает ноль навсегда. Но пока этот скрипт накапливает консольные сообщения, я могу открыть отладчик и выполнить ту же самую командную строку, и он возвращает документ. Столкнувшись с этой проблемой и изучая интернет-ответы, кажется, что это может быть какой-то осознанный вопрос безопасности. Является ли это или нет, мне нужно изучить содержимое iframe и определить, что я там написал ранее, чтобы я мог решить, что писать там дальше.
У кого-нибудь есть идеи, как решить эту проблему?