2009-12-23 2 views
2

방금 ​​온라인 상점을 출시했습니다.onChange가 Internet Explorer 7을 왜 고장 나게합니까?

일부 컴퓨터에서는 선택 상자가 Internet Explorer 7과 충돌합니다. 내 컴퓨터에 절대로 없어. 아무도 이유를 알고 있습니까?

실시간 링크 : http://velour.se/collection/women/tops/eloise 업데이트 : 게시 된 첫 번째 충돌이 발생하지 않은 것으로 나타났습니다. 그러나 다음을 수행합니다 http://velour.se/collection/women/outerwear/irina

SCREENDUMP : http://skitch.com/jesperlind/nc4j2/tops-eloise-velour-ie7-bug

원래 버전 :

다음
<select id="sizeDD" onchange="javascript:SizeChange(this);"></select> 

//Internet Explorer problem. 
function SizeChange(e){ 
    DrawAmountDD(GetAmountById(e.value)); 
} 

내가 생각하는 코드의 비트를 포함 할 수있다 :

function DrawAmountDD(maxAmount){ 
     /*var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount; 
     var html = ""; 
     for(var i=1; i <= max; i++){ 
      html += "<option value='" + i + "'>" + i + "</option>"; 
     } 
     $("#amountDD").html(html);*/ 

     var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount; 
     var ddlAmount = document.getElementById("amountDD"); 
     ddlAmount.length=max; 

     for(var a=1; a <= max; a++){ 
      ddlAmount.options[a-1].value = a; 
      ddlAmount.options[a-1].text = a; 
     } 
    } 

버전 2 :

<select id="sizeDD"></select> 
<select id="amountDD"></select> 

<script type="text/javascript"> 
    var maxShowAmount = '5'; 
    var colorSizeArr = 
     { "colSize": 
     [ 
      { "color": "Black/Offwhite", 
       "specificId": "2", 
       "size": "XS", 
       "amount": "1" } 
     ] 
     }; 

    colorSizeArr.colSize.push(
     { "color": "Black/Offwhite", 
     "specificId": "13", 
     "size": "S", 
     "amount": "2" }); 

    $(document).ready(function() { 
     var selectSizeDD = document.getElementById('sizeDD'); 
     selectSizeDD.onchange = function() { sizeChange(selectSizeDD); }; 
    }); 

    function sizeChange(e) { 
     DrawAmountDD(GetAmountById(e.value)); 
    } 

    function GetAmountById(specificId) { 
     for (var i = 0; i < colorSizeArr.colSize.length; i++) { 
      if (colorSizeArr.colSize[i].specificId == specificId) { 
       return colorSizeArr.colSize[i].amount; 
      } 
     } 
     return 1; 
    } 

    function DrawAmountDD(maxAmount) { 
     var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount; 
     var html = ""; 
     for (var i = 1; i <= max; i++) { 
      html += "<option value='" + i + "'>" + i + "</option>"; 
     } 
     $("#amountDD").html(html); 

    } 
</script> 

업데이트

내가 파악하지 않은 exatcly 왜 인터넷 익스플로러 일부 컴퓨터 7 개 충돌합니다. 위의 코드가 어떤 방식 으로든 관련이 없었습니다. 훨씬 더 간단했습니다. 단 하나의 옵션으로 선택 상자를 클릭하면 브라우저가 충돌합니다. 이처럼 : 그것은 하나의 옵션뿐만 아니라 선택한 속성을 가져야한다고 말한다 만 수행이 속성 밖으로 우리를 위해 충돌 보인다 곳

<select id="amountDD"> 
<option value="1">1</option> 
</select> 

나는이 링크에 관한 정보를 발견했다.

http://www.akselvoll.net/2007/08/ie7-crashes-when-clicking-on-drop-down.html

+1

'GetAmountById'기능도 게시 할 수 있습니까? –

+2

또한 - 충돌로 인한 것이 무엇인지 설명 할 수 있습니까? 스크린 샷에는 사이트가 표시되지만 오류는 표시되지 않습니다. –

