【问题标题】:XML, XSLT and JavaScriptXML、XSLT 和 JavaScript
【发布时间】:2010-12-11 23:15:35
【问题描述】:

我在弄清楚如何制作网站的“页面加载”架构时遇到了一些麻烦。

基本的想法是,我将使用 XSLT 来呈现它,但不是使用 XSL 标记的经典方式,而是使用 JavaScript。因此,每个链接都应该引用一个 JavaScript 函数,该函数会改变页面的内容和菜单。

我想这样做的原因是,可以选择让 JavaScript 使用第一个初始 XML 文件中提供的数据动态显示每个页面,而不是对特定页面发出“完整”的服务器请求,缺点太多了。

基本问题是,在网上搜索了使用 JavaScript 访问文档“底层”XML 的解决方案后,我只找到了访问外部 XML 文件的解决方案。

我当然可以将所有 XML 数据“打印”到在文档标题中完全声明的 JavaScript 数组中,但我相信这将是一个非常非常讨厌的解决方案。而且丑陋,就此而言。

因此我的问题是:

  • 有没有可能做我正在做的事 想好了吗?
  • 是否对 SEO 友好 加载的网站页面内容 最初在 XML 文件中?

我的替代方法是按需使用 AJAX 动态加载特定页面的内容。但是,我发现很难找到一种对 SEO 最不友好的方法。我无法想象搜索引擎会执行任何 JavaScript。

如果不清楚,我很抱歉,但这真的把我吓坏了。
提前致谢。

【问题讨论】:

    标签: javascript xml ajax xslt


    【解决方案1】:

    也许以下场景适合你:

    1. 浏览器请求您的 xml 文件。

    2. 一旦加载,与 xml 文件关联的 xslt 就会被执行。结果:你的初始html和一个脚本标签一起输出。

    3. 在 javascript 中,对当前位置进行 ajax 调用以获取“底层”xml-dom。从那时起,您的 javascript 将管理所有的 xml 处理。

    4. 您确保在第 3 步中,xml 不再从服务器加载,而是从浏览器缓存中获取。

    就是这样。

    【讨论】:

      【解决方案2】:

      有没有可能做我想做的事?

      当然。

      将所有网站页面的内容最初加载到 XML 文件中是否对 SEO 友好?

      不,那将是彻底的精神错乱。

      我无法想象搜索引擎会执行任何 JavaScript。

      嗯,不错。它对可访问性也很不利:非 JS 浏览器,或 JS 实现略有不同的浏览器(例如新的保留字)会导致您的脚本出现错误和繁荣!没有页面。除非您通过哈希链接提供适当的导航,否则可用性也会很糟糕。

      全 JavaScript 页面内容创建对于原始 Web 应用程序(臭名昭著的 GMail)可能很有用,但对于内容驱动的网站来说,这将是灾难性的。您基本上必须从客户端为 JS 浏览器构建相同的页面,并为所有其他代理从服务器端构建相同的页面,此时您已经失去了在客户端上进行所有操作的优势。

      像 SO 那样做可能会更好:主要基于 HTML,但通过客户端渐进增强来执行有用的任务,例如检查服务器的更新和打印“这个问题有新的答案”公告。

      【讨论】:

      • 你当然知道你的 JavaScript ;-) 我以为是这样的。从我的角度来看,最终的结论必须是,通过加载特定页面的内容来实现页面请求的流畅性与 SEO 不兼容(并且也缺乏可访问性,但我不同意你的观点) .唯一困扰我的是,我如何使用 JavaScript 访问底层 XML?不要像我之前提到的那样使用它,我向你保证。顺便说一句,谢谢您的回复。
      • 这很简单:对服务器端脚本的快速 AJAX 请求返回该特定功能所需的 XML 的确切部分(作为 XML,或者,现在更常见的是 JSON,以剪切减少令人讨厌的编写客户端 XML-walking 的数量)。
      • 我不太确定您所说的“流畅性”是什么意思...用户习惯于像在浏览器中一样进行导航工作,而现代浏览器将“页面之间”花费在导航上的时间最小化尽可能快。你搞乱这样的预期行为,后果自负!例如,如果您有一个页面执行 AJAX 处理负载,而浏览器通常没有显示导航正在进行的指示,您可能会发现您的用户坐在那里反复点击链接并认为它不起作用。
      • 我不打算为某个功能获取 XML/JSON,例如实时新闻提要,而是要访问提供给我的 XSLT“应用程序”的 XML ;-)。它是如何使用 JavaScript 获取这些数据,而不是通常的 XSL,我不知道该怎么做。平滑意味着,不是整个页面在用户与链接交互时重新加载,而是只有那些应该更改的页面部分才会重新加载——例如,使用 AJAX。这可能是一些菜单,哪些按钮的文本应该改变,以及内容 HTML 可能都在同一个 DIV 中。可能伴随着一些“正在加载......” - 图形;)
      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 2012-08-03
      • 2014-11-02
      • 2010-10-30
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      相关资源
      最近更新 更多