2012-05-22 2 views
0

후 내가 jQuery를 BlockUI를 사용하고 작동하지 않습니다 새로운 페이지에서자바 스크립트가 다음 자바 스크립트로 쿼리 데이터베이스의 많은에 약간의 시간이 소요 새로운 웹 페이지를 여는 document.write를

function productSheet(url2) { 
     $.blockUI.defaults.overlayCSS = {}; 
     $.blockUI({ }); 
     $.ajax({ 
      url: url2, 
      success: function (respones) { 
       var win = window.open(); 
       with (win.document) { 
        open(); 
        write(respones); 
        close(); 
       } 
      } 
     }); 
    }; 

전 일부 jQuery JavaScript 및 외부 jQuery 스크립트에 대한 참조가있다. 그러나 위의 JavaScript를 페이지를 렌더링 할 때 내 스크립트에서 "$ undefined"오류가 발생합니다. 페이지를 새로 고칠 수 있으며 모든 작업이 시작되고 스크립트 오류가 발생하지 않습니다.

이 문제는 Firefox 9에서 디버깅 할 때만 발생합니다 (모든 JavaScript 오류 및 스크립트 작동).

문제가 무엇이 될 수 있는지에 대해 아는 사람이 있습니까?

편집 :

페이지 iam 렌더링은 MVC 3보기입니다. 그래서 위의 스크립트는이 뷰를 반환하는 MVC 조치로 이동 :

@model WebApplication.Controllers.ProductSheetModel 
<!DOCTYPE html> 
<html> 
<head> 

<title>Sheet - @Model.ArticleMain.ArticleMain.T0018_BENAM</title> 

    <script src="../../js/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script> 
    <link href="../../css/ProductSheet.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
<div id="wrapper"> 
    @if (Model.IsPDFExport == false) 
    { 
     @Html.DisplayFor(model => model.ArticleMain, "ProductSheetHeader") 
    } 
    ... some more partical views... 
</div> 
</body> 
</html> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var tabelheight1 = $("#divNutritiveValues").height(); 
    var tabelheight2 = $("#divMarking").height(); 
    if (tabelheight1 > tabelheight2) { 
     $("#divMarking").css("height", tabelheight1 + "px"); 
     $("#divNutritiveValues").css("height", tabelheight1 + "px"); 
    } 
    if (tabelheight2 > tabelheight1) { 
     $("#divNutritiveValues").css("height", tabelheight2 + "px"); 
     $("#divMarking").css("height", tabelheight2 + "px"); 
    } 

    var tableheightStore = $("#divStore").height(); 
    var tableheightCooking = $("#divCooking").height(); 
    if (tableheightCooking > tableheightStore) { 
     $("#divCooking").css("height", tableheightCooking + "px"); 
     $("#divStore").css("height", tableheightCooking + "px"); 
    } 
    if (tableheightStore > tableheightCooking) { 
     $("#divCooking").css("height", tableheightStore + "px"); 
     $("#divStore").css("height", tableheightStore + "px"); 
    } 

    var tableInfoProvid = $("#divInformationProvider").height(); 
    var tableManufac = $("#divManufacturer").height() 
    if (tableInfoProvid > tableManufac) { 
     $("#divManufacturer").css("height", tableInfoProvid + "px"); 
     $("#divInformationProvider").css("height", tableInfoProvid + "px"); 
    } 
    if (tableManufac > tableInfoProvid) { 
     $("#divInformationProvider").css("height", tableManufac + "px"); 
     $("#divManufacturer").css("height", tableManufac + "px"); 
    } 
}); 

+1

나는 여기서 세 가지를 보지 못했다 - jQuery 1.3을 사용하여'with'를 사용하고'document.write'를 사용한다 ... – Alnitak

답변

0

문제는 $가 IE에서 페이지에 정의되지 않은 점이다.

일반적으로 jQuery는 $를 jQuery 개체에 대한 참조로 설정합니다. See docs.

어떤 이유에서든 $ 참조가 제거 중이거나 IE에서 발생하지 않습니다. 더 많은 코드를 게시 할 수 있습니까?

하나의 해결 방법 대신 $

jQuery를 사용하는 것입니다하지만 더 나은 실제로 IE에 무슨 일이 일어나고 있는지 이해하는 것이 좋은 것입니다.

+0

ur 답장을 위해 thx를 사용하면 $가 jQuery로 변경되지만 동일한 오류가 발생한다. "jQuery는 정의되지 않았다. ". 내가 렌더링하는 페이지에서 더 많은 코드를 사용하여 새로운 대답을 게시 할 것입니다. – Ekan

+0

위와 같이 document.write를 사용하는 대신 다른 자바 스크립트 구문을 사용할 수 있습니까? – Ekan

+0

1.3.2가 아닌 현재 jQuery (1.7.2)를 사용하기 시작합니다. 이전 버전을 사용하고 있습니다. 단순히 IE 9을 지원하지 않을 수 있습니다. document.write 대신 dom에 요소를 명시 적으로 추가하거나 innerHTML을 설정하여 내용을 변경할 수 있습니다. 하지만 document.write는 주요 문제가 아니며 전혀 문제가되지 않을 수도 있습니다. –

0

JavaScript 등록이 AJAX 게시물과 함께 발생하지 않아서 손실되고 재 등록되지 않는다고 생각됩니다.

이것은 AJAX로 작업 할 때 자주 발생하는 문제이며 this article은 완벽하게 설명하고 필요한 것을 제공합니다.

0

나는 해결책을 생각해 내고 그것을 여러분과 나누고 싶습니다. 내 사이트에서 jquery가 정의되지 않았는지 확인하는 스크립트를 만들었습니다. 난 다시 내 모든 스크립트가 작동 페이지, 아마 솔루션의 장점을 다시로드했지만 그렇게 내가 행복 작동 후

if (typeof jQuery == 'undefined') { 
     window.location.reload(); 
} 

.