2017-05-05 6 views
0

現在のCookieを置き換えるスクリプトを作成しようとしていて、Webサイトのリンクに行き、次のCookieを置き換えようとしています。すべてのクッキーは配列に格納されます。 私がこれまでに次のコードを持っている:実際のリンクボタンをクリックせずに特定のリンクを実行する

var i; 
for(i=0;i<arr.length;i++){ 
    var cookie = arr[i]; 
    //setting the new cookie that was fetched from the array: 
    document.cookie = 'cookieName='+cookie+'; path=/'; 
    //Now I need to run the <a href> which links to a relative path 
    //I am currently in www.mydomain.com/page1/subpage1 
    //And the href is to /page1/subpage2.I want the script to run this link every iteration 
} 

は私が実際にJSを使用して、それをクリックせずに/page/subpage2リンクを実行する必要があります。

このリンクは、実際に現在のページを変更していない、それはいくつかのサーバー側のコードを実行されますが、あなたが実際には同じページwww.mydomain.com/page1/subpage1にとどまるのリンクですので、あなたはそれが背中page1/subpage1

にリダイレクトする必要はありません配列内のサイクルに

<table> 
<!--more rows here--> 
<tr>       
<td>       
<a class='table-row' href='/page1/subpage2'> Click </a> 
</td> 
</tr> 
<!--more rows here--> 
</table> 

答えて

0

利用のforEach:シンプルなウェブサイト、およびリンクはその要素にIDをお持ちでない場合、それはそのようなものに見えるのリンクを持つテーブルです。 elをクッキーに関連付け、配列要素を変更します。次に、hrefがついているaをクリックします。

// never define variables inside the loop when possible 
var cookie; 
arr.forEach(function (el, ind) { 
    cookie = el; 
    arr[ind] = 'document.cookie = \"cookieName='+cookie+'; path=/;"'; 
    document.querySelector('a[href="mypath"]').triggerHandler('click'); 
}); 
+0

、クリックがここで悪用された可能性がありますか? – Foobarer

+0

ええ私は説明が本当に明確ではなかったと思う。 正直言って、私はあなたが達成したいことをまだ理解していませんでした。 hrefのクリックに関連するコードを実行したいが、実際にはjsのリンクをクリックしないでください。 – quirimmo

+0

はい、私もコードに間違いがあり、編集しました。誤ってクッキーを設定する代わりに配列に書きました。 さらにいくつかの説明を追加しましたが、あなたのHTMLに – Foobarer

0

新しいclickイベントを作成し、それを下のコードのように送信できます。

この例では、クラスtable-rowのすべてのリンクをループし、動作しているかどうかを確認するためにクリックを聞いて(リンクテキストonClickを二重に)、すべてのリンクに対してclickを送信します。

preventDefault()は、クリックごとにナビゲートしないようにするために使用されます。

より明確なコードにはES6構文が使用されています。私は私がしたいことは、リンクをマウスクリックすることなく、自動的に押されるということですが、JavaScriptコードがリンクを実行することを、正しい単語(クリック)を使用していなかったと思います

const links = document.getElementsByClassName('table-row'); 
 

 
const forEach = o => fn => Array.prototype.forEach.call(o, fn); 
 

 
const arr = []; 
 

 
forEach(links)((link, i) => { 
 
    arr[i] = 'document.cookie = \"cookieName='+link.href+'; path=/;"'; 
 
    
 
    // listen to click just to be able to see it in action 
 

 
    link.addEventListener('click', (e) => { 
 
    e.preventDefault(); // for testing purposes 
 
    const t = document.createTextNode(e.target.textContent); 
 
    e.target.appendChild(t); 
 
    }) 
 
    
 
    // here you generate a click programmatically: 
 

 
    const customClick = new MouseEvent('click', 
 
    { "view": window, "bubbles": true, "cancelable": true }); 
 
    link.dispatchEvent(customClick); // generate click 
 
})
<table> 
 
<!--more rows here--> 
 
<tr>       
 
<td>       
 
<a class='table-row' href='/relative/path1'> Click1 </a> 
 
</td> 
 
<td>       
 
<a class='table-row' href='/relative/path2'> Click2 </a> 
 
</td> 
 
<td>       
 
<a class='table-row' href='/relative/path3'> Click3 </a> 
 
</td> 
 
</tr> 
 
<tr>       
 
<td>       
 
<a class='table-row' href='/relative/path4'> Click4 </a> 
 
</td> 
 
<td>       
 
<a class='table-row' href='/relative/path5'> Click5 </a> 
 
</td> 
 
<td>       
 
<a class='table-row' href='/relative/path6'> Click6 </a> 
 
</td> 
 
</tr> 
 
<!--more rows here--> 
 
</table>

+0

申し訳ありませんが、私がクリックを言ったとき、私はマウスでクリックするわけではありませんでしたが、 javascriptコードは自動的にリンクを繰り返し実行しますが、私はそれを行いません。 – Foobarer

+0

さて、私のコードは、プログラムのリンクをクリックするたびに、繰り返します。イベントはコードの最後の行でトリガされます。 – wostex

+0

私は自分のコードにコメントを追加しているので、何が起こっているかを見ることができます。 – wostex

関連する問題