関連するコードには、いくつかの点で問題があります。
まず、例外処理コード (try/catch) が関数の外にあり、これは良い考えではありません。
次に、ページ内のすべてのリンクをスキャンして、空の可能性がある式を探します (この場合、何百ものリンクがトリガーされる可能性があります)。
最後になりましたが、リファラーにはリンクとして正確なフレーズが含まれていない場合があります。たとえば、(これはエラーを示しますが、これは別の問題です)にEngland & Wales
関連しています。このハックが不要になるように、クエリ文字列またはフラグメントを使用して検索ページへのリンクを動的に生成することを検討します。http://www.legalcounseldirect.com/England&Wales
Resource not found
とはいえ、ほとんどの場合うまくいく可能性のある解決策は次のとおりです。
また:
$(document).ready(function () {
setTimeout(function(){
try{
var lastSegment = document.referrer.split('/').pop();
if(lastSegment != "") {
var matches = $("#idFilterColumns a.optionLink:contains('"+ lastSegment +"')");
if(matches.length === 1) {
matches.click();
}
}
}catch(e){}
},100);
});
多分:
$(window).on('load', function(){
try{
var lastSegment = document.referrer.split('/').pop();
if(lastSegment != "") {
var matches = $("#idFilterColumns a.optionLink:contains('"+ lastSegment +"')");
if(matches.length === 1) {
matches.click();
}
}
}catch(e){}
});
2 つの異なるイベントによってトリガーされます。
1 つ目は、ドキュメントの準備ができたときにトリガーされます。これはおそらく、フォームの残りの機能が生成されているときです。関連するすべてのリスナーの準備が整った (明らかに準備ができていない) 後にスクリプトが実行されることを確認する方法がないため、click
イベントのトリガーを延期するためにタイムアウトが使用されます。
2 番目のコード セグメントは、後のイベントであるウィンドウの読み込みによってトリガーされます。すべてのイベントの添付が既に行われていることが予想される (ただし、テストされていない) ため、タイムアウトを設定しなくても機能する可能性があります。
一度に 1 つずつ試すことができます。両方を使用する必要はありません。