【问题标题】:Javascript working in Safari but not Chrome or FirefoxJavascript 在 Safari 中工作,但在 Chrome 或 Firefox 中不工作
【发布时间】:2012-06-12 22:47:24
【问题描述】:

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

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

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

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

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

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

编辑
以下是 Chrome 中的错误:

Uncaught SyntaxError: Unexpected token 未捕获的错误:XmlRenderEngine = >未知错误 bundle.js:1 XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。 Access-Control-Allow-Origin 不允许 Origin null。
未捕获的错误:XmlRenderEngine = >未知错误 bundle.js:1 XMLHttpRequest 无法加载 http://www.erikschevrolet.com/searchVehicles.ajax。 Access-Control-Allow-Origin 不允许 Origin null。
未捕获的错误:XmlRenderEngine = >未知错误 bundle.js:1

【问题讨论】:

  • Chrome和ff有错误吗?如果有,请包括它们。此外,该页面似乎是在服务器上生成的。如果是这样,通过不包括头文件等,在服务器端完成整个事情会更容易。
  • 不确定您的确切用例,但请注意您在此处所做的事情是合法的。该网站的代码归“Chrome Systems Corporation”所有,未经他们的许可窃取和重复使用他们的代码是违法的。否则,好问题:)

标签: javascript google-chrome firefox dom-events


【解决方案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();
  }
}

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

【讨论】:

  • 谢谢!我会考虑自己更改引用,或者我会将项目外包给知道他们在做什么的人!
  • 如果您对我的回答感到满意,您可以点赞并接受吗? ;)
  • 使用 JSONP 进行跨域请求或者干脆在服务器上而不是在 JS 中进行
【解决方案2】:

您在使用特定加载文件方案的 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,也可以试试这个。

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    相关资源
    最近更新 更多