2013-07-31 115 views
0

我試圖設置自動JSLint測試,它將從目標網站抓取js文件,然後使用Selenium對測試站點運行它,該站點將使用JSLint測試Js文件的網址。從另一個本地主機站點引用一個本地主機站點中的Js腳本

我遇到了一些問題,試圖用兩個不同的localhost網站在本地進行測試。

$(function() { 

     $.ajax({ 
     url: "http://code.jquery.com/jquery-latest.min.js", 
     //url: "http://localhost:62338/Scripts/test.js", // url to other local site 
     dataType: "text" 
     }).done(function (data) { 
     var myResult = JSLINT(data); 
     .. 
     }); 
    }); 

如果我使用指向jquery url的url運行上面的代碼,它工作正常,JSLint分析這個文件。但是,如果我試圖將它指向我的另一個本地主機站點中的js文件,它就會崩潰。如果我在Chrome瀏覽器中查看Network Inspector,則表示對該腳本的調用已取消。

任何想法,爲什麼我無法以這種方式訪問​​本地託管的js文件?

順便說一下,我使用的是MVC4 Web項目。

編輯:我有一個Cors或指向我的IP沒有運氣,但Dominic的答案,最終使我這個question,在那裏我可以在關閉Chrome的安全性。我根本不喜歡這個選項,但它只是在我完成所有TeamCity設置之前在本地進行測試,並且只要Chrome重新啓動,變更就會被撤消。

EDIT2:本question第二屆答案也爲我工作,加入:

<httpProtocol> 
     <customHeaders> 
     <clear /> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     </customHeaders> 
    </httpProtocol> 

..to目標站點的web.config我能夠得到這個無需禁用工作Chrome上的安全。由於目標網站只是一個虛擬網站,正在本地使用,這對我來說效果更好。

回答

1

這可能是由於same origin policy不讓ajax調用去localhost。在撥打電話之前,可以通過更改下面的設置來解決這個問題。

jQuery.support.cors = true 

您可以通過將localhost更改爲您的計算機的ip來解決此問題。

1

除非專門列出白名單,否則JavaScript不能執行跨域請求,因爲您正在進行測試,因此您沒有理由這麼做。

如果您有某種版本設置(SVN,GIT)將其掛接到Selenium並對存儲庫中的源代碼運行測試。

您還可以將JSLint掛鉤到預先提交的鉤子中,該鉤子將拒絕任何非JSLinted的JS代碼。

+0

謝謝弗裏茨將調查預先提交鉤的事情聽起來不錯 – DevDave

相關問題