0

ブラウザーのサイズに基づいて要素のサイズを更新する関数があります。

window.onresize = function() { setContentHeight(); }

ただし、AJAX を使用してテーマを交換した (本文の innerHTML を変更した) ため、この関数を変更する必要があります。新しいテーマには、新しい画像だけでなく、まったく異なるレイアウトも含まれています。そのため、古い onresize 関数は単にページを台無しにします。これを修正するには、次の 2 つの方法を考えました。

方法 1) わずかに変更された関数にパラメーターを渡しますsetContentHeight(themeSelection);。このパラメーターは、switch/case ステートメントで使用されます。長所: テーマのスワップは、渡された変数の値を変更するだけです。短所:setContentHeight(themeSelection);すべてのテーマのコードが含まれ、必要以上に長くなります。

方法 2) XMLHTTPRequest から解析されたスクリプト コードを評価して、関数を上書きします。ただし、JS で既存の関数を変更する方法や、単純に削除して新しい関数を開始する方法がわかりません。長所: 関数は短いままです 短所: 方法がわかりません。

あなたはどちらをしますか、それともまったく別のことをしますか? あなたの答えが方法 2 である場合、それがどのように行われるかについてのリンクを提供できますか? もちろん、ほとんどの作業を自分で行うことに問題はありませんが、推奨される方法である場合は、いくつかのアドバイスと方法 2 の例を使用できます。

4

1 に答える 1

1

本体を変更する場合innerHTML、クラスを追加/削除することもできませんか? または、さらに良いことに、グローバル変数を変更します。

var current_theme = 'some_theme';

function loading_new_theme() {
    ...
    current_theme = 'new_theme';
}

setContentHeight次に、そのグローバル変数に基づいて高さを割り当てることができます。

(また: に引数を渡さない場合はsetContentHeight、次のようにすることもできます:

window.onresize = setContentHeight;

)

于 2011-01-28T06:04:25.357 に答える