什么'在这种上下文中实现的JS代码是错误的

What's wrong with this JS code implemented in this context?

本文关键字:实现 JS 代码 错误 上下文 什么      更新时间:2023-09-26

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

这个代码所做的是获取页面的refer,如果它包含你在那里看到的一个关键字,它就会用特定div的内容填充(它也会显示它)

正如你所看到的,当你点击那里时,它工作得很好,div出现了,它填充了包含关键字"hsbc"的内容。简而言之,该功能正在执行中。

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

到目前为止,我尝试过但没有成功的事情:

  • 更新jquery
  • 删除所有其他脚本,只是为了确保它与此脚本不冲突

为什么它在第二个链接上不起作用?

jsfiddle不能正常处理referrer,所以在这种情况下,你从jsfiddler学到的东西不会转移到你的网站上。您的网站正在正常处理referrer,而referrer(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并单击新链接。然后你的问题就会消失。

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

jsfiddle在一个帧内运行,因此您可以获得子帧的referrer作为父帧;这就是您的示例测试在jsfiddle中工作的原因。我认为你需要使用或top.document.referrer或parent.documentt.referrer来获得stackoverflow url作为你指向jsfiddle页面的内容(如果它没有打破js跨站点安全限制)

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

您的代码执行不正确。用包装所有代码

$(function(){
});

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

一种更可取的方法是将该代码添加到head标记中已经存在的文档就绪语句中。

$(document).ready(function () {

请参阅此处了解更多信息。