我一直在尝试从iframe访问数据。我在研究编码器。我花了一整天的时间寻找解决办法,但运气不好。我不是javascript专家,所以这对我来说越来越难了。请看看我的代码。
home-upload-dialog.php
视图文件
<div id="popup-contents">
<iframe id="upload-frame" frameborder="0" scrolling="no" height="200" width="100%" src="<?php echo site_url('home/upload_area/' . $_REQUEST['count']);?>"></iframe>
</div>
<input type="button" value="click me" onclick="run()">
<script>
run() {
var iframedoc = document.getElementsByTagName('iframe')[0].contentWindow.document;
var inputs = iframedoc.getElementById('text');
console.log(inputs);
}
</script>
home.php
控制器
upload_area() {
$data['count'] = $count;
$this->load->view('upload-area', $data);
}
upload-area.php
视图文件
<!DOCTYPE html>
<html>
<head>
<title>Title here</title>
</head>
<body>
<input type="text" name="text" id="text" value="someValue">
</body>
</html>
我得到错误说Uncaught TypeError: Cannot read property 'contentWindow' of undefined
我可能忽略了一些东西。如有任何帮助,不胜感激!
我也试过$('iframe').contents().find('#text').html();
,但没有运气。
你的问题已经有很多答案,谷歌"访问DOM内iframe"的几个解决方案,这里是一个。
一般情况下,请记住,如果iframe加载到另一个域,则不能访问iframe数据(否则想象一下Facebook的"Like"小部件,您可以加载它,然后窃取访问您网站的用户的授权cookie…)
EDIT:请注意,上面的安全限制包括有趣的情况,如您的网站是从"www.domain.com/page.php"加载的,您的iframe从"domain.com/iframe.php",所以检查一下。