4种通过iframe跨域与其他页面通信的方式,熬夜整理最全面的HTML字符实体
在HTML中,字符实体是用来代替某些特殊字符的,例如,你不能直接使用小于号<
,大于号>
,空格等字符,因为它们在HTML中有特殊的含义。字符实体是以一个&
符号开始,以一个分号;
结束的。
以下是一些常见的HTML字符实体:
:不断行的空格<
:小于号>
:大于号&
:ampersand或者说and符号"
:引号'
:撇号©
:版权符号®
:注册符号
跨域通信主要涉及到以下几种方式:
- 通过window.postMessage方法
- 通过设置document.domain
- 通过动态创建script标签
- 通过JSONP
以下是详细的解决方案和实例代码:
- 通过window.postMessage方法
// 父页面
window.onload = function() {
var iframe = document.getElementById('iframe');
iframe.onload = function() {
iframe.contentWindow.postMessage('hello', 'http://example.com');
}
}
window.addEventListener('message', function(e) {
console.log(e.data);
}, false);
<!-- iframe页面 -->
<script>
window.onload = function() {
window.addEventListener('message', function(e) {
e.source.postMessage('hello', e.origin);
}, false);
}
</script>
- 通过设置document.domain
// 两个子页面都需要设置
document.domain = 'example.com';
- 通过动态创建script标签
var script = document.createElement('script');
script.src = 'http://example.com/jsonp?callback=handleResponse';
document.head.appendChild(script);
function handleResponse(data) {
console.log(data);
}
- 通过JSONP
var script = document.createElement('script');
script.src = 'http://example.com/jsonp?callback=handleResponse';
document.head.appendChild(script);
function handleResponse(data) {
console.log(data);
}
以上就是跨域通信的四种方式和HTML字符实体的一些常见实例。
评论已关闭