2013-07-31 75 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

相关问题