Javascript在Safari中工作,但不能在Chrome或Firefox中工作

Javascript working in Safari but not Chrome or Firefox

本文关键字:工作 Firefox Chrome Javascript Safari 但不能      更新时间:2023-09-26

我根本不是程序员,所以提前很抱歉,但在网上搜索后我找不到答案。

我正在尝试从这个网站获取库存搜索并将其放在Facebook选项卡中。 我从网站上获取了代码,并在TextEdit中编辑了我不想要的页眉和页脚。我只是想拿库存搜索部分。

当我在Safari中测试它时,它似乎可以工作。 库存搜索出现了,所有的按钮和过滤器都完美地工作了,当我转到不同的页面时,页眉和页脚仍然消失了,只有库存搜索在那里 - 完美。

但是,在Chrome和Firefox中进行测试时,按钮和过滤器根本不起作用,您无法通过第一页或应用过滤器。

所以我决定去网站(库存搜索的第一页,如上面的链接)并将源代码保存到我的桌面,看看当我在 Chrome 或 Firefox 中打开它时它是否可以工作,它没有,没有按钮或过滤器工作,卡在第一页。 但它确实在Safari中起作用。

这是什么意思? 我现在应该放弃吗? 我会包括代码,但它是我见过的最长的代码。 我通过TextEdit对代码进行的所有测试。

编辑
以下是 Chrome 中的错误:

未捕获的语法错误:雪佛兰 不允许 Origin null未捕获的错误:XmlRenderEngine =>未知错误包.js:1XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。Access-Control-Allow-Origin.
不允许 Origin null未捕获的错误:XmlRenderEngine =>未知错误包.js:1XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。Access-Control-Allow-Origin.
不允许 Origin null未捕获的错误:XmlRenderEngine =>未知错误捆绑包.js:1

这些 Chrome 警告在这里无关紧要。上面给出的错误是关于跨源问题的。由于从 Javascript 内部访问远程资源可能会导致非常邪恶的事情,除非明确允许,否则现代浏览器会阻止它们。

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

AFAIK 没有一种非常简单的方法来避免这个问题; 最安全的解决方案是让您下载所有使用的文件,并通过对本地路径的引用手动更改对 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();
  }
}

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

似乎

您在使用特定的加载文件方案读取 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以及尝试这个。