この記事は、あなた自身がサイトがどのように機能するかを把握でき、その情報がアプリケーションに表示されることを暗示しています。
いくつかのサイトを通じて承認に関する最後の記事を読んだ人は、phoneGapにはAppBrowserに素晴らしいものがあることを知っています。これは、アプリケーション内にサイトを開くだけでなく、JavaScriptコードを埋め込み、スタイルを変更できるため、承認フォームに役立ちます。
それに基づいて、承認のイメージと似姿で、次のコードがハブに書き込まれました。
var plugin_www_post_tracker_ru = { wwwref: false, authOk: false, auth: function (force) { if (!window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID") || force) { // var authURL="http://post-tracker.ru/login.php"; this.wwwref = window.open(encodeURI(authURL), '_blank', 'location=no'); // this.wwwref.addEventListener('loadstop', this.auth_jsinjection); // } else { plugin_www_post_tracker_ru.authOk=true; } }, auth_event_url: function (url) { var tmp=url_parser.get_args_cookie(url); // if (tmp['PHPSESSID'] && tmp['userid'] && tmp['securehash']) { // , plugin_www_post_tracker_ru.wwwref.close(); // window.localStorage.setItem("plugin_www_post_tracker_ru_PHPSESSID", tmp['PHPSESSID']); window.localStorage.setItem("plugin_www_post_tracker_ru_userid", tmp['userid']); window.localStorage.setItem("plugin_www_post_tracker_ru_securehash", tmp['securehash']); plugin_www_post_tracker_ru.authOk=true; } }, auth_cssinjection: function(){ plugin_www_post_tracker_ru.wwwref.insertCSS({code:".topline {display:none} .top {display:none} .logo {display:none} .menu {display:none} .counters {display:none} .bottom {display:none} .links {display:none} @-viewport {width: device-width; zoom: 1;"},function(){}); }, auth_jsinjection: function () { plugin_www_post_tracker_ru.auth_cssinjection(); // CSS , plugin_www_post_tracker_ru.wwwref.executeScript({ // JS code: "document.cookie;" }, function(arg) { plugin_www_post_tracker_ru.auth_event_url(arg); }); } }
コンテンツを取得するには、POSTおよびGETリクエストを作成できる小さなAJAXライブラリを使用します。これにより、Cookieを挿入し、結果をコールバック関数に返すことができます(ベースはminiajaxから取得されます )。
アヤックス
var ajax = { init: function(){ return new XMLHttpRequest(); }, send: function(url,method,args,cookies,async,_callback){ var q=ajax.init(); q.open(method,url,async); q.onreadystatechange=function(){ if(this.readyState==4 && this.status==200) { _callback(this.responseText); } }; if (cookies) { q.setRequestHeader('Cookie',cookies); } if(method=='POST') { q.setRequestHeader('Content-type','application/x-www-form-urlencoded'); q.send(args); } else { q.send(null); } } }
コンテンツを取得するには、post-tracker.ru / my /ページにGETリクエストを同時に送信します。ブロックの1つで応答が返された場合、
、明らかにログアウトされ、手順を再度実行する必要があります。
get_content: function (async) { // var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); // cookie plugin_www_post_tracker_ru.dataReady=false; ajax.send("http://post-tracker.ru/my/",'GET',null,cookies,async,this._parse_content); // ajax }, _parse_content: function (data) { var wrapper=document.createElement('div'); // html , wrapper.innerHTML=data; plugin_www_post_tracker_ru._get_inside_data(wrapper,'trackcode,date,status,comment'); // , , }, _get_inside_data: function (wrapper,types) { var tmp=wrapper.getElementsByClassName('login')[0].innerHTML; // div login if (tmp=='<a href="/login.php"></a> <a href="/register.php"></a>') { // , plugin_www_post_tracker_ru.auth(true); } else { // plugin_www_post_tracker_ru.default_folder=wrapper.getElementsByTagName('input')[0].value; // ID , var types=types.split(","); for (var typeid in types) { // html- var tmp=wrapper.getElementsByClassName(types[typeid]); var id=0; for (var i in tmp) { if (tmp[i].innerHTML) { if (!plugin_www_post_tracker_ru.postdata[id]) plugin_www_post_tracker_ru.postdata[id]=new Array(); plugin_www_post_tracker_ru.postdata[id][(types[typeid])]=tmp[i].innerHTML.replace(/(\r\n|\n|\r)/gm,"").replace(/<\/?[^>]+>/gmi,"").replace(/^\s+|\s+$/gm,""); // , html id++; } } } plugin_www_post_tracker_ru.dataReady=true; show_list(); // } }, get_list: function () { // show_list() "" var tmp=new Array(); for (var i in plugin_www_post_tracker_ru.postdata) { tmp[i]="<b>"+plugin_www_post_tracker_ru.postdata[i]['trackcode']+"</b> "+plugin_www_post_tracker_ru.postdata[i]['comment']+"<br/>"+plugin_www_post_tracker_ru.postdata[i]['date']+" "+plugin_www_post_tracker_ru.postdata[i]['status']; } return tmp; }
window.localStorage.getItem( "plugin_www_post_tracker_ru_PHPSESSID")+ ";ユーザーID =" + window.localStorage.getItem( "plugin_www_post_tracker_ru_userid")+ "; securehash =" + window.localStorage.getItem(「plugin_www_post_tracker_ru_securehash get_content: function (async) { // var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); // cookie plugin_www_post_tracker_ru.dataReady=false; ajax.send("http://post-tracker.ru/my/",'GET',null,cookies,async,this._parse_content); // ajax }, _parse_content: function (data) { var wrapper=document.createElement('div'); // html , wrapper.innerHTML=data; plugin_www_post_tracker_ru._get_inside_data(wrapper,'trackcode,date,status,comment'); // , , }, _get_inside_data: function (wrapper,types) { var tmp=wrapper.getElementsByClassName('login')[0].innerHTML; // div login if (tmp=='<a href="/login.php"></a> <a href="/register.php"></a>') { // , plugin_www_post_tracker_ru.auth(true); } else { // plugin_www_post_tracker_ru.default_folder=wrapper.getElementsByTagName('input')[0].value; // ID , var types=types.split(","); for (var typeid in types) { // html- var tmp=wrapper.getElementsByClassName(types[typeid]); var id=0; for (var i in tmp) { if (tmp[i].innerHTML) { if (!plugin_www_post_tracker_ru.postdata[id]) plugin_www_post_tracker_ru.postdata[id]=new Array(); plugin_www_post_tracker_ru.postdata[id][(types[typeid])]=tmp[i].innerHTML.replace(/(\r\n|\n|\r)/gm,"").replace(/<\/?[^>]+>/gmi,"").replace(/^\s+|\s+$/gm,""); // , html id++; } } } plugin_www_post_tracker_ru.dataReady=true; show_list(); // } }, get_list: function () { // show_list() "" var tmp=new Array(); for (var i in plugin_www_post_tracker_ru.postdata) { tmp[i]="<b>"+plugin_www_post_tracker_ru.postdata[i]['trackcode']+"</b> "+plugin_www_post_tracker_ru.postdata[i]['comment']+"<br/>"+plugin_www_post_tracker_ru.postdata[i]['date']+" "+plugin_www_post_tracker_ru.postdata[i]['status']; } return tmp; }
このコードの
show_list()
は、スクローラーを使用してdiv内に準備されたhtmlのブロックを追加します(ところで、 Overthrowをお勧めします。作業速度がひどいため、 iscroll-4をお勧めしません)。
トラッキング用の新しいコードを送信する機能を追加するときが来ましたが、最初にAndroidスマートフォンのMENUボタンにアクションを追加します。 これは、 menubuttonイベントを使用して行われます。 これに「トラックコードを追加」ボタンを使用してブロックの外観をアタッチします。ボタンを押すと、プロセスが開始されます。
put_trackCode: function(){ // " " var trackCode = prompt(" "); // if (trackCode) { this._put_trackCode_getPath(trackCode); // ( ), if (plugin_www_post_tracker_ru.default_path) { // , var comment = prompt(""); if (comment) { this._put_trackCode(trackCode,comment); // } } else { alert(" "); } } else { menuButtonHide(); // , } }, _put_trackCode_getPath: function (trackCode) { // var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); var data="act=getPathForm&trackcode="+encodeURIComponent(trackCode); ajax.send("http://post-tracker.ru/ajax/userTrackcodes.php",'POST',data,cookies,false,this._put_trackCode_getPath_result); }, _put_trackCode_getPath_result: function (data){ var wrapper=document.createElement('div'); // , html wrapper.innerHTML=data; var tmp=wrapper.getElementsByTagName('input'); // input if (tmp.length>0) { plugin_www_post_tracker_ru.default_path=tmp[0].value; // , }else{ plugin_www_post_tracker_ru.default_path=false; } }, _put_trackCode: function (trackCode,comment){ // , var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); var data="act=addTrackcodeAction&folderid="+plugin_www_post_tracker_ru.default_folder+"&trackcode="+encodeURIComponent(trackCode)+"&path="+plugin_www_post_tracker_ru.default_path+"&comment="+encodeURIComponent(comment); ajax.send("http://post-tracker.ru/ajax/userTrackcodes.php",'POST',data,cookies,false,this._put_trackCode_result); }, _put_trackCode_result: function(data){ // menuButtonHide(); // plugin_www_post_tracker_ru.get_content(true); // }
window.localStorage.getItem( "plugin_www_post_tracker_ru_PHPSESSID")+ ";ユーザーID =" + window.localStorage.getItem( "plugin_www_post_tracker_ru_userid")+ "; securehash =" + window.localStorage.getItem(「plugin_www_post_tracker_ru_securehash put_trackCode: function(){ // " " var trackCode = prompt(" "); // if (trackCode) { this._put_trackCode_getPath(trackCode); // ( ), if (plugin_www_post_tracker_ru.default_path) { // , var comment = prompt(""); if (comment) { this._put_trackCode(trackCode,comment); // } } else { alert(" "); } } else { menuButtonHide(); // , } }, _put_trackCode_getPath: function (trackCode) { // var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); var data="act=getPathForm&trackcode="+encodeURIComponent(trackCode); ajax.send("http://post-tracker.ru/ajax/userTrackcodes.php",'POST',data,cookies,false,this._put_trackCode_getPath_result); }, _put_trackCode_getPath_result: function (data){ var wrapper=document.createElement('div'); // , html wrapper.innerHTML=data; var tmp=wrapper.getElementsByTagName('input'); // input if (tmp.length>0) { plugin_www_post_tracker_ru.default_path=tmp[0].value; // , }else{ plugin_www_post_tracker_ru.default_path=false; } }, _put_trackCode: function (trackCode,comment){ // , var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); var data="act=addTrackcodeAction&folderid="+plugin_www_post_tracker_ru.default_folder+"&trackcode="+encodeURIComponent(trackCode)+"&path="+plugin_www_post_tracker_ru.default_path+"&comment="+encodeURIComponent(comment); ajax.send("http://post-tracker.ru/ajax/userTrackcodes.php",'POST',data,cookies,false,this._put_trackCode_result); }, _put_trackCode_result: function(data){ // menuButtonHide(); // plugin_www_post_tracker_ru.get_content(true); // }
window.localStorage.getItem( "plugin_www_post_tracker_ru_PHPSESSID")+ ";ユーザーID =" + window.localStorage.getItem( "plugin_www_post_tracker_ru_userid")+ "; securehash =" + window.localStorage.getItem(「plugin_www_post_tracker_ru_securehash put_trackCode: function(){ // " " var trackCode = prompt(" "); // if (trackCode) { this._put_trackCode_getPath(trackCode); // ( ), if (plugin_www_post_tracker_ru.default_path) { // , var comment = prompt(""); if (comment) { this._put_trackCode(trackCode,comment); // } } else { alert(" "); } } else { menuButtonHide(); // , } }, _put_trackCode_getPath: function (trackCode) { // var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); var data="act=getPathForm&trackcode="+encodeURIComponent(trackCode); ajax.send("http://post-tracker.ru/ajax/userTrackcodes.php",'POST',data,cookies,false,this._put_trackCode_getPath_result); }, _put_trackCode_getPath_result: function (data){ var wrapper=document.createElement('div'); // , html wrapper.innerHTML=data; var tmp=wrapper.getElementsByTagName('input'); // input if (tmp.length>0) { plugin_www_post_tracker_ru.default_path=tmp[0].value; // , }else{ plugin_www_post_tracker_ru.default_path=false; } }, _put_trackCode: function (trackCode,comment){ // , var cookies="PHPSESSID="+window.localStorage.getItem("plugin_www_post_tracker_ru_PHPSESSID")+"; userid="+window.localStorage.getItem("plugin_www_post_tracker_ru_userid")+"; securehash="+window.localStorage.getItem("plugin_www_post_tracker_ru_securehash"); var data="act=addTrackcodeAction&folderid="+plugin_www_post_tracker_ru.default_folder+"&trackcode="+encodeURIComponent(trackCode)+"&path="+plugin_www_post_tracker_ru.default_path+"&comment="+encodeURIComponent(comment); ajax.send("http://post-tracker.ru/ajax/userTrackcodes.php",'POST',data,cookies,false,this._put_trackCode_result); }, _put_trackCode_result: function(data){ // menuButtonHide(); // plugin_www_post_tracker_ru.get_content(true); // }
phoneGapでトレーニングするためにアプリケーションに他に何を追加できますか? まず第一に、 ローカライズは傷つきません。そのため、テキストはコードに保存されず、異なる国ではロシア語のみが表示されません。 また、インターネット接続を失ったり、「戻る」ボタンをクリックしたりするなど、 一部の状態を解決するのに問題はありません。
追跡サービス自体に関しては、リソースが含まれる広告を追加するだけでなく、フォルダー作成、 通知による自動チェック、
プロジェクトのソースコードと、関係者のテストおよび実験用にコンパイルされたアプリケーション 。 また、鈍いフォーク用のgithub github.com/SovGVD/PhoneGap-post-tracker.ru