2011-09-26 2 views
0

좋아, 나는 AJAX가 아닌 체크 아웃을 AJAX 체크 아웃으로 바꾼 많은 시간을 보냈다.Firefox 3.6.x에서 매우 이상한 jQuery 선택기 버그

jQuery UI 탭을 사용하여 다양한 섹션을 탭으로 구분하여이 작업을 수행했습니다. 그런 다음 AJAX를 사용하여 한 탭에서 변경 사항을 게시하고 다른 탭을 선택적으로 새로 고칩니다. 선택적 새로 고침은 단순히 게시물의 결과를 가져오고 jQuery 선택기를 사용하여 응답에서 관련 div만을 가져옵니다.

이 특별한 경우 배송 정보가있는 탭은 배송 방법 목록이있는 탭을 게시하고 새로 고침합니다.

이 완벽하게 하나의 브라우저를 제외하고 작품 : 파이어 폭스 3.6.x에서 (Mac과 Windows)

를 파이어 폭스 3에서 선택 효과적으로 중요 버튼을 제거하고를 방지 POST의 결과에서 잘린 결과를 다시 끌어 사용자가 진행하지 못하도록합니다.

여기 서식 전체 HTML 응답이다

http://pastebin.com/aVF6yUba

EDIT : 상기는 실제 출력 명백하게 100 % 일치한다. 여기 http://pastebin.com/ChAT1vLf

자바 스크립트 관련 라인 :

여기
<!--- shipping method section ---> 
<h2>Select a shipping method:</h2> 
<ul id="shipping-methods"> 
    <li><span><label><input name="shipmethod" value="FedEx+Priority+Overnight" class="shopp shipmethod" type="radio"> FedEx Priority Overnight — <strong>$30.68</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 28, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+Standard+Overnight" class="shopp shipmethod" type="radio"> FedEx Standard Overnight — <strong>$26.46</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 28, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+2Day" class="shopp shipmethod" type="radio"> FedEx 2Day — <strong>$19.10</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 29, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+Express+Saver" class="shopp shipmethod" type="radio"> FedEx Express Saver — <strong>$18.79</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 30, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+Home+Delivery" class="shopp shipmethod" checked="checked" type="radio"> FedEx Home Delivery — <strong>$13.52</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 27, 2011</span> </label> </span> </li> 
</ul> 
<hr> 
<div class="tab-back-button"> 
    <input class="tab-back-button" value="Shipping Address" type="button"> 
</div> 
<input value="Payment Method" name="shipping-method-section-button" class="shipping-method-section-button" type="button"> 

은 무엇입니까 : 여기

jQuery("#shipping-method-section").html(output.html()); 

다른 모든 브라우저가 그 라인을 다시 끌어 무엇인가 여기에 진정으로 RAW 출력은 Firefox 3.6.x가 다음과 같이 되 돌린다 :

<h2>Select a shipping method:</h2> 
<ul id="shipping-methods"> 
    <li><span><label><input name="shipmethod" value="FedEx+Priority+Overnight" class="shopp shipmethod" type="radio"> FedEx Priority Overnight — <strong>$30.68</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 28, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+Standard+Overnight" class="shopp shipmethod" type="radio"> FedEx Standard Overnight — <strong>$26.46</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 28, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+2Day" class="shopp shipmethod" type="radio"> FedEx 2Day — <strong>$19.10</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 29, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+Express+Saver" class="shopp shipmethod" type="radio"> FedEx Express Saver — <strong>$18.79</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 30, 2011</span> </label> </span> </li> 
    <li> <span> <label><input name="shipmethod" value="FedEx+Home+Delivery" class="shopp shipmethod" checked="checked" type="radio"> FedEx Home Delivery — <strong>$13.52</strong> <span>Estimated Delivery:&nbsp;&nbsp;September 27, 2011</span> </label> </span> </li> 
</ul> 

나는 할 수있다. 운율이나 이유를 찾지 마십시오.

임시 해결 방법으로 Firefox 3을 감지하고 완전히 새로 고쳐서 다음 탭으로 이동시키는 JavaScript를 작성했습니다.

누구나이 작업을 올바르게 수행하는 방법에 대한 아이디어가 있습니까?

감사합니다. Clif

