2013-01-22 45 views
0

我在使用jQuery 1.8.2,jQuery UI 1.8.23和Knockout 2.2.0的頁面上的谷歌瀏覽器版本24.0.1312.52 m中收到錯誤。當我加載頁面時,對URL的HTTP請求失敗,簡單地說就是GET data: HTTP/1.1,它是從一個將初始化jQuery UI對話框的語句生成的(請參閱該文章的底部)。該頁面正常工作,但這會導致錯誤出現在狀態欄和JS控制檯中,我想避免嚇倒我的用戶。該錯誤未出現在IE 9或FireFox 15.0.1中,但確實出現在Safari 5.1.7(Windows)中。在Chrome檢查,錯誤的調用堆棧看起來是這樣的:jQ UI對話初始化對話框請求空數據:Chrome中的URL

GET data: jquery.min.js:2 
    a.getComputedStyle.bH      jquery.min.js:2 
    p.extend.css        jquery.min.js:2 
    bZ           jquery.min.js:2 
    b$           jquery.min.js:2 
    p.fn.extend.show       jquery.min.js:2 
    p.each.p.fn.(anonymous function)   jquery.min.js:2 
    a.fn.extend.show       jquery-ui.min.js:5 
    a.widget._create._renderAxis    jquery-ui.min.js:5 
    a.widget._create       jquery-ui.min.js:5 
    a.Widget._createWidget      jquery-ui.min.js:5 
    a.widget.a.(anon function).(anon function) jquery-ui.min.js:5 
    a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5 
    p.extend.each        jquery.min.js:2 
    p.fn.p.each        jquery.min.js:2 
    a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5 
    a.widget._makeResizable     jquery-ui.min.js:5 
    a.widget._create       jquery-ui.min.js:5 
    a.Widget._createWidget      jquery-ui.min.js:5 
    a.widget.a.(anon function).(anon function) jquery-ui.min.js:5 
    a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5 
    p.extend.each        jquery.min.js:2 
    p.fn.p.each        jquery.min.js:2 
    a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5 
    ko.bindingHandlers.jqDialog.init   QualityWalkViewModel.js:78 
    b.j.W          knockout-2.2.0.js:11 
    g           knockout-2.2.0.js:43 
    b.j          knockout-2.2.0.js:45 
    W           knockout-2.2.0.js:10 
    X           knockout-2.2.0.js:12 
    Y           knockout-2.2.0.js:12 
    X           knockout-2.2.0.js:12 
    Y           knockout-2.2.0.js:12 
    X           knockout-2.2.0.js:12 
    b.Ca          knockout-2.2.0.js:58 
    registerVM         3896:378 
    (anonymous function)      3896:362 
    p.Callbacks.k        jquery.min.js:2 
    p.Callbacks.l.fireWith      jquery.min.js:2 
    p.extend.ready        jquery.min.js:2 
    D           jquery.min.js:2 

有三個地方,它引用我的腳本:

ko.bindingHandlers.jqDialog.init  QualityWalkViewModel.js:78 
registerVM       3896:378 
(anonymous function)     3896:362 

3896是頁面的名稱(它的ID段一個URL如/WalkThrough/Edit/3896)。從引用行的代碼是:

(anonymous function)     3896:362 
360 <script type="text/javascript"> 
361 $(function() { 
362  registerVM();       <--- here 

registerVM       3896:378 
374 <script type="text/javascript"> 
375  var vm; // debug 
376  function registerVM() { 
377   vm = new QualityWalkViewModel(initialQualityWalkData); 
378   ko.applyBindings(vm);   <--- here 
379  } 

QualityWalkViewModel.js:78 
68 ko.bindingHandlers.jqDialog = { 
69  init: function(element, valueAccessor) { 
70   var options = ko.utils.unwrapObservable(valueAccessor()) || {}; 
71    
72   // handle disposal 
73   ko.utils.domNodeDisposal.addDisposeCallback(element, function() { 
74    $(element).dialog('destroy'); 
75   }); 
76  
77   // init the dialog 
78   $(element).dialog(options);  <--- here 
79  } 
80 }; 

這最後一個腳本是一個自定義綁定處理程序初始化一個jQuery UI的對話框,適合於響應從http://jsfiddle.net/rniemeyer/WpnTU/MVC Knockout JS inside JQuery dialog

如果我註釋掉$(element).dialog(options);中,錯誤消失。任何想法爲什麼jQuery UI會產生一個空的data:網址並嘗試請求它?

回答

0

固定。罪魁禍首是data: URL中jquery-ui.css周圍線260,其在http://bugs.jqueryui.com/ticket/7233一些討論:

.ui-resizable-handle { background-image:url(data:); } 

我不知道他們爲什麼儘管這比

.ui-resizable-handle { background-image: none; } 

一個更好的主意,這是我超過了規則,現在Chrome中沒有頁面錯誤。在某些時候,我需要在jQUI bug跟蹤器中註冊併發布更新。