我有以下代码,它使用上一个 url 提供的信息在选项链接列表中正确选择了一个选项,但是尽管在代码运行时视觉上选择了正确的链接,但结果看起来好像链接没有被主动选择.
$(document).ready(function () {
$("a.optionLink:contains('"+ (document.referrer.split('/').pop()) +"')").click();
});
我需要添加执行或触发代码吗?提前致谢。
相关代码在几个方面存在问题:
首先,异常处理代码(try/catch)在函数之外,这不是一个好主意。
其次,它正在扫描页面中的所有链接以查找可能为空的表达式(在这种情况下,可能会触发数百个链接)。
最后但并非最不重要的一点是,引荐来源网址可能不包含确切的短语作为链接。例如,England & Wales
是相关的http://www.legalcounseldirect.com/England&Wales
(显示Resource not found
错误,但这是另一回事)。我会考虑使用查询字符串或片段动态生成指向搜索页面的链接,这样就不需要这种 hack。
也就是说,在大多数情况下可能会奏效的解决方案可能是:
任何一个:
$(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 个不同的事件触发:
第一个是在文档准备好时触发的,这可能是在生成其余的表单功能时。由于无法确保在所有相关侦听器都准备好之后执行脚本(并且显然不是),因此使用超时来推迟click
事件的触发。
第二个代码段由稍后的事件触发,即窗口的加载。预计(但未经测试)所有事件附件都已完成,因此它可能会在不设置超时的情况下工作。
您可以一次尝试其中一个。没有必要同时使用它们。