EDIT. 여기에 전체 자바 스크립트는 다음과 같습니다

jQuery.post(url, data, function(output) { 
    if(error_check_passed(output, "FedEx")) 
    { 
     jQuery("#shipping-section").css({ 'opacity' : 1.0 }); 
     update_cart_summary(output); 

     hide_errors(); 
     output = jQuery("#shipping-method-section", jQuery(output)); 

     jQuery("#shipping-method-section").html(output.html()); 
     allowTabChange = true; 
     jQuery("#checkout-tabs").tabs('select', 1); 
    } 
    else 
    { 
     jQuery("#shipping-section").fadeTo('fast', 1.0); 
     show_errors(output, "FedEx"); 
    } 
}); 
+1

"JavaScript의 관련 라인"은 AJAX 상호 작용과 관련된 것으로 생각됩니다. 또한 Firebug 등을 사용하여 실제 HTTP 응답을 확인했다고 가정합니다. – Pointy

+0

'출력'이란 무엇이며 어디에서 오는 것입니까? –

+0

소음을 줄이기 위해 최소한을 포함 시켰습니다. JavaScript 블록 전체를 추가했습니다. 출력은 PasteBin에 넣은 POST의 원시 데이터입니다. FireBug로 검사 했으므로 문제가있는 곳을 알고 있습니다. – clifgriffin

답변

1

두 개의 form 태그와 관련이 있습니다. 붙여 넣기 상자를 복사하여 shipping-method-section이 들어있는 부분으로 잘라내어 ff3.6에서 제대로 작동합니다. 그런 다음 해당 섹션이있는 섹션을 추가했습니다 (form 섹션). 그런 다음 파산했다. 외부 form 섹션을 다른 섹션으로 변경하면 정상적으로 작동합니다. 그 이유는 내부 서식 태그가 firebug (최신 버전에서도)를 사용하여 DOM을 탐색하면 제거되는 이유이기도합니다. FF3에서 귀하의 페이지를 검사하는 경우.버튼이 제대로 표시 할 때 6은 다시로드하기 전에, 나는 당신이 hr 모든 태그를 변경할 수 없습니다 그것은 내가 form 섹션을 실현 shipping-method-selectiondiv

외부 후 찾을 것입니다 생각, 그래서 아니에요 그 문제를 해결하기 위해 할 수있는 일이 무엇인지 확인하십시오. 중첩 된 양식 aren't allowed,하지만 많은 사람들이 어쨌든 아무 문제없이 사용하는 것을 알고 있습니다.

--edit--

나는 현장에서보고, 그리고 <hr>과에 내부 shipping-method-section입니다. 그러나, 나는 전체 페이스트 빈했다이 한 :

이 출력에서 ​​
jQuery.post('testClifPost.html', function(output) { 

    var d = document.createElement('div'); 
    d.innerHTML = output; 
    console.log(d); 
} 

, <hr>shipping-method-section의 외부입니다. 이것은 jQuery가 아니라고 말하고있는 것 같습니다. 파이어 폭스 3.6에서는 javascript가 브라우저에로드 할 때 구문 분석을 요청할 때 상황을 다르게 파싱합니다.

+0

아셰 르, 피드백에 감사드립니다. IE8에 이상한 문제가있는 것으로 밝혀져 지금 당장이 문제를 조사하고 있습니다. – clifgriffin

+0

중첩 된 양식이 문제였습니다. Shopp은 요청을 처리하는 방식에 다소 관대하기 때문에 궁극적으로 어떤 기능에도 영향을 미치지 않습니다. 감사! – clifgriffin

0

그것은 FF는 <hr> 태그를 좋아하지 않으며, 거기 파괴되어있을 수 있습니다. <hr> 대신 <hr />을 사용해 보셨습니까?

+0

이것은 전혀 문제가되지 않습니다. '


' 태그는 XHTML 자체 마감 버전과 영원히 닫히지 않은 HTML로 잘 작동합니다. – Pointy

+0

실제 출력은


입니다. 내가 읽은 깔끔한 도구로 인해 쉽게 읽을 수 있도록 들여 쓰기가 바뀌 었습니다. # @ $ % – clifgriffin

+0

원시 출력이있는 다른 pastebin을 추가했습니다. – clifgriffin