跨域

跨域Dom查询

位于a.my.com的a.php文件

<iframe style="width:0;height:0" src="http://b.my.com/b.php"></iframe>
<script>
$(function(){
    document.domain = 'my.com';//设置域名
})
</script>

位于b.my.com的b.php文件

<!-- 自行引入jQuery  -->
<script src="jquery/lib.js"></script>
<script>
$(function(){
    document.domain = 'my.com';//设置域名
    
    var browser_version = get_browser_version();  
    var browser = browser_version[0];
    var version = browser_version[1];
    var br_detect = 1;//浏览器监测

    if (browser == 'MSIE') {  
       if (parseInt(version) < 9) {  
           br_detect = 0;/* IE 9 以下不支持 */
       }  
    }

    if (br_detect) {
        bindEvent_('a', 'mousedown');
        bindEvent_('button', 'mousedown');
    }
    
})

/* 获取浏览器及版本 */
function get_browser_version() {  
    var N = navigator.appName, ua = navigator.userAgent, tem;  
    var M = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);  
    if (M && (tem = ua.match(/version\/([\.\d]+)/i)) != null) {
        M[2] = tem[1];  
    }
    M = M ? [M[1], M[2]] : [N, navigator.appVersion, '-?'];  
    return M;  
}  

function bindEvent_(tag, eventType) {
    //注意这里的parent.document,将事件绑定在父页面上
	$(tag, parent.document).on(eventType, function(){
		var this_ = $(this);
		console.log('触发了【' + eventType + '】事件:');
        console.log('ID:' + (this_.attr('id') || ''));
        console.log('class:' + (this_.attr('class') || ''));
        console.log('href:' + (this_.attr('href') || ''));
        console.log('标签:' + this_[0].tagName);
        console.log('名称:' + (this_.text() || this_.value()));
        
        //do ajax将数据存入数据库
	})

}

</script>

当点击a页面(父页面)的a、button标签时,会触发bindEvent_事件,将数据传入b页面,通过ajax保存到b系统中的数据库中,实现用户行为记录


使用postMessage跨域传值

<iframe style="width:0;height:0" id='myframe' name='myframe' src="http://b.my.com/b.php"></iframe>
<script>
$(function(){
    //发送信息
    var frame = window.frames['myframe'];
    frame.postMessage('发送信息', 'http://b.my.com');

    //监听信息
    window.addEventListener('message', function(e) {
       console.dir('接收信息:' + e.data);
    }, false);
})
</script>

参考

浏览器的同源策略

 

不要再问我跨域的问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值