2012-07-29 3 views
0

, 나는 성공적으로로드되지 않은 이미지를 제거의 OnError 사용하고 있습니다 img 태그에 페이지를 다시로드 할 때까지 실패하는 것은 :IE 9 및 jQuery (this) .remove(); 크롬, 파이어 폭스, 사파리에서

<img src="" onerror="jQuery(this).remove();" /> 

이 인터넷 익스플로러 9에서 작동하지 않는 것 , 페이지의 두 번째 + 새로 고침은 다른 브라우저와 마찬가지로 잘 작동합니다. IE에서 올바르게로드되지 않은 DOM에서 img 태그를 제거하는 더 좋은 방법이 있습니까? IE가 첫 번째 페이지로드시 이미지로드를 무기한 기다리는 것처럼 보입니다.

+0

은 * 짧은, 자기 - 포함 된, 문제의 올바른 예 * 그래서 우리는 더 나은 진단 할 수 있습니다 문제를 게시하시기 바랍니다. – saluce

답변

2

jQuery가로드되기 전에 이미지에서 오류가 반환 된 것으로 의심됩니다. 그러면 onerror 핸들러가 실행되지만 실패 할 수 있습니다.

이것은 실제로 jQuery로 처리 할 필요가 없습니다. 당신은 그것을 다루기 위해 정규 자바 스크립트를 사용할 수 있습니다.

this.parentNode.removeChild(this); 

현재 가지고있는 jQuery 코드에 대한 직접 대체 될 것이다 : 이런 식으로 뭔가 트릭을 할해야합니다. 비슷한 양의 코드와 jQuery에 대한 필요성을 제거하므로 로딩 시퀀스로 인해 발생할 수있는 문제를 제거합니다.

jQuery의 주된 이유 중 하나는 기존의 JS 코드가 HTML에 내장 된 필요성을 없애기위한 것이며, 원본과 같이 HTML 이벤트에서 jQuery 호출을 보는 것입니다 보기는 다만 틀리게 본다.

jQuery를 사용할 경우에는 그렇게하지 마십시오. jquery의 적절한 이벤트 처리 메커니즘을 사용하십시오.

jQuery('img').error(function() { 
    jQuery(this).remove(); 
}); 

이것은 HTML 외부의 별도 스크립트 태그에 있습니다.

그러나 로딩 시퀀스 문제와 이미지로드 오류가 페이지로드 초기에 발생한다는 사실 때문에 첫 번째 해결 방법을 제안 할 것입니다. 메인 페이지가로드 된 후에 이미지가 동적으로로드되는 경우 jQuery 솔루션이 더 유용 할 수 있습니다.

희망이 있습니다.

+0

나는 템플릿을 통해 이미지를로드 할 knockoutjs을 사용하고 있습니다. 아주 좋은 대답. –

1

내 의견으로는이 문제를 해결하는 가장 좋은 방법은 서버 측 스크립팅이 보류 중입니다. 파일이 존재하면 파일 검사를 수행하고, 나머지는 파일을로드하고, 그렇지 않으면 다음 또는 무언가를 건너 뛰어 렌더링하지 않습니다. 그러나 thats 나의 의견 및 theres 항상 무언가가 잘못 갈 나는 우연히 그것의 다운로드 도중 나가 맹세하십시오. 나는 당신이 개인적으로 사용한 적이

onError

이베을 사용하여 알 수 있지만, 모든 예제에서 나는 브라우저는 항상

onerror

많은이를 찾기 위해 노력 시간에서 본 속성을 대소 문자를 구분하지 않고 직접 수정하여 출력을 필요한 방식으로 렌더링하십시오. 그러나 IE는 무엇을 찾고 있는지 항상 매우 까다롭기 만합니다. 나는 낄낄 거리는 소리에 대해서만 말하며, 소문자로 해보고 그 때마다 생각 나는 것을 지켜 보는지, 만약 그렇다면 이것이 당신의 문제라고 말하면서 누군가가 당신의 의견에 게시 한 것처럼 우리에게 주면 좋겠다. 약간의 통찰력은 당신이하려고하는 것을 현명하게 코드하므로 우리는 어디에서 잘못 될지를 당신을 더 잘 돕기 위해 노력할 수 있습니다.

+0

고마워. 분명히 일부 브라우저는의 OnError를 허용하지만 브라우저에서 일치하지 않습니다. 서버 측 스크립팅까지는 로딩하기 전에 이미지를 필터링하는 것이 좋습니다. Dot Net Nuke를 서버로 사용 중이며 ASP.NET 웹 양식을 만들고 싶지 않습니다. 오히려, 나는 DNN 페이지에 자바 스크립트 떨어지는와 ASP.NET MVC 4 API 웹 사이트에 완전히 크로스 도메인을 일하고 있어요. 나에게는 훨씬 적은 어려움이있다. –

관련 문제