在这种情况下实现的JS代码有什么问题?

时间:2012-03-14 02:39:48

标签: javascript jquery referer

http://jsfiddle.net/dS4r3/24/?q=hsbc

这段代码的作用是它需要页面的引用者,如果它包含你在那里看到的一个关键词,它会填充特定div的内容(它也会显示它)

正如您所看到的那样,当您单击此处并且div出现并且其中包含关键字“hsbc”的内容时,它可以正常工作。简而言之,该功能正在执行中。

现在的问题是当我在这里实现完全相同的代码时,函数似乎无法执行:http://segurosendirecto.com.ar/cotizador-de-seguros-auto/?kw=hsbc

到目前为止我尝试过的事情并没有奏效:

  • 更新jquery
  • 删除所有其他脚本,以确保它与此脚本不冲突。

为什么不在第二个链接上工作?

3 个答案:

答案 0 :(得分:1)

jsfiddle不会正常处理referrer,因此在这种情况下你从jsfiddle学到的东西不会转移到你的网站。您的网站正常处理引荐来源,引荐来源(http://stackoverflow.com/questions/9695194/whats-wrong-with-this-js-code-implemented-in-this-context)根本不包含字符串hsbc

您需要做的是在您的网站上创建一个新页面(例如new-page),其中包含指向cotizador-de-seguros-auto的链接,访问new-page/?kw=hsbc并点击新链接。然后你的问题就会消失。

答案 1 :(得分:1)

页面的引荐来源是启动链接的页面;在这种情况下点击stackoverflow上面的jsfiddle链接,jsfiddle中的referrer将是http://stackoverflow.com/questions/9695194/whats-wrong-with-this-js-code-implemented-in-this-context

jsfiddle在一个帧内运行,因此您将子帧的引用者作为父项;这就是为什么你的示例测试在jsfiddle中工作的原因。我想你需要使用或者top.document.referrer或parent.document.referrer来获取stackoverflow url作为jsfiddle页面的引用(如果它没有破坏js跨站点安全限制)

如果您想知道当前页面的URL是什么(例如在第二个链接的上下文中),您将使用document.location.href来获取http://segurosendirecto.com.ar/cotizador-de-seguros-auto/?kw=hsbc而不是document.referrer。然后你会在网址的末尾找到hsbc。我认为document.location.href可能是您在实际站点中想要的hsbc参数。

答案 2 :(得分:0)

您的代码未正确执行。用以下代码包装所有代码:

$(function(){

});

然后将整个<script></script>块移到头部。

更优选的方法是将您已存在的文档就绪语句添加到头标记中。

$(document).ready(function () {

有关详细信息,请参阅here