推荐人 URL 没有被正确抓取
referrer URL not being grabbed correctly
我正在尝试提取引荐来源 URL,对其应用正则表达式,并将结果用作文本字段中的值。问题是当前的实现并没有将引用 URL 拉入文本字段,这将来自单击上一页上的 link,而是允许我输入一个值。它应该自动用引荐来源网址填充文本字段,并允许用户基于它进行搜索(或者手动搜索,如果他们之前没有点击过 link)。控制台为行 $("#imageid").val(encodeID[1]);
输出 Uncaught TypeError: Cannot read property '1' of null
,因为它试图在结果字符串的数组中找到第二个值(这意味着没有引用 URL 被拉)。不确定我的逻辑有什么问题
案例一
根据这个逻辑,它确实拉取了推荐人 URL,但不允许用户手动搜索(没有推荐人预填充搜索字段)
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
if (encodeID !== null && encodeID.length == 1) {
$("#imageid").val(encodeID[1]);
} else {
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
$("#imageid").val(encodeID[1]);
}
案例二
再加上
if 语句,它不会拉引荐来源 URL,但允许用户手动搜索
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
if (encodeID !== null && encodeID.length == 1){
$("#imageid").val(encodeID[1]);
}else if($("#imageid").val() !== ''){
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
$("#imageid").val(encodeID[1]);
}
用户需要能够点击推荐人 URL 并让它预填充该字段,或者手动搜索。
您遇到了问题,因为数组的索引是从 0 而不是 1 开始的。
if (encodeID !== null && encodeID.length == 1) {
$("#imageid").val(encodeID[1]);
}
如果 encodeID
的长度为 1,则它只有一个元素,即 encodeID[0]
,但您试图将值设置为 encodeID[1]
,这永远不会如果数组的长度为 1,则存在。
所以解决方案是将数组长度设置为 2:
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
if (encodeID !== null && encodeID.length == 2){
$("#imageid").val(encodeID[1]);
}else if($("#imageid").val() !== ''){
$("#imageid").val(encodeID[1]);
}
我正在尝试提取引荐来源 URL,对其应用正则表达式,并将结果用作文本字段中的值。问题是当前的实现并没有将引用 URL 拉入文本字段,这将来自单击上一页上的 link,而是允许我输入一个值。它应该自动用引荐来源网址填充文本字段,并允许用户基于它进行搜索(或者手动搜索,如果他们之前没有点击过 link)。控制台为行 $("#imageid").val(encodeID[1]);
输出 Uncaught TypeError: Cannot read property '1' of null
,因为它试图在结果字符串的数组中找到第二个值(这意味着没有引用 URL 被拉)。不确定我的逻辑有什么问题
案例一
根据这个逻辑,它确实拉取了推荐人 URL,但不允许用户手动搜索(没有推荐人预填充搜索字段)
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
if (encodeID !== null && encodeID.length == 1) {
$("#imageid").val(encodeID[1]);
} else {
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
$("#imageid").val(encodeID[1]);
}
案例二
再加上 if 语句,它不会拉引荐来源 URL,但允许用户手动搜索
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
if (encodeID !== null && encodeID.length == 1){
$("#imageid").val(encodeID[1]);
}else if($("#imageid").val() !== ''){
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
$("#imageid").val(encodeID[1]);
}
用户需要能够点击推荐人 URL 并让它预填充该字段,或者手动搜索。
您遇到了问题,因为数组的索引是从 0 而不是 1 开始的。
if (encodeID !== null && encodeID.length == 1) {
$("#imageid").val(encodeID[1]);
}
如果 encodeID
的长度为 1,则它只有一个元素,即 encodeID[0]
,但您试图将值设置为 encodeID[1]
,这永远不会如果数组的长度为 1,则存在。
所以解决方案是将数组长度设置为 2:
var regexp = /assets\/(\d+)/;
var encodeID = regexp.exec(window.document.referrer);
if (encodeID !== null && encodeID.length == 2){
$("#imageid").val(encodeID[1]);
}else if($("#imageid").val() !== ''){
$("#imageid").val(encodeID[1]);
}