不使用Javascript的Blogger中的跨域导航



设置:我在blog.mydomain.com的域名上设置了一个Blogger博客。mydomain.com上的主网站正在运行Umbraco CMS。

问题是:我需要以某种方式将CMS的导航传输到Blogger,这样在主网站上进行更改就不需要额外的步骤来修改Blogger内部的导航。

在CMS端以所需的格式(XML、无序列表、JSON等)生成导航数据不是问题。问题是在生成数据后将数据从Umbraco获取到Blogger。

我还不愿意使用Javascript,因为这会严重损害用户在没有Javascript的情况下浏览的网站。(太糟糕了,因为AJAX将是一个非常可行的解决方案。)

我反复考虑过使用iFrame的想法。对于包含子菜单的导航系统,这将如何工作?创建和删除多个iframe是不可能的,因为我不想使用Javascript。我可以使用一个大的iframe来允许子菜单,但它会覆盖内容区域顶部的内容,使其不可点击。

我正在考虑如何做到这一点,但在我这样做的同时,javascript已经变得非常普遍。大多数用户都会拥有它,而那些禁用了它的用户真的不应该在网上。这是你不想使用javascript的唯一原因吗?根据YDN的数据,大约2%的人患有js残疾,这一比例低于其他国家。随着时间的推移,2%应该会降低,我不认为这是一个问题。然而,如果你绝对不会使用javascript,我会继续思考。我可能有个主意,不过我需要测试一下。

由于同源策略,不可能使用IFrame。两个站点都在不同的域上,当用户单击IFrame中的菜单项时,无法调用父窗口。

几乎没有什么方法可以做到这一点。

1) Javascript解决方案。使用json rpc或其他跨域调用。从CMS加载菜单并呈现它。是的,这需要javsascript,但说真的,给我看这个网站,它不使用javascript。

2) 直接服务器通信。是否可以从博客执行http调用?如果是这样,只需从Blogger对您的CMS执行http调用,获取数据并渲染即可。

3) 混合flash/javascript解决方案。Flash可以执行http调用,而不考虑同源策略。使用flash获取数据,使用ExternalInterface调用Javascript函数来渲染数据。

没有其他方法可以做到这一点。我建议您使用javascript解决方案

您可以在Blogger中构建一个空URL的HTML框架(您可能需要的最大值)来保存导航内容,然后链接到Umbraco生成的外部样式表。

该样式表可以使用:before和:after伪元素用CSS生成的内容填充这些LI,并使用CSS display:none隐藏未使用的LI。

例如:http://jsfiddle.net/5bXja/1/

这在IE8+中有效,因此根据您的客户端,这可能比Javascript得到更广泛的支持,也可能不会。可能不会。;-)

相关内容

  • 没有找到相关文章

最新更新