4

私は現在、複数の言語を使用する大規模なWebサイトで厄介な問題に直面しています。ウェブサイトに到着すると、あなたがどこの国から来たのかを検出し、これを確認するように促します。確認すると、DBからページの言語を交換し、関連する言語を表示します。これはjQueryを使用して行われます。ここで問題となるのは、アラビア語がrtlを読み取るため、次のいずれかを行う必要があります。

--スタイルシートを「rtl」バージョンに交換します

また

--HTMLタグを変更し、「dir='rtl'」を含める

今、私はこれらの両方を試しましたが、両方で失敗しました。ページソースを表示すると、「dir」属性のない古いCssファイルまたはHTMLタグが表示されます。私が間違っている場合は訂正してください。ただし、これは、DOMがインスタンス化された後、jQueryを介して非同期で行われたため、DOMが新しい変更を登録していないことが原因であると考えています。

結局のところ、何とか何とかとtldr;
テキストの方向を動的に入れ替える簡単な方法はありませんか?これがDOMの問題である場合、非同期コールバックの後にDOMをリロードするにはどうすればよいですか?

私はこの問題に何時間も関わっており、interwebzではほとんど運がありませんでした。

ありとあらゆる助けを歓迎し、大いに感謝します。

敬具、

ウィリアム・フランシス

編集:

多くの調査の結果、アラビア語の方法を真に機能させる唯一の方法は、ポストバックを使用することであることがわかりました。言語を選択したら、ポストバックを実行します。その後、コードビハインドからスタイルシートHREF属性を変更するという単純なプロセスです。ポストバックなしで変更でき、新しいスタイルシートを反映できるJavaScriptやjQueryの形式はないようです。注:各ポストバックで、つまりマスターページを介してスタイルシートHREFを設定する必要があります。スタイシートの変更はページ間で持続しません。

これは、JavaScriptを使用したスタイルシートの変更について非常に役立ち、多くのことを説明しているWebサイトです。悲しいことに、それは私にとってはうまくいきませんでした。

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

4

1 に答える 1

0

いくつかのことが起こっている可能性があります。同様のことを扱っていたときに、このページが非常に役立つことがわかったので、強くお勧めします。

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

また、まだ行っていない場合は、Firebug などのツールを使用して、AJAX の実行後に生成された DOM を調べて、ページの初期ソースではなく、DOM の変更された状態が表示されていることを確認してください。dir を動的に変更することできます。Firebug を使用して、このページの HTML タグに新しい属性を追加し (dir="rtl" を設定)、動的に変更されることを確認できます。他の要素が方向をオーバーライドしている可能性があります。AJAX の変更が正しく読み込まれていない可能性があります。もっと多くのコードを投稿できる場合は、より良い回答を提供していただけると助かりますが、これがお役に立てば幸いです。

于 2012-11-21T17:33:24.610 に答える