Pixy 방식은 IE의 캐시 버그에 영향을 받아 깜박거립니다. 실제로 이 문제는 명확하게 명시되어 있지 않지만 실제로 버그는 조건부입니다. 즉, IE의 캐시는 기본값인 자동이 아닌 페이지를 방문할 때마다로 설정됩니다. 기본적으로 개발자만이 액세스할 때마다 업데이트를 확인하도록 캐시를 설정하므로 이 버그는 실제로 실제 사용자에게 영향을 미치지 않습니다(winxpsp2 및 ie6의 테스트에 따르면 네트워크 액세스 API가 여전히 호출될 수 있지만 실제 사용자는 없습니다). 증상은 마우스가 매우 짧은 시간 동안 떨리지만 이미지가 깜박이지 않는 것입니다. 또한 누군가 IE가 배경 이미지를 캐시하도록 하는 비공개 방법을 발견했습니다: document.execCommand("BackgroundImageCache",false,true)
이 방법을 사용하면 API 호출도 피할 수 있으며 IE 메모리에 직접 캐시되는 것 같습니다. 가운데.
IE6에서 설정한 배경이미지는 캐시되지 않습니다. 서버가 캐시되더라도 캐시하고 싶다면 캐시만 가능합니다~~
UI 해본 분들. 디자인과 개발은 필수입니다. 아시다시피 IE(IE7 제외)는 종종 서버에서 배경 이미지를 다시 로드하며, 좋은 UI 인터페이스는 IE(IE7 제외)에 던져지고 있습니다...
Erik이 발견한 간단한 솔루션 (IE7 이하의 IE에 유효하며, 실제로 IE7에서는 이 버그가 수정되었습니다.)
프로그램 코드
document.execCommand("BackgroundImageCache", false, true);
Ext 소스코드를 읽다가 Jack을 발견했습니다. 오늘 Slocum은 이를 고려하여 Ext.js에 구현을 제공했습니다. 이 세부 사항에서 우리는 Ext의 포괄성을 볼 수 있습니다~
프로그램 코드
var isIE = ua.indexOf(" msie" ) > -1, isIE7 = ua.indexOf("msie 7") >
// CSS 이미지 깜박임 제거
if(isIE && !isIE7){
try{
document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
}
오늘 Huanyu의 dreamplayer 플레이어 소스 코드를 읽다가 발견했습니다. Yu Huanyu도 IE의 백그라운드 캐시를 복구했지만 IE7에서는 이러한 현상이 더 이상 존재하지 않는다고 생각했습니다. 이것은 evml.js에 있는 관련 코드입니다~ (그런데 그는 몇 마디 중얼거렸습니다. 이 사람은 JS를 쓰지 않습니다. . 세미콜론을 추가하는 건 예전에도 그랬고 지금도 이렇게 압축할 수 있죠? 하~ 다음 코드는 두세 문장이라도 습관대로 세미콜론을 추가했습니다~)
프로그램 코드
창 .isIE=navigator.appName.indexOf( "Microsoft")==0;
if(isIE){
document.documentElement.addBehavior("#default#userdata")
document.execCommand(" BackgroundImageCache",false,true);
}
얼마 전 많은 사람들이 IE가 항상
서버에서 배경 이미지를 다시 로드하는 버그를 해결하는 방법을 다루었습니다.
Dean이 하나를 썼고 다른 많은 사람들도 같은 내용을 썼습니다. 오늘 저는 다음과 같은 간단한 해결 방법을 보았습니다
(이전에 Microsoft에서 근무했던 동료 Google 직원의 글).
문서. execCommand("BackgroundImageCache", false, true )
훨씬 간단하지만 왜 이것이 기본 설정이 아닌지 궁금합니다.
/**
* 관련 답변
* 작성자: Nicholas C. Zakas @2007-02-26
*/
사실 한동안 이 "버그"에 대해 궁금해했습니다.
아마도 이 결정은 논리적인 이유로 내려졌을 것입니다…
아마도 배경 이미지가 얼마나 사용될지 예상하지 못했을 수도 있습니다. 그들은
배경 이미지를 캐시하지 않는 것이 바람직한 몇 가지 사용 사례가 있다고 생각했습니다.
저는 일반적으로 디자인 결정으로 보이는 것들을 무시하는 것을 좋아하지 않습니다.
저는 이것이 "버그"라고 생각해 본 적이 없습니다. 버그에는 일반적으로 "버그 끄기"라는 스위치가 없습니다.