長いタイトルで申し訳ありませんが、問題の適切な表現です。
WordPress Web サイトで AJAX を使用して内部ページをロードしようとしています。この機能は機能していますが、内部ページをロードするときに、これらの内部ページでロードして実行することを意図した Javascript/jQuery が実行/ロードされていません。
問題を確認してから再現するには、次の 2 つの手順があります。
1st - このページを見てください: http://www.trekradio.net/dev/schedule - このページにはスケジュールが含まれています - 日はタブで、スケジュール項目をクリックすると、jQuery ポップアップが開きます。Javascript は右側のサイドバーでも使用されています。「support us」ウィジェットでは、ドロップダウンは JS ベースであり、Twitter フィードは Twitter API スクリプトを使用して読み込まれます。ご覧のとおり、すべてのスクリプトが存在し、正常に動作しています。
2 番目 - http://www.trekradio.net/dev/ - メイン ページに移動し、メイン メニューの [スケジュール] をクリックします。AJAX を使用してスケジュール ページをロードしますが、ページ上のすべてのスクリプトが見つからないか、実行されていません。
これを解決するために多くのことを試しました.スケジュールページでは、いくつかのスクリプトがページ自体に埋め込まれています.ヘッダーがリロードされないため、スクリプトが実行されることを期待して、これらをヘッダーに移動しようとしました. - 彼らはしませんでした。
また、ここに記載されている解決策を試みました: Executing <script> within <div> received by AJAX - 動的スクリプト パターンの使用について説明していますが、正しく機能させる機能がないか、機能しません。私が達成しようとしていることの文脈で適切に。
ここで提案されているソリューションも使用してみました.jquery html()はスクリプトタグを取り除きますが、やはり動作しませんでした.
ajax機能を強化している私のajax.jsの内容は次のとおりです。
jQuery(document).ready(function($) {
var $mainContent = $("#ajax-content-container"),
siteUrl = "http://" + top.location.host.toString(),
url = '';
$(document).delegate("a[href^='"+siteUrl+"']:not([href*=/wp-admin/]):not([href*=/wp-login.php]):not([href$=/feed/])", "click", function() {
location.hash = this.pathname;
return false;
});
$("#searchform").submit(function(e) {
location.hash = '?s=' + $("#s").val();
e.preventDefault();
});
$(window).bind('hashchange', function(){
url = window.location.hash.substring(1);
if (!url) {
return;
}
url = url + " #main-content-container";
$mainContent.animate({opacity: "0.1"}).html('<p>Please wait...</>').load(url, function() {
$mainContent.animate({opacity: "1"});
});
});
$(window).trigger('hashchange');
});
Google で調べたところ、多くの人が AJAX Web サイトでこの種の問題を抱えており、読み込まれたページでスクリプトを実行するのに苦労しています。私は自分のウェブサイトに申請できますが、他の人も自分のウェブサイトで使用できます。
人々が回答にコードを含めるか、少なくとも必要なことを達成するためにコードを変更する方法を明確に説明していただければ幸いです。私はまだjQuery/AJAXを学んでいるので、おそらく私は愚かで比較的単純な解決策を見落としていますが、十分に文書化された回答は、私だけでなくコミュニティ全体にも高く評価されると思います.