首页 > 代码库 > 解决easyui tabs中href无法跨域跳转

解决easyui tabs中href无法跨域跳转

<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html" />
	<meta name="author" content="blog.anchen8.net" />
    <script type="text/javascript" src=http://www.mamicode.com/"__PUBLIC__/jquery-easyui-1.4.1/jquery.min.js"></script>>

tabs加载页面分为两种方式

     href方式加载数据的特点:

  1. 被加载的页面只有body元素内部的内容才会被加载,也就是jQuery的ajax请求的只是html片段。
  2. 加载远程url时有遮罩效果,也就是“等待中……”效果,用户体验较好。
  3. 当加载的页面布局较为复杂,或者有较多的js脚本需要运行的时候,编码往往就需要谨慎了,容易出问题,后面会详细谈       
    content方式加载数据的特点:
  1. 比较灵活,你可以在脚本里面拼写html代码,然后赋值给tab的content属性,不过这种写法会使得代码易读性变差。
  2. 可以把iframe赋给content,把一个iframe嵌入也就没有什么不能完成的了。
  3. 使用iframe会造成客户端js重复加载,浪费资源,比如说你主页面要引用easyui的库,你的iframe也要引用,浪费就产生了。

在代码蓝色字体(href:‘www.baidu.com‘,)中,easyui无法加载百度网站的内容,换其他网站尝试也不可以。究其原因在于,浏览器在进行ajex跳转时,为了保证服务器安全和数据安全,浏览器会禁止跨域ajex的请求。打个比方:某个网站的某张页面被你写入了一些js ,这些js有些ajax操作
如果某个用户访问了这张页面,你的js就可以获得用户的某些信息(cookie,本地文件等)然后通过ajax发送回你的服务器。 这样你就可以获得任意你想获得的数据了。ajex的存在本身就是简化请求和不断刷新,禁用跨域可以保证ajex使用者的安全。因此easyui在href中,也会禁止ajex的跨域请求。但是并不是说你想加载其他域名的内容不能实现。可以采用content加载方式。将蓝色文字替换为:

content: ‘<iframe src=http://www.mamicode.com/"‘ + url + ‘" frameborder=0 height=100% width=100% scrolling=no></iframe>‘其中url替换成任意的网址即可。

问题:

 1.tabs是panel的子类,tabs依赖于panel,那为什么64行部分不能改为:希望大家指教下

 console.dir(taball[i].tabs('options'));

解决easyui tabs中href无法跨域跳转