+0

브라우저가 완전히 충돌하지만 내 컴퓨터에는 없습니다. – jesperlind

답변

1

내가 할 수있는 한 최선을 다해 답변 해 드리겠습니다. 어떤 시체가 더 자세한 답변을 가지고 있다면 추가하십시오.

브라우저 또는 시스템의 버그로 인해 일부 상황에서 Internet Explorer 7이 충돌하는 것 같습니다. 문제가 발생한 컴퓨터는 HP에서 Vista를 실행 한 것입니다. 아마도 벤더 같은 브라우저를 방해 뭔가를 설치 한 여기에 설명 된 바와 같이 "내 HP ProtectTools를 보안에 사인온"http://social.msdn.microsoft.com/Forums/en/iewebdevelopment/thread/63216546-9289-4345-898c-860d02db7357

다른 possibillites는 여기에 설명되어 있습니다 http://www.akselvoll.net/2007/08/ie7-crashes-when-clicking-on-drop-down.html

쉬운 수정 버전 8 Internet Explorer를 업그레이드하는 것입니다

1

먼저 마크 업에서 javascript: 접두어 필요가 없습니다. 핸들러는 javascript 코드를 기대하며, 모든 브라우저에서 실제로 파싱하는 것이 놀랍습니다. 일반적으로 href 속성에서이 태그를 프로토콜 태그로 간주하며이를 처리하는 좋은 방법이 아닙니다. 둘째, 함수에 대한 매개 변수는 value 속성이 잘 지원되거나 그렇지 않을 수있는 DOM 요소 (select)에 대한 참조입니다. http://www.w3schools.com에 HTML/자바 스크립트 DOM에 대한 좋은 참조가 있습니다. 자세한 내용은 Select 참조. 가치를 얻으려면 e.options[e.selectedIndex].value 할 수 있습니다. 셋째, 아마 javascript를 통해 핸들러를 추가하는 것이 좋습니다.

var select = document.getElementById('sizeDD'); 
select.onchange = function() { sizeChange(select); }; 

아니면 내가 지금 볼 수 있기 때문에 당신이 사용하고 있는지 jQuery를이 :

내가 "충돌"에 의해 희망
$('sizeDD').change(sizeChange); 
+0

나는 downvote를별로 신경 쓰지 않지만 아마도 내가 잘못한 것을 설명하기를 원할지도 모른다. 내가 틀렸을 때 나는 항상 행복해한다. – tvanfosson

+0

http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-94282980 'value' 속성을 참조하십시오. 그것을 여기에서 시험하십시오 : http://jsbin.com/ecuni. ('selectedIndex'는 소리가 좋으며 브라우저에서 잘 작동합니다.) (또한 downvote에 대해 놀라지 않는 것에 대해 감사합니다 .DV'ing + commenting을 할 때 최근에 화상을 입었습니다.) –

+0

학습하는 것을 흥미롭게 - 사양을 확인하지는 않았지만 w3schools에서 더 자주 사용되는 리소스. – tvanfosson

1

당신은 없다 "자바 스크립트가 작동하지 않습니다"의미 "인터넷 익스플로러가 충돌합니다." 페이지 일 경우 일반적으로 상태 표시 줄의 "페이지에 오류"를 클릭하여 오류를 볼 수 있습니다.
또한 몇 가지 고전적인 JavaScript 디버깅을 시도하십시오. 충돌하는 블록을 찾을 때까지 한 번에 하나씩 함수의 블록을 주석 처리 한 다음 줄로 좁 힙니다.

+0

총 충돌이 발생했습니다. 나는 고객의 노트북에서 그것을 보았다. 두 대의 컴퓨터에서 매번 발생합니다. 나는 그들에게 모든 애드온을 비활성화시키고 캐시를 비우라고 요청했지만 여전히 그렇다. js 오류가 없습니다. 나는 ceveral 기계에 alla broswers를 시도했다. 내 IE7이 충돌하지 않습니다. 오직 고객. – jesperlind