我将PhantomJS用于我的项目。 似乎服务器生成的链接是错误的。他们看起来很奇怪。 我从Process.StandardError的输出中得到了这个:
ReferenceError:找不到变量:$
http://localhost/MyWebsite/AppName/(F(nwmx6eY2n1ZH2wmw2Wsta6X7s6OIeQ8LLQxbeJ5uULf99WBNZ12KatxFMKam4Vr9r1fUrkDLc8t5XvaR9EcW67kkaZB32ftWPOH-GvvuUaIKJZMtBcMYjIY3---ewwTEsXVZl6MfNOZQIwRBahBG-xtBrzvW2tdh4TM9CSU8c467zudg0))/Page.aspx:424
ReferenceError:找不到变量:$
http://localhost/MyWebsite/AppName/(F(nwmx6eY2n1ZH2wmw2Wsta6X7s6OIeQ8LLQxbeJ5uULf99WBNZ12KatxFMKam4Vr9r1fUrkDLc8t5XvaR9EcW67kkaZB32ftWPOH-GvvuUaIKJZMtBcMYjIY3---ewwTEsXVZl6MfNOZQIwRBahBG-xtBrzvW2tdh4TM9CSU8c467zudg0))/Page.aspx:804
TypeError:'undefined'不是对象(评估 'Sys.WebForms.PageRequestManager')
http://localhost/MyWebsite/AppName/(F(nwmx6eY2n1ZH2wmw2Wsta6X7s6OIeQ8LLQxbeJ5uULf99WBNZ12KatxFMKam4Vr9r1fUrkDLc8t5XvaR9EcW67kkaZB32ftWPOH-GvvuUaIKJZMtBcMYjIY3---ewwTEsXVZl6MfNOZQIwRBahBG-xtBrzvW2tdh4TM9CSU8c467zudg0))/Page.aspx:890
这就是无法加载jQuery的原因。 任何人都知道为什么会这样?在Chrome中它看起来很好。
答案 0 :(得分:2)
好的,似乎ASP.Net识别浏览器和浏览器定义设置的方式存在问题。为了使phantom.js工作,我使用以下代码在App_Browsers文件夹中添加了phantomjs.browser文件:
<browsers>
<!-- Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34 -->
<browser id="PhantomJS" parentID="Safari">
<identification>
<userAgent match="PhantomJS/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)" />
</identification>
<capabilities>
<capability name="browser" value="PhantomJS" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="type" value="PhantomJS${major}" />
<capability name="version" value="${version}" />
<capability name="ecmascriptversion" value="3.0" />
<capability name="javascript" value="true" />
<capability name="javascriptversion" value="1.7" />
<capability name="w3cdomversion" value="1.0" />
<capability name="supportsAccesskeyAttribute" value="true" />
<capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" />
<capability name="cookies" value="true" />
<capability name="frames" value="true" />
<capability name="javaapplets" value="true" />
<capability name="supportsCallback" value="true" />
<capability name="supportsDivNoWrap" value="false" />
<capability name="supportsFileUpload" value="true" />
<capability name="supportsMaintainScrollPositionOnPostback" value="true" />
<capability name="supportsMultilineTextBoxDisplay" value="true" />
<capability name="supportsXmlHttp" value="true" />
<capability name="tables" value="true" />
</capabilities>
</browser>
</browsers>
它告诉服务器使用带有Phantom.JS的cookie作为浏览器:
<capability name="cookies" value="true" />
这样就可以正确生成链接。
答案 1 :(得分:2)
此问题是由于ASP无法识别用户代理并使用“Craazy String!”而不是饼干。
如果您无法编辑或不想编辑App_Browsers,只需将phantomjs中的用户代理设置为已知可用的浏览器中的精确字符串。
示例:
var page = new WebPage();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.36 Safari/537.36'
或者,在casperjs中:
var casper = require('casper').create({
pageSettings: {
userAgent: 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.36 Safari/537.36'
}
});