【错误报告】对象不支持此属性或方法http://rp.baidu.com/customer_search/api

此错误报告出现在IE浏览器里:http://rp.baidu.com/customer_search/api/js?sid=...

百度站内搜索导致的JS报错
百度站内搜索导致的JS报错

 

久久经验网出现这个错误的时候是在文章详情页,首页和列表页均没报错!那么为什么会有这个错误报告提示?

经过排查,正是由于网站上部署了百度站内搜索代码(为什么要部署百度站内搜索?)导致的,于是赶紧向百度站长反馈中心反馈并提交了错误详情报告。

过了一阵子,也就是今天,百度站长平台的一个工作人员回复啦!

工作人员说:这是个别的站点才有这个问题

 

解决办法

原先的百度站内搜索代码

  1. <script type="text/javascript">document.write(unescape('%3Cdiv id="bdcs"%3E%3C/div%3E%3Cscript 
  2. charset="utf-8" src="http://rp.baidu.com/rp3w/3w.js?sid=你的站内搜索ID')+'&t='+
  3. (Math.ceil(new Date()/3600000))+unescape('"%3E%3C/script%3E'));</script> 

替换成新的百度站内搜索代码

  1. <script type="text/javascript">document.write(unescape('%3Cdiv id="bdcs"%3E%3C/div%3E%3Cscript 
  2. charset="utf-8" src="http://znsv.baidu.com/customer_search/api/js?sid=你的站内搜索ID') +
  3. '&plate_url='+(encodeURIComponent(window.location.href))+ '&t=' + 
  4. (Math.ceil(new Date()/3600000)) + unescape('"%3E%3C/script%3E'));</script> 

 

以上两处百度站内搜索代码对比:

前者调的http://rp.baidu.com/,后者调的http://znsv.baidu.com/

后者在前者的基础上,向接口增加了个传递参数plate_url,用来传递当前的站点网址url,其中用到了encodeURIComponent()函数。

我想,这应该验证了工作人员的那句话:这是个别的站点才有这个问题。(收集了我当前站点的url,专项治疗o(∩_∩)o)

 

encodeURIComponent()函数的作用:

 encodeURIComponent() 把字符串作为 URI 组件进行编码,将转义用于分隔 URI 各个部分的标点符号

 

encodeURIComponent()函数的说明:

 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的

 

 

 

相关经验

导读书签
书签初始化中…