이전 deverlopers 코드와 통합하려고 시도한 VB .net 응용 프로그램이 있습니다. 코드는 우편 번호를 사용하여 Google지도 캔버스에서 위치와 함께 매장 목록을 반환합니다.vb.net. strict 모드와 관련된 자바 스크립트 문제
한 가지 예외는 있지만 위 프로세스는 훌륭하게 작동합니다.
나는 내부적으로 나의 첫번째 성향이 창을 만들려면 다음
function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, eventArgument) {
var event = window.event;
if (!event) {
var caller = arguments.callee ? arguments.callee.caller : null;
if (caller) {
var recursionLimit = 30;
while (caller.arguments.callee.caller && --recursionLimit) {
caller = caller.arguments.callee.caller; // ERRORS HERE
}
event = (recursionLimit && caller.arguments.length) ? caller.arguments[0] : null;
}
}
...
했다가
__doPostBack('userControlSearchResults_results', LatLng);
에 다음과 같은 오류 내가 범인을 격리 한
JavaScript runtime error: Accessing the 'caller' property of a function or arguments object is not allowed in strict mode.
를 얻을. 그래서 그것을 통해 if (! event)를 전달하고 계속 진행합니다. 코드에서 __doPostback을 호출하는 다른 시간이 있으므로 성공합니다.
그러나 JavaScript가 제한되어 있으므로 잘못하고 있거나 다른 접근 방식을 찾아야합니다.
이 문제를 조사한 결과 아주 조금 돌아 왔습니다. 일반적인 대답은 '엄격한 사용'을 주석 처리하는 것입니다. 그리고 계속 전진해라.
문제는 우리가 자바 스크립트 라이브러리을 많이 끌어와 그들 중 많은 사람들이 지금
사람이 제안 또는이 문제를 해결하는 방법에 대한 아이디어가 있습니까 '엄격한 사용'으로 설정되어있다?
블로그에서 __doPostback 호출 전에 setTimeout()을 적용하려고 시도했습니다. 그러나 어떻게 해결되는지는 모르겠다.
편집 : 더 많은 코드가 추가되었습니다.
__doPostback는
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div id="Container" style="zoom:1" onclick="">
<asp:UpdatePanel runat="server" ID="udpResults" OnLoad="UpdatePanel1_Load">
<ContentTemplate>
<asp:HiddenField ID="currentLatLong" runat="server" />
<asp:HiddenField ID="triggerSearch" runat="server" Value="0" />
<asp:HiddenField ID="searchString" runat="server" Value="0" />
<asp:HiddenField ID="locationCode" runat="server" />
<asp:HiddenField ID="locationDesc" runat="server" />
<asp:HiddenField ID="locationPhone" runat="server" />
<asp:HiddenField ID="locationZip" runat="server" />
<asp:HiddenField ID="filterPickup" runat="server" />
<asp:HiddenField ID="filterVirtualKiosk" runat="server" />
<asp:HiddenField ID="filterDelivery" runat="server" />
<asp:HiddenField ID="filterAcceptsCash" runat="server" />
<asp:HiddenField ID="filterKey2Key" runat="server" />
<asp:HiddenField ID="filterHODService" runat="server" />
<asp:Label ID="tblResults" runat="server"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
이 도움을합니까 이상의 코드가 요구 될 경우 내 업데이트 패널은 사용자 컨트롤 내에이 같은 보이는 ... 다음 자바 스크립트
function CompleteSearch(returnedLatLng) {
if (returnedLatLng != '') {
alert("dopostback here2- this is where it breaks");
__doPostBack('ucSearchResults_udpResults', returnedLatLng);
if (document.getElementById("sidebar_search")) { document.getElementById("sidebar_search").style.display = "none" };
if (document.getElementById("sidebar_login")) { document.getElementById("sidebar_login").style.display = "none" };
if (document.getElementById("promo1")) { document.getElementById("promo1").style.display = "none" };
document.getElementById("sidebar_results").style.display = "block";
//document.getElementById("sidebar_results").style.display = "none";
}
return false;
}
내 . 나는 지금 정말로 붙어있어서 어디로 가야할지 모른다.
나는이 __doPostBack 자바 스크립트 코드가 어떤 개발자에 의해서 수행 된 것이라고 생각하지 않는다. ASP 엔진이 그것을 생성한다고 생각한다. 난 당신이 ASP 코드를 게시해야한다고 생각, 어쩌면 이러한 userControlSearchResults_results. – xavigonza
정확합니다. Sys $ Web ... 엔진에 의해 생성됩니다. 그러나 "caller = caller.arguments.callee.caller"라는 줄이 오류를 트립합니다. 이 코드는 이전의 고전적인 ASP 웹 사이트에서 작동합니다. 나는 새로운 사이트와 통합하려고 시도하고있다. __doPostBack 프로세스를 검토합니다. –