2

スクリプトはいくつかの変数を保持し、いくつかのjQuery処理を実行します。ページが読み込まれたときに実行する必要がありますが、正しく実行されます。

ただし、誰かが最初にロード/作成されたページのリンクをクリックし、そのリンクされたページ(外部、ただしjQuery Mobile)に移動し、戻るボタン(ブラウザーまたはモバイルページのヘッダー内)を押すと、スクリプトが再度実行されます。

ページを再構築する必要がないため、この動作は望ましくありません。そのため、パフォーマンスが低下します。

スクリプトをロードする方法は次のとおりです。

url = $.url();
rawterm = url.param('t').toLowerCase();
term = decodeURIComponent(rawterm).replace(/\+/g, " ");


var script=document.createElement('script');
script.type='text/javascript';
script.src= rawterm + ".js";
$("body").append(script);

呼び出される/作成されるスクリプトには、次のようなものがあります。

tagLimit = 200;

var myName = rawterm;
var myKey = "somekey"
var updatePage = "mtl_u_master.html?t=" + myName;
var tagSearchPage = "mtl_s_master.html?t=" + myName;
var newestPage = "mtl_n_master.html?t=" + myName;


$('#searchPage').attr('href',tagSearchPage);
$('#updatePage').attr('href',updatePage);
$('#newestPage').attr('href',newestPage);

すべての代替アプローチに開放されています。ありがとう!

4

1 に答える 1

2

あなたが言う時 :

ただし、誰かが最初にロード/作成されたページのリンクをクリックすると、そのリンクされたページ (外部ではあるが jQuery Mobile) に移動し、

rel="external" を使用しているということですか。その場合、rel="external" がページ全体の更新を引き起こしているため、仕方がありません。data-role="page" の更新について話しているわけではありません。これは Web ページ全体の更新になります。元のページに戻ると、スクリプトを含むすべてが再度実行されますが、スクリプトが最初に行ったすべてのこと (ページ DOM を含む) がなくなっているため、問題にはなりません。

詳細については、http: //jquerymobile.com/test/docs/pages/page-links.htmlを参照してください。

rel="external" を使用していない場合 (rel="external" は、他のドメインからページをロードする場合にのみ使用する必要があることに注意してください)、問題は簡単に解決できます。次のように、mobileinit イベントを使用するだけです。

$(document).on("mobileinit", function(){
    alert('Executed only once');
});

このイベントは 1 回だけ実行され、次のように、jQuery モバイル js をロードするスクリプト タグの前に配置する必要があります。

<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />     
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" >
$(document).on("mobileinit", function(){
    alert('Executed only once');
});
</script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>    

またはこのように:

<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>

詳細については、http: //jquerymobile.com/test/docs/api/globalconfig.htmlを参照してください。

于 2013-01-05T23:07:16.010 に答える