ナットシェルIの趣味としてプログラムします。私はSafari 5のSQLiteデータベースにデータを挿入しようとしています。Safari 5:Javascript sqlite 'insert transaction'はスコープ内の変数が正しく表示されないようです
私は、自宅で焼いた拡張機能を使用しているため、注入攻撃を心配していません。これは私が訪れたサイトからデータを収集するためです。
私の動作は、「DOM変更イベント」からのデータを含むループの反復ごとに最大20回程度の反復をINSERTすると、渡された変数が正しく表示されません。 'console.log(変数)'を呼び出すと、正しいデータが含まれていることが示されますが、INSERTはレコードごとに正しい(異なる)データを挿入しません。他の不正行為と同じ範囲)。
私は「労働者」が重要であることを読んだが、それについては何も知らない。
N.B. Windows 7 Pro
ありがとうございました。ありがとうございました。
enter code here: HandleDOM_Change = function() {
for (p=0; p<snip.length; p++) {
title = snip[p].getElementsByClassName('title')[0].firstChild.textContent;
value = snip[p].getElementsByClassName('value')[0].firstChild.textContent;
lang = snip[p].getElementsByClassName('lang')[0].textContent;
if (hP[p] != lang) {
++count;
id = count;
db.transaction(function (tx) {
console.log("events:" +events+ " title:" +title+ " value/p+1/lang: " +value+ ", " +(p+1)+ ", " +lang);
tx.executeSql('INSERT INTO foo (id, text, time, name) VALUES (?, ?, ?, ?)', [id, title, value, lang]);
},myTransactionErrorCallback,myTransactionSuccessCallback);
hP[p] = lang;
}
}
++events;
}
//グローバル変数:イベントはINTEGER、ARRAYをチョキ、愚かな構文の問題を許しなさいINTEGER を数えるには - しかし、本質の遺跡 - 私はそれを読みやすくするためにいくつかのもみ殻を削除する必要がありましたコンソールログにはvarsに必要なものが含まれているとレポートされますが、 'tx.executeSql'にはnoと表示されます。
N.B.問題を見つけるために、すべての制約が挿入された値から削除されました。たとえ主キーが宣言に主張されていなくても(これはグローバルレベルで先に行われます)。また明確にするために、 'id'は正しくインクリメントされ、dbにそのように記録されますが、他の3つは変わらない値で挿入されます(ログがIDを出力しないことに気づきました。清潔にする前に - 正直に)。
多くのありがとうございます。
私たちのお手伝いをするためにコードを投稿する必要があります。 – thirtydot
ようこそStackOverflowへ。カップルの指針...あなたが周りにいたい場合は、アカウントを登録してください。あなたの登録されていない2つのアカウントをマージしました。登録されていないと、複数のアカウントを簡単に作成できます。また、いつでも質問を編集して追加情報を追加することができます。最後に、数日後にソリューションとして回答を選択することができます。ちょっと変わったようですが、それがこれらの部分をどのように処理するかです。 – Will