<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: 使用 iframe 获取网页片段的一个好处</title>
	<atom:link href="http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/feed/" rel="self" type="application/rss+xml" />
	<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/</link>
	<description>web 标准，前端开发，编程感悟，生活杂想</description>
	<lastBuildDate>Fri, 12 Mar 2010 08:20:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: jlake</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-152502</link>
		<dc:creator>jlake</dc:creator>
		<pubDate>Tue, 30 Jun 2009 02:24:44 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-152502</guid>
		<description>从跨域的 iframe 取内容可不是一件容易的事。</description>
		<content:encoded><![CDATA[<p>从跨域的 iframe 取内容可不是一件容易的事。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hades</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-151592</link>
		<dc:creator>Hades</dc:creator>
		<pubDate>Wed, 10 Jun 2009 14:54:16 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-151592</guid>
		<description>使用iframe的问题是加载过程比XMLHttpRequest 复杂很多,比如计算布局之类,加载图片、样式之类。另外你说的用户访问foo.com/partial的问题，作为开发者应该尽量隐藏这些页面，不让浏览者有机会看到他。如果浏览者是有心想打开这个页面的话，那你也拿他没办法。一般人访问网站，我相信他不会这样子做的，除非故意找茬的。。。</description>
		<content:encoded><![CDATA[<p>使用iframe的问题是加载过程比XMLHttpRequest 复杂很多,比如计算布局之类,加载图片、样式之类。另外你说的用户访问foo.com/partial的问题，作为开发者应该尽量隐藏这些页面，不让浏览者有机会看到他。如果浏览者是有心想打开这个页面的话，那你也拿他没办法。一般人访问网站，我相信他不会这样子做的，除非故意找茬的。。。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sam</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-134970</link>
		<dc:creator>Sam</dc:creator>
		<pubDate>Tue, 03 Mar 2009 06:23:03 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-134970</guid>
		<description>请问一下iframe跨域调用有没有解决办法？谢谢</description>
		<content:encoded><![CDATA[<p>请问一下iframe跨域调用有没有解决办法？谢谢</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kael</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-118836</link>
		<dc:creator>Kael</dc:creator>
		<pubDate>Tue, 06 Jan 2009 11:28:43 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-118836</guid>
		<description>awaiting moderation的留言，留言者本人也看不到，还以为没有发送成功呃……</description>
		<content:encoded><![CDATA[<p>awaiting moderation的留言，留言者本人也看不到，还以为没有发送成功呃……</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kael</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-118835</link>
		<dc:creator>Kael</dc:creator>
		<pubDate>Tue, 06 Jan 2009 11:16:18 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-118835</guid>
		<description>第一种情况，获取的responseText可以进行适当的筛选，partial可以是一个完整的页面，也可以包含js，但是我们最后赋予Index中的某个元素的时候，只是partial的一部分。而我们在新窗口中打开partial的时候，也是一个完整的页面。

这个和unobtrusive也不冲突，比如:
要将/partial页面中的#resDiv li的内容载入到/index中的#desDiv
文字链接的href为/partial

使用jQuery/API/ajax中的load()函数，
$(&#039;#desDiv&#039;).load(&#039;/partial #resDiv li&#039;);</description>
		<content:encoded><![CDATA[<p>第一种情况，获取的responseText可以进行适当的筛选，partial可以是一个完整的页面，也可以包含js，但是我们最后赋予Index中的某个元素的时候，只是partial的一部分。而我们在新窗口中打开partial的时候，也是一个完整的页面。</p>
<p>这个和unobtrusive也不冲突，比如:<br />
要将/partial页面中的#resDiv li的内容载入到/index中的#desDiv<br />
文字链接的href为/partial</p>
<p>使用jQuery/API/ajax中的load()函数，<br />
$(&#8216;#desDiv&#8217;).load(&#8216;/partial #resDiv li&#8217;);</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kael</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-118833</link>
		<dc:creator>Kael</dc:creator>
		<pubDate>Tue, 06 Jan 2009 11:12:41 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-118833</guid>
		<description>第一种情况，获取的responseText可以进行适当的筛选，partial可以是一个完整的页面，也可以包含js，但是我们最后赋予Index中的某个元素的时候，只是partial的一部分。而我们在新窗口中打开partial的时候，也是一个完整的页面。

这个和unobtrusive也不冲突，比如jQuery/API/ajax中的load()函数，要将/partial页面中的#resDiv li的内容载入到/index中的#desDiv
$(&#039;#desDiv&#039;).load(&#039;/partial #resDiv li&#039;);</description>
		<content:encoded><![CDATA[<p>第一种情况，获取的responseText可以进行适当的筛选，partial可以是一个完整的页面，也可以包含js，但是我们最后赋予Index中的某个元素的时候，只是partial的一部分。而我们在新窗口中打开partial的时候，也是一个完整的页面。</p>
<p>这个和unobtrusive也不冲突，比如jQuery/API/ajax中的load()函数，要将/partial页面中的#resDiv li的内容载入到/index中的#desDiv<br />
$(&#8216;#desDiv&#8217;).load(&#8216;/partial #resDiv li&#8217;);</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dexteryy</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-117674</link>
		<dc:creator>dexteryy</dc:creator>
		<pubDate>Tue, 30 Dec 2008 13:14:40 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-117674</guid>
		<description>土豆网播放页的评论就是用iframe来跨域获取的……不过方法是在iframe的src里调用一个包含ajax方法的页面，然后父页面调用这个方法来发起跟子页面同域名下的ajax请求。

我做了一个通用的crossdomain.html :

http://comments.tudou.com/crossdomain/index.html

此外也可以直接用iframe的src来请求数据，不过不推荐把JS也写在src请求的页面里，那样耦合的太紧了，可以在那个页面里包含一个textarea标签，数据都放在它里面（这样可以支持任意内容和格式的字符串），然后用父页面里的JS去操作


用iframe跨域的缺点就是父页面里必须加 document.domain = &quot;[一级域名]&quot;，可能会产生一些无法预料的问题，比如在firefox里，document.styleSheets的cssRules会失效</description>
		<content:encoded><![CDATA[<p>土豆网播放页的评论就是用iframe来跨域获取的……不过方法是在iframe的src里调用一个包含ajax方法的页面，然后父页面调用这个方法来发起跟子页面同域名下的ajax请求。</p>
<p>我做了一个通用的crossdomain.html :</p>
<p><a href="http://comments.tudou.com/crossdomain/index.html" rel="nofollow">http://comments.tudou.com/crossdomain/index.html</a></p>
<p>此外也可以直接用iframe的src来请求数据，不过不推荐把JS也写在src请求的页面里，那样耦合的太紧了，可以在那个页面里包含一个textarea标签，数据都放在它里面（这样可以支持任意内容和格式的字符串），然后用父页面里的JS去操作</p>
<p>用iframe跨域的缺点就是父页面里必须加 document.domain = &#8220;[一级域名]&#8220;，可能会产生一些无法预料的问题，比如在firefox里，document.styleSheets的cssRules会失效</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: NetPuter</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-117086</link>
		<dc:creator>NetPuter</dc:creator>
		<pubDate>Sat, 27 Dec 2008 14:45:00 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-117086</guid>
		<description>好,好有技术味道的讨论..!
感觉用iframe和ajax是不能比的吧..</description>
		<content:encoded><![CDATA[<p>好,好有技术味道的讨论..!<br />
感觉用iframe和ajax是不能比的吧..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sobo</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-114008</link>
		<dc:creator>sobo</dc:creator>
		<pubDate>Fri, 19 Dec 2008 02:58:00 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-114008</guid>
		<description>我用的是表格分块布局，iframe 中src来调用做好的每一个小块，感觉还不错。（:&gt;）本人是初学者。来看看师兄们。</description>
		<content:encoded><![CDATA[<p>我用的是表格分块布局，iframe 中src来调用做好的每一个小块，感觉还不错。（:&gt;）本人是初学者。来看看师兄们。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robin</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-113476</link>
		<dc:creator>Robin</dc:creator>
		<pubDate>Mon, 15 Dec 2008 02:30:17 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-113476</guid>
		<description>刚好最近也被这个问题困扰着. 通过XHR方式请求页面后退按钮不能用,被请求页面事件绑定比较麻烦,看不到源代码或许对SE不友好...   对于复杂的后台管理系统frame或许更有优势.</description>
		<content:encoded><![CDATA[<p>刚好最近也被这个问题困扰着. 通过XHR方式请求页面后退按钮不能用,被请求页面事件绑定比较麻烦,看不到源代码或许对SE不友好&#8230;   对于复杂的后台管理系统frame或许更有优势.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vsky</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-112996</link>
		<dc:creator>vsky</dc:creator>
		<pubDate>Thu, 11 Dec 2008 02:04:17 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-112996</guid>
		<description>个人认为比较而言，Iframe在跨域和可用性上是有优势的。但是使用Iframe也带来了一些不便，例如载入的Iframe的高度计算、父窗口和Iframe之间的JS交互更复杂了。</description>
		<content:encoded><![CDATA[<p>个人认为比较而言，Iframe在跨域和可用性上是有优势的。但是使用Iframe也带来了一些不便，例如载入的Iframe的高度计算、父窗口和Iframe之间的JS交互更复杂了。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aw Guo</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-111595</link>
		<dc:creator>Aw Guo</dc:creator>
		<pubDate>Tue, 02 Dec 2008 08:55:08 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-111595</guid>
		<description>用户为什么要访问partial？</description>
		<content:encoded><![CDATA[<p>用户为什么要访问partial？</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: realazy</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-111458</link>
		<dc:creator>realazy</dc:creator>
		<pubDate>Mon, 01 Dec 2008 08:38:45 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-111458</guid>
		<description>@hax 

&gt;&gt;应指向一个具有功能的替代页面……如果是XHR读入，则可先过滤掉此段脚本，甚至可以不用管——因为直接插入到innerHTML中的脚本并不会被执行……
完美主义可以理解，但在现实中大部分情况下时间和金钱预算并不允许你做得十全十美。假设我们没有金钱或时间去实现替换页面，使用相同的页面来做用户“误闯”看到的页面和提供数据，你认为 xhr 还是 iframe 更有优势？注意 iframe 有一个完整的 JS 执行环境以及 CSS 控制环境，能挥洒舞台更大。

&gt;&gt;……去到那个链接的结果是“闲人免进”，那么写出来这个链接又有什么意义呢？跳转只是欲盖弥彰而已，因为跳转的结果并不符合用户的期望（除非你能完整的恢复犯罪现场，使得跳转的结果和直接点击的效果一致）……
唉，我承认我的例子不好，不能很好说明我文章的中心思想。至于跳转的结果和直接点解的效果一致，存在 JS 执行环境的话是比较容易实现的（比如使用 url 的 hash 来做，常见的如 gmail）。

&gt;&gt; 真还不如直接隐藏这个地址，比如换成button或干脆div
那 unobtrusive 哪去了呢？accessibility 何在？

&gt;&gt;……对Web开发者就唐突的很……
既然你是开发者，你肯定能有办法看到它的源码。超越用户使用性的范围我们还是不要讨论为好。</description>
		<content:encoded><![CDATA[<p>@hax </p>
<p>>>应指向一个具有功能的替代页面……如果是XHR读入，则可先过滤掉此段脚本，甚至可以不用管——因为直接插入到innerHTML中的脚本并不会被执行……<br />
完美主义可以理解，但在现实中大部分情况下时间和金钱预算并不允许你做得十全十美。假设我们没有金钱或时间去实现替换页面，使用相同的页面来做用户“误闯”看到的页面和提供数据，你认为 xhr 还是 iframe 更有优势？注意 iframe 有一个完整的 JS 执行环境以及 CSS 控制环境，能挥洒舞台更大。</p>
<p>>>……去到那个链接的结果是“闲人免进”，那么写出来这个链接又有什么意义呢？跳转只是欲盖弥彰而已，因为跳转的结果并不符合用户的期望（除非你能完整的恢复犯罪现场，使得跳转的结果和直接点击的效果一致）……<br />
唉，我承认我的例子不好，不能很好说明我文章的中心思想。至于跳转的结果和直接点解的效果一致，存在 JS 执行环境的话是比较容易实现的（比如使用 url 的 hash 来做，常见的如 gmail）。</p>
<p>>> 真还不如直接隐藏这个地址，比如换成button或干脆div<br />
那 unobtrusive 哪去了呢？accessibility 何在？</p>
<p>>>……对Web开发者就唐突的很……<br />
既然你是开发者，你肯定能有办法看到它的源码。超越用户使用性的范围我们还是不要讨论为好。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hax</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-111454</link>
		<dc:creator>hax</dc:creator>
		<pubDate>Mon, 01 Dec 2008 08:10:50 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-111454</guid>
		<description>“假如用户直接访问 foo.com/partial……假设您是 unobtrusive 的拥护者……用户看到的是代码片段，绝大部分下没有任何样式，也没有任何额外提示，导致用户体验的下降。”
这是自相矛盾的！如果是unobtrusive，则不应允许链接是指向一个partial的，而应指向一个具有功能的替代页面。
同样的，在第二种情况下，如果禁用JS会发生什么情况呢？

退一步说，我们只考虑启用JS的情形，那么第一种情况也完全可以实现与第二种相同的行为，片段中直接跳转即可。如果是XHR读入，则可先过滤掉此段脚本，甚至可以不用管——因为直接插入到innerHTML中的脚本并不会被执行。要测试这一点，只要把你的示例中的xhr-link也指向到iframe.html就可以了。要偷懒的，可以打开示例，然后在地址栏执行 javascript:void(document.getElementById(&#039;xhr-link&#039;).href=&#039;iframe.html&#039;) 。

注意我并不是在赞同这种做法。归根到底，问题在于标记是否合理。在A标记中href指向一个html片段是什么意思呢？想要表达什么语义呢？去到那个链接的结果是“闲人免进”，那么写出来这个链接又有什么意义呢？跳转只是欲盖弥彰而已，因为跳转的结果并不符合用户的期望（除非你能完整的恢复犯罪现场，使得跳转的结果和直接点击的效果一致）。真还不如直接隐藏这个地址，比如换成button或干脆div。

最后，假如你一定要在href里写上partial页的地址，那么跳转这点用心，对于用户来说算是不唐突吧。但是对Web开发者就唐突的很。Web开发者知道你是一个partial页面，那进来肯定是要看你的源码。所以至少你可以对Web开发者友好一点，不要直接跳，而是在网页中显示文字说明和链接，等5秒再自动跳转，方便Web开发者停止跳转，查看网页源码。</description>
		<content:encoded><![CDATA[<p>“假如用户直接访问 foo.com/partial……假设您是 unobtrusive 的拥护者……用户看到的是代码片段，绝大部分下没有任何样式，也没有任何额外提示，导致用户体验的下降。”<br />
这是自相矛盾的！如果是unobtrusive，则不应允许链接是指向一个partial的，而应指向一个具有功能的替代页面。<br />
同样的，在第二种情况下，如果禁用JS会发生什么情况呢？</p>
<p>退一步说，我们只考虑启用JS的情形，那么第一种情况也完全可以实现与第二种相同的行为，片段中直接跳转即可。如果是XHR读入，则可先过滤掉此段脚本，甚至可以不用管——因为直接插入到innerHTML中的脚本并不会被执行。要测试这一点，只要把你的示例中的xhr-link也指向到iframe.html就可以了。要偷懒的，可以打开示例，然后在地址栏执行 javascript:void(document.getElementById(&#8216;xhr-link&#8217;).href=&#8217;iframe.html&#8217;) 。</p>
<p>注意我并不是在赞同这种做法。归根到底，问题在于标记是否合理。在A标记中href指向一个html片段是什么意思呢？想要表达什么语义呢？去到那个链接的结果是“闲人免进”，那么写出来这个链接又有什么意义呢？跳转只是欲盖弥彰而已，因为跳转的结果并不符合用户的期望（除非你能完整的恢复犯罪现场，使得跳转的结果和直接点击的效果一致）。真还不如直接隐藏这个地址，比如换成button或干脆div。</p>
<p>最后，假如你一定要在href里写上partial页的地址，那么跳转这点用心，对于用户来说算是不唐突吧。但是对Web开发者就唐突的很。Web开发者知道你是一个partial页面，那进来肯定是要看你的源码。所以至少你可以对Web开发者友好一点，不要直接跳，而是在网页中显示文字说明和链接，等5秒再自动跳转，方便Web开发者停止跳转，查看网页源码。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: realazy</title>
		<link>http://chen.xianan.name/blog/2008/11/30/benifit-of-fecthing-page-via-iframe/comment-page-1/#comment-111423</link>
		<dc:creator>realazy</dc:creator>
		<pubDate>Mon, 01 Dec 2008 05:31:39 +0000</pubDate>
		<guid isPermaLink="false">http://realazy.org/blog/?p=186#comment-111423</guid>
		<description>@Jerry Qu 我想你误解了文章的意思。

@Sparkle 或许我举的例子不合适。我想说明的是使用 iframe 有一个完整的 js 执行环境，比使用 o.responseText 更容易控制。</description>
		<content:encoded><![CDATA[<p>@Jerry Qu 我想你误解了文章的意思。</p>
<p>@Sparkle 或许我举的例子不合适。我想说明的是使用 iframe 有一个完整的 js 执行环境，比使用 o.responseText 更容易控制。</p>
]]></content:encoded>
	</item>
</channel>
</rss>
