4

目前,我在一个具有多种语言的大型网站上面临着一个令人讨厌的问题。到达网站后,它会检测您来自哪个国家/地区并提示您确认。确认后,它会从数据库中换出页面语言并显示相关语言。这是使用 jQuery 完成的。现在的问题是阿拉伯语读取 rtl,所以我需要:

-- 将样式表换成“rtl”版本

或者

-- 更改 HTML 标记并包含 "dir='rtl'" arrtribute

现在,我已经尝试了这两种方法,但都失败了。当我查看页面源代码时,它仍然显示没有“dir”属性的旧 Css 文件或 HTML 标记。如果我错了,请纠正我,但我认为这是由于 DOM 没有注册新的更改,因为它们是在 DOM 被实例化后通过 jQuery 异步发生的。

毕竟那些废话和tldr;
有没有更简单的方法来动态交换文本方向?如果这是一个 DOM 问题,我如何在异步回调后重新加载 DOM?

我已经在这个问题上待了几个小时,并且在 interwebz 上运气不佳。

欢迎并非常感谢任何和所有帮助。

亲切的问候,

威廉·弗朗西斯

编辑:

经过大量调查,我发现真正以阿拉伯语方式工作的唯一方法是回发。一旦选择了语言,您就可以进行回发,然后它只是一个从后面的代码更改样式表 HREF 属性的简单过程。似乎没有任何形式的 JavaScript 或 jQuery 可以在没有回发的情况下更改它并且仍然反映新的样式表。注意:您需要在每次回发时设置样式表 HREF,即通过母版页。样式表更改不会跨页面持续存在。

这是一个帮助很大的网站,它解释了很多关于使用 JavaScript 更改样式表的内容。可悲的是,它对我不起作用。

http://www.alistapart.com/articles/alternate/

4

1 回答 1

0

可能有几件事正在发生。当我处理类似的事情时,我发现这个页面非常有帮助,所以我强烈推荐它:

http://www.w3.org/International/tutorials/bidi-xhtml/

此外,如果您还没有这样做,请使用 Firebug 之类的工具在 AJAX 运行后检查生成的 DOM,以确保您看到的是 DOM 的更改状态,而不是页面的初始源。可以动态更改目录——您可以使用 Firebug 将新属性添加到该页面的 HTML 标记(设置 dir="rtl")以查看它动态更改。可能是某些其他元素覆盖了方向,可能是 AJAX 更改未正确加载或其他原因。如果您可以发布更多代码,那么给出更好的答案会很有帮助,但我希望这会有所帮助。

于 2012-11-21T17:33:24.610 回答