2012-06-12 235 views
7

我不是程序員,所以我很抱歉,但是在搜索網絡後我找不到答案。JavaScript在Safari瀏覽器中工作,但不是Chrome或Firefox瀏覽器

我正在嘗試從this website進行庫存搜索,並將它放在Facebook選項卡中。我從網站上抓取了代碼,並在TextEdit中編輯了我不想要的頁眉和頁腳。我只是想嘗試庫存搜索部分。

當我在Safari中測試它似乎工作。庫存搜索出來了,所有的按鈕和過濾器都能正常工作,當我去到不同的頁面時,頁眉和頁腳仍然不見了,只是庫存搜索就在那裏 - 非常完美。

但是,在Chrome和Firefox中進行測試時,按鈕和過濾器完全不起作用,您無法越過第一頁或應用過濾器。

因此,我決定前往網站(清單搜索的第一頁,如上面的鏈接),並將源代碼保存到我的桌面,以查看是否可以在Chrome或Firefox中打開它,它沒有,沒有按鈕或過濾器工作,卡在第一頁。但它確實在Safari中有效。

這是什麼意思?我現在應該放棄嗎?我會包括代碼,但這是我見過的最長的代碼。我通過TextEdit完成的所有代碼測試。

編輯
下面是在Chrome中的錯誤:

未捕獲的SyntaxError:意外的標記< Chevy.html:4608 的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 XMLHttpRequest無法加載http://www.erikschevrolet.com/searchVehicles.ajax。 Access-Control-Allow-Origin不允許Origin null。
未捕獲錯誤:XmlRenderEngine =>未知錯誤bundle.js:1

+4

Chrome和ff中是否有任何錯誤?如果有,請包括它們。此外,該頁面似乎在服務器上生成。如果是這樣,那麼通過不包含頭文件等來完成整個服務器端會更容易。 – tcooc

+2

不確定您的確切用例,但要小心您在這裏做的是合法的。該網站的代碼歸「Chrome系統公司」所有,未經他們許可竊取和重新使用他們的代碼是非法的。否則,好問題:) – jwegner

回答

1

這些Chrome警告與此處不相關。上面給出的錯誤是關於跨源問題。由於在Javascript中訪問遠程資源會導致非常惡劣的事情,現代瀏覽器會阻止它們,除非明確允許。

例如,來自http://example.com的大部分內容無法通過JavaScript在http://example.net域下訪問。由於您下載了大多數文件,並且您試圖在本地運行它們,但仍有一些文件涉及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(); 
    } 
} 

即使這樣可能無法獲得預期的結果,因爲很多這些文件可能是在服務器上動態生成的,並且可能會更改。

+0

謝謝!我會考慮自己改變參考資料,否則我會將項目外包給知道自己在做什麼的人! –

+1

如果你對我的回答感到滿意,你能否贊成並接受它? ;) – mgol

+0

使用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"); 
    } 

這將作用於鉻野生動物園的Firefox以及試試這個。

相關問題