У меня есть требование для получения содержимого iframe на веб-странице. Я нашел следующий код, который делает это правильно ---
<html>
<head>
</head>
<body>
<script type="text/javascript"> <!-- Function can also be loaded from an external file -->
function getContentFromIframe(iFrameName) // the function has one parameter: the iframe's ID.
{ // I did it this way, so you can call it for multiple iframes.
var myIFrame = document.getElementById(iFrameName); // Creating an object of the iframe
var content = myIFrame.contentWindow.document.body.innerHTML; // Getting it's content into a variable
// Basically now, in the variable 'content' you have the content of your iframe,
// and can do anything you want with it.
alert('content: ' + content); // here it is
// You can even choose to change it afterwards
content = 'The inside of my frame has now changed'; // create a new content
myIFrame.contentWindow.document.body.innerHTML = content; // and set it
}
</script>
<iframe id="iframe1" src="http://www.google.com/"></iframe> <!-- Instantiating the iframe -->
<br />
<a href="#" onclick="getContentFromIframe('iframe1')">Get the content</a> <!-- Calling the function -->
</body>
</html>
Теперь я планирую использовать вышеуказанный код в расширении Google Chrome - в основном, когда я нажимаю на кнопку расширения, тогда на веб-страницу будет вставлен код javascript, и здесь мне нужно получить содержимое iframe с именем " iframe1" .
Я понимаю, что в функции 'getContentFromIframe' значение идентификатора iframe передается в качестве входного параметра. Поэтому я изменил код на следующий, надеясь получить содержимое iframe -
var myIFrame = document.getElementById('iframe1'); // Creating an object of the iframe
var content = myIFrame.contentWindow.document.body.innerHTML; // Getting it's content into a variable
// Basically now, in the variable 'content' you have the content of your iframe,
// and can do anything you want with it.
alert('content: ' + content); // here it is
Однако я не получаю никакого значения содержимого iframe. Что я здесь не так делаю? Я не знаю много JavaScript, поэтому я подозреваю, что мой синтаксис где-то не так?
Ниже приведено содержимое моего manifest.json ---
{
"name": "Link Submitter",
"version": "1.0",
"background_page": "bg.html",
"description": "Link Submitter by SEO Power Toys",
"browser_action": {
"name": "Send Data",
"default_icon": "icon.png",
"default_title": "Send data to Link Submitter" // optional; shown in tooltip
},
"permissions": [ "tabs",
"bookmarks",
"http://*/*",
"https://*/*",
"unlimitedStorage"
]
}
Также приведено ниже сообщение об ошибке, которое я получаю в консоли Javascript, когда я пытаюсь запустить расширение Google Chrome-
Uncaught TypeError: Cannot read property 'document' of undefined