我目前正在处理一个表单,除了表单的所有正常字段外,还有上传图片的文件输入,onchange将图片提交给iframe,然后将上传的图片加载到带有要修改的字段的表单中对于他们(如名称和地理定位).由于我无法嵌套表单,file_input也包含在iframe中,所以最后我在iframe中使用了iframe.如此示意,我有这样的事情:
<form>
<!-- LOTS OF FIELDS!! -->
<iframe src="file_input_url">
<!-- iframe which loads a page of a form with a file input-->
</iframe>
</form>
Run Code Online (Sandbox Code Playgroud)
和iframe中加载的html类似(忽略html,head和body标签)
<form target="upload_iframe">
<input type="file" onchange="this.form.submit()">
</form>
<iframe name="upload_iframe"></iframe>
Run Code Online (Sandbox Code Playgroud)
这很好用,除了加载第一个iframe需要几秒钟,因此文件输入不会加载到页面的其余部分,并且在视觉上并不理想.我可以解决这个问题,如果可以指定iframe内容而无需加载另一个页面(在第一个iframe中由'file_input_url'指定).
所以,我的问题是,有没有办法在同一个文档中指定iframe内容,或者只能用src属性来表示,所以需要加载另一个页面?
Guf*_*ffa 89
您可以将内容写入iframe文档.例:
<iframe id="FileFrame" src="about:blank"></iframe>
<script type="text/javascript">
var doc = document.getElementById('FileFrame').contentWindow.document;
doc.open();
doc.write('<html><head><title></title></head><body>Hello world.</body></html>');
doc.close();
</script>
Run Code Online (Sandbox Code Playgroud)
use*_*ser 17
您可以data:在以下位置使用URL src:
var html = 'Hello from <img src="http://stackoverflow.com/favicon.ico" alt="SO">';
var iframe = document.querySelector('iframe');
iframe.src = 'data:text/html,' + encodeURIComponent(html);Run Code Online (Sandbox Code Playgroud)
<iframe></iframe>Run Code Online (Sandbox Code Playgroud)
iframe中srcdoc ="..."和src ="data:text/html,..."之间的区别.
使用JavaScript将HTML转换为数据:text/html链接.
结合Guffa描述的内容,您可以使用<script type ="text/template"> ... </ script>的解释中描述的技术将
HTML文档存储在特殊script元素中(请参阅链接以获取解释这是如何工作的).这比将HTML文档存储在字符串中要容易得多.
| 归档时间: |
|
| 查看次数: |
98432 次 |
| 最近记录: |