在Safari中可以工作的JavaScript在Chrome或Firefox中无法工作

7
我一点也不懂编程,所以提前道歉,但在搜索网络后我找不到答案。
我试图将该网站的库存搜索放入Facebook标签页中。 我从网站中获取了代码,并在TextEdit中编辑掉了标题和页脚,因为我不需要它们,我只想要库存搜索部分。
当我在Safari中测试时,似乎可以正常工作。 库存搜索出现了,所有按钮和过滤器都完美地工作,当我转到另一页时,标题和页脚仍然消失了,只有库存搜索在那里 - 完美。
然而,在Chrome和Firefox中测试时,按钮和过滤器根本不起作用,您无法超越第一页或应用过滤器。
因此,我决定访问该网站(库存搜索的第一页,如上面的链接),并将源代码保存到我的桌面上,以查看在Chrome或Firefox中打开时是否会起作用,但它没有起作用,没有按钮或过滤器起作用,停留在第一页。 但在Safari中却可以工作。
这是什么意思? 我现在应该放弃吗? 我想包含代码,但这是我见过的最长的代码。 我通过TextEdit测试了所有代码。
编辑:这是Chrome中的错误:
Uncaught SyntaxError: 非预期的令牌 < Chevy.html:4608 XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。起源为 null,不被 Access-Control-Allow-Origin 允许。 Uncaught Error: XmlRenderEngine = > 未知错误 bundle.js:1 XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。起源为 null,不被 Access-Control-Allow-Origin 允许。 Uncaught Error: XmlRenderEngine = > 未知错误 bundle.js:1 XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。起源为 null,不被 Access-Control-Allow-Origin 允许。 Uncaught Error: XmlRenderEngine = > 未知错误 bundle.js:1

4
Chrome和ff有错误吗?如果有,请包括它们。此外,该页面似乎是在服务器上生成的。如果是这样,最好通过不包括头文件等来完全在服务器端执行整个过程。 - tcooc
2
不确定你的确切用途,但要注意你在这里所做的是合法的。那个网站上的代码归“Chrome Systems Corporation”所有,未经允许窃取和重用他们的代码将是非法的。否则,问题很好 :) - jwegner
2个回答

1

这些Chrome警告在此处不相关。上面给出的错误是关于跨域问题的。由于JavaScript内部访问远程资源可能导致非常恶劣的结果,现代浏览器会阻止它们,除非明确允许。

例如,大多数来自http://example.com的内容无法在http://example.net域下通过javascript访问。由于您下载了大多数文件并尝试在本地运行它们,但仍然有一些引用http://www.erikschevrolet.com域下的文件,这是不被允许的。

据我所知,避免这个问题并没有一个非常简单的方法;最安全的解决方案是让您下载所有使用的文件,并手动将对http://www.erikschevrolet.com的引用更改为对本地路径的引用。或者,可以将XMLHttpRequest的withCredentials值设置为true(但由于您不是程序员,可能会搞砸它...)像这样(来自http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/的示例):
var request = new XMLHttpRequest();
var url = 'http://bar.other/resources/credentialed-content/';
function callOtherDomain(){
  if(request)
  {
   request.open('GET', url, true);
   request.withCredentials = "true";
   request.onreadystatechange = handler;
   request.send();
  }
}

即使如此,这也可能无法获得预期的结果,因为许多这些文件可能是在服务器上动态生成的,并且可能会发生更改。


谢谢!我会自己尝试更改参考资料,或者将项目外包给一个知道他们正在做什么的人! - Taya Bea
1
如果您对我的回答感到满意,能否给我点个赞并接受它呢?;) - mgol
使用JSONP进行跨域请求,或者直接在服务器端处理而不是在JS中处理。 - sciritai

0

看起来您在使用特定的加载文件方案时,在JavaScript中读取XML或文本文件遇到了问题。这种情况通常发生在支持HTTP请求的浏览器中,您可以尝试在JavaScript中进行一些操作。

if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
else
  {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

这将在Chrome、Safari和Firefox上起作用,请试一下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接