質問: $active_page) { $content .= '<span class="activepage"><b>'.$i.'</b></span>'; } else { $content .= '<span onclick="jcomments.showpage('.$object_id.', \''.$object_group.'\', '.$i.');" class="page" onmouseover="this.classname=\'hoverpage\';" onmouseout="this.classname=\'page\';" >'.$i.'</span>'; } } if ($lp < $total_page) { $content .= '<span onclick="jcomments.showpage('.$object_id.', \''.$object_group.'\', '.($lp+1).');" class="page" onmouseover="this.classname=\'hoverpage\';" onmouseout="this.classname=\'page\';" >&raquo;</span>'; } return $content; } } return ''; }
回答: 最初に:あなたの質問とあなたが提供した多くの詳細が好きです。 stackexchangeで、正確かつ詳細に質問を適切に、明確に質問できる人が好きです。これは、実際の開発者をまったく無知な人々から分離します。だから私はあなたの質問が好きですが、正直なところ、あなたの質問を理解するのにかなり時間がかかりました。質問の観点から実際には長く、プロジェクトの無関係な詳細は、質問が何であるかについて少し混乱を引き起こす可能性があります。同じことが何度も私と同じように起こり、自分の問題について質問する方法がわからないのも事実です。したがって、正しい質問は通常、どこかで答えそのものを受け入れます。 :) あなたの質問は簡単です:javascriptまたはjqueryを起動する方法script ajax呼び出し。より正確には、ajax呼び出しが完了した後任意のajax呼び出し 。 :)これは、今ではとても簡単です。 もちろん、これはあなたの前の何百万人もの開発者の質問でしたので、jqueryはこれに対するソリューションを持っています。jquery.ajaxcomplete()関数を使用する必要があります。この関数は、任意のajaxリクエストがページで終了したときに点火します。 ajax呼び出しは完了時にグローバルajaxイベントでもあるため。これらのイベントはドキュメントでトリガーされ、待機している可能性のあるハンドラを呼び出します。したがって、私の提案は、youtube動画のソースを読み込むためのjavascriptスクリプトが既に正常に機能しているためです。次に、それをラップするか、jquery。ajaxcomplete()関数で次のように呼び出します。$ = jquery.noconflict(); $( document ).ajaxcomplete(function() { videolistload(); }); function videolistload () { var youtube = document.queryselectorall( ".youtube" ); for (var i = 0; i < youtube.length; i++) { var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/hqdefault.jpg"; var image = new image(); image.src = source; image.addeventlistener( "load", function() { youtube[ i ].appendchild( image ); }( i ) ); youtube[i].addeventlistener( "click", function() { var iframe = document.createelement( "iframe" ); iframe.setattribute( "frameborder", "0" ); iframe.setattribute( "allowfullscreen", "" ); iframe.setattribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); this.innerhtml = ""; this.appendchild( iframe ); } ); } } この追加のスクリプトを作成してページ(たとえば、ヘッド内)にロードし、これを試してフィードバックを提供してください(もちろん、私はこれをページで試していません)。サイトの元のスクリプトには触れないでください。そのままにしておく必要があります。したがって、通常のページ読み込み用とページネーションなどのajaxイベント用の2つの同様のスクリプトがあります。それがあなたにとって明確であることを確認するためだけに。このjquery関数の詳細はこちら: http://api.jquery.com/ajaxcomplete/ 最初のjavascript関数は、次のような他の方法でバインドできます。$(document).bind("ajaxcomplete", function(){ ...// your function... }); しかし、私はあなたがあなたのページで使用できる例をあなたに与えたかっただけです。これで問題が解決することを願っています。(もちろん、これは後で他の新しい質問を開始する可能性があります。たとえば、この機能をページ上の他の無関係なajaxリクエストからアンバインドする方法ですが、それは別の日の質問です)[〜#〜]更新[〜#〜]これで、上記が機能しない可能性があります(ajax呼び出しがjquery ajaxでない場合)が、非常に良いように聞こえる場合、次の価値あるアプローチは、ajaxで.js関数(スクリプト)をロードするビデオソースを構築することですこの関数をこのように起動する必要がある.js関数。そこで、編集したajax.jsファイルをここにコピーし、ファイルの代わりにこれを使用してください(元のajax.jsファイルを保持してください!!古いajax.jsなどの名前に変更できます)。ajax応答が処理された後、videoloading関数を組み込みました。したがって、この方法で成功するかどうかがわかります。/* based on xajax javascript library (http://www.xajaxproject.org) */ if (!window.jtajax) { function jtajax() { this.options = {url: '',type: 'post',nocache: true,data: ''}; this.$ = function(id) {if(!id){return null;}var o=document.getelementbyid(id);if(!o&&document.all){o=document.all[id];}return o;}; this.extend = function(o, e){for(var k in (e||{}))o[k]=e[k];return o;}; this.encode = function(t){return encodeuricomponent(t);}; this.setup = function(options) {this.options = this.extend(this.options, options);}; this.xhr = function() { var xhr = null; if ('undefined' != typeof xmlhttprequest) xhr = new xmlhttprequest(); if (!xhr && 'undefined' != typeof activexobject) { var msxmlhttp = new array('msxml2.xmlhttp.4.0','msxml2.xmlhttp.3.0','msxml2.xmlhttp','microsoft.xmlhttp'); for (var i=0;i<msxmlhttp.length;i++){try{xhr=new activexobject(msxmlhttp[i]);}catch(e){xhr=null;}} } return xhr; }; this.form2query = function(sid) { var frm = this.$(sid); if (frm && frm.tagname.touppercase() == 'form') { var e = frm.elements, query = []; for (var i=0; i < e.length; i++) { var name = e[i].name; if (!name) continue; if (e[i].type && ('radio' == e[i].type || 'checkbox' == e[i].type) && false === e[i].checked) continue; if ('select-multiple' == e[i].type) { for (var j = 0; j < e[i].length; j++) { if (true === e[i].options[j].selected) query.push(name+"="+this.encode(e[i].options[j].value)); } } else { query.push(name+"="+this.encode(e[i].value)); } } return query.join('&'); } return ''; }; this.startloading = function(){}; this.finishloading = function(){}; this.ajax = function(options) { var xhr = this.xhr(); if (!xhr) return false; var o = this.extend(this.options, options); var url = o.url, jtx = this;url=url.replace(/&amp;/g,'&'); var r=url;var h=location.hostname,d,i1,i2;i1=r.indexof('://');if(i1!=-1){i2=r.indexof('/',i1+3);if(i2!=-1){d=r.substring(i1+3,i2);if(d!=h){if(location.port!=''){h=h+':'+location.port;}r=r.replace(d,h);url=r;}}} if ('get' == o.type) { if (true === o.nocache) { var ts=new date().gettime(); url += (url.indexof("?")==-1 ? '?' : '&') + '_jtxr_' + ts; } if (o.data) { url += (url.indexof("?")==-1 ? '?' : '&') + o.data; o.data = null; } } xhr.open(o.type.touppercase(), url, true); if ('post' == o.type) try {xhr.setrequestheader("content-type", "application/x-www-form-urlencoded");}catch(e){} if (true === o.nocache) xhr.setrequestheader('if-modified-since', 'thu, 01 jan 1970 00:00:00 gmt'); xhr.onreadystatechange = function() { if (xhr.readystate != 4) return; jtx.finishloading(); if (xhr.status==200) { jtx.processresponse(xhr.responsetext); } delete xhr; xhr = null; }; try { jtx.startloading(); xhr.send(o.data); } catch(e) { jtx.finishloading(); } delete jtx; delete xhr; delete o; return true; }; this.call = function(sfunction, aargs, stype, sform) { var params = 'jtxf=' + this.encode(sfunction); if (aargs) { for (var i=0;i<aargs.length;i++) { params += '&jtxa[]=' + this.encode(aargs[i]); } } else if (sform) { params += '&' + this.form2query(sform); } this.ajax({type: stype, data: params}); return true; }; this.processresponse = function(stext) { if(stext==='') return false; if(stext.substring(0,3)!='[ {'){var idx=stext.indexof('[ {');stext=stext.substr(idx);} var result;try {result=eval(stext);}catch(e){} if ('undefined' == typeof result) {return false;} var cmd, id, property, data, obj = null; for (var i=0;i<result.length;i++) { cmd = result[i]['n']; id = result[i]['t']; property = result[i]['p']; data = result[i]['d']; obj = this.$(id); switch(cmd) { case 'as': if(obj){eval("obj."+property+"=data;");} break; case 'al': if(data){alert(data);} break; case 'js': if(data){eval(data);} break; default: this.error('unknown command: ' + cmd);break; } } delete result; delete cmd; delete id; delete property; delete data; delete obj; this.videolistload(); return true; }; this.error = function(){}; this.videolistload = function() { var youtube = document.queryselectorall( ".youtube" ); for (var i = 0; i < youtube.length; i++) { var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/hqdefault.jpg"; var image = new image(); image.src = source; image.addeventlistener( "load", function() { youtube[ i ].appendchild( image ); }( i ) ); youtube[i].addeventlistener( "click", function() { var iframe = document.createelement( "iframe" ); iframe.setattribute( "frameborder", "0" ); iframe.setattribute( "allowfullscreen", "" ); iframe.setattribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); this.innerhtml = ""; this.appendchild( iframe ); } ); } }; } var jtajax = new jtajax(); }