2010-07-07 60 views
1

其实我工作的阿贾克斯在哪我要将iframe转换为div 意味着什么是iframe的功能我想在div中相同如何将iframe替换为div?

谢谢。

+0

你为什么要这么做? – 2010-07-07 12:30:27

+2

@Jim,你最好通过电子邮件发送。 – 2010-07-07 12:31:00

+0

为什么? iframes不是SEO友好的... – galambalazs 2010-07-07 12:32:19

回答

7

你不能在简单的div中具有完全相同的iframe功能。这就是为什么他们有两个不同的名字。 Iframe有点沙盒,并且可以在任何域上打开网址。

随着时下阿贾克斯浏览器,你必须坚持使用同源策略这意味着你只能从您的网站运行在同一个域中加载内容。

所以,除了这个限制和事实,即iframe的沙箱不能在这里一个div来模拟,是一个简单的Ajax解决方案使用JavaScript,您可以使用才达到例如网站导航:

HTML

<ul id="nav"> 
    <li><a href="page1.html">page1</a></li> 
    <li><a href="page2.html">page2</a></li> 
    <li><a href="page3.html">page3</a></li> 
</ul> 

的Javascript

// select the menu element 
var nav = document.getElementById("nav"); 

// watch for clicks on the menu 
nav.onclick = function(e) { 

    // get the element that was clicked 
    e = e || window.event; 
    var el = e.target || e.srcElement; 

    // only act if it was a link 
    if (el.nodeName == "A") { 

    // making a call is as simple as this 
    ajax(el.href, function(data) { 

     // do something with the server's response 
     // e.g.: put it to the #content element 
     document.getElementById("content").innerHTML = data; 
    }); 

    // prevent default action 
    return false; 
    } 
}; 

/////////////////////////////////////////////////////////////////////////////// 

function getXmlHttpObject() { 
    var xmlHttp; 
    try { 
     xmlHttp = new XMLHttpRequest(); 
    } catch (e) { 
     try { 
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    } 
    return xmlHttp; 
} 

function ajax(url, onSuccess, onError) { 
    var xmlHttp = getXmlHttpObject(); 
    xmlHttp.onreadystatechange = function() { 
     if (this.readyState == 4) { 
      // onError 
      if (this.status != 200) { 
       if (typeof onError == 'function') { 
        onError(this.responseText); 
       } 
      } 
      // onSuccess 
      else if (typeof onSuccess == 'function') { 
       onSuccess(this.responseText); 
      } 
     } 
    }; 
    xmlHttp.open("GET", url, true); 
    xmlHttp.send(null); 
    return xmlHttp; 
}​ 

+0

@ galambalazs,忘了把简单的解决方案.. :) – 2010-07-07 12:38:15

+0

@Gaby,因为我是黑客它.. :) – galambalazs 2010-07-07 12:42:16

+0

@galambalaz,认为将是这种情况..只是确保 – 2010-07-07 12:51:42

2

@rajesh,你无法通过Ajax,除非你把JavaScript文件与阿贾克斯的网站,在那里驻留你想放置在您的股利网站上的内容调用加载外部网页。所以你唯一的方法就是使用Iframe。

+0

'“所以你唯一的方法就是使用iframe。” - 你怎么知道他在用iframe呢?对于同域的东西阿贾克斯是伟大的。 – galambalazs 2010-07-07 13:00:48

+0

@galambalazs,你今天似乎很好玩。我猜可能是为了从外部网站获取内容。 – eugeneK 2010-07-07 13:02:40

+0

我总是很好玩。 :) – galambalazs 2010-07-07 13:17:17