触发可选所选链接所需的代码

时间:2013-08-11 18:44:52

标签: jquery hyperlink option

我已经获得了以下代码,这些代码使用前一个网址提供的信息正确选择了选项链接列表中的选项,但是虽然在代码运行时可视地选择了正确的链接,但结果看起来好像是链接没有被主动选中。

$(document).ready(function () {
    $("a.optionLink:contains('"+ (document.referrer.split('/').pop()) +"')").click();
});

我是否需要添加执行或触发代码? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

相关代码在某些方面存在问题:

首先,异常处理代码(try / catch)在函数之外,这不是一个好主意。

其次,它正在扫描页面中的所有链接以查找可能为空的表达式(在这种情况下,可能会触发数百个链接)。

最后但并非最不重要的是,引荐来源可能不包含确切的短语作为链接。例如,England & Waleshttp://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){}
});

由两个不同的事件触发:

  • 第一个是在文档准备就绪时触发的,这可能是在生成其余表单功能时。由于无法确定在所有相关侦听器准备好之后(并且显然不是)执行脚本,因此使用超时来推迟触发click事件。

  • 第二个代码段由后来的事件触发,即窗口的加载。预计(但未经测试)所有事件附件都已完成,因此可以在不设置超时的情况下工作。

您可以一次尝试其中一个。没有必要同时使用它们。