우리는 역사를 이용할 수 있다.js 크로스 브라우저 호환성 실현
6234 단어 jquery-pjax
묘사
만약 pjax 지원History.js이 싫어하는 크로스 브라우저 호환성 오류를 해결하고 HTML4 브라우저를 선택적으로 지원한다면 다행이다.토론 #1
무슨 잘못이요?나는 매우 흥미가 있지만, 더 많은 정보가 필요하다.HTML4 지원:https://github.com/defunkt/jquery-pjax/blob/master/jquery.pjax.js#L175-177
걱정 마세요.그것들은 역사 자술에 열거되어 있다.js, 다음은 발췌문입니다.
- 역사js에서 다음 브라우저 오류를 해결했습니다.
- HTML5 탐색기
-Chrome 8은 초기 상태로 돌아갈 때 올바른 상태 데이터를 포함하지 않는 경우가 있습니다.
- 페이지에 해시를 로드할 때 Safari 5, Safari iOS 4 및 Firefox 3 및 4는 이벤트를 트리거하지 않습니다
토론 #2
.- SAfari 5 및 Safari iOS 4는 해시 값이 다른 브라우저와 다른 경우 이벤트를 트리거하지 않음
onhashchange
- 해싱onpopstate
이 호출/bug report로 교체되면 Safari 5와 Safari iOS 4는 올바른 상태로 돌아갈 수 없습니다.- SAfari 5 및 Safari iOS 4가 사용 중인 상황에서 상태 변경을 적용하지 못할 때가 있습니다/bug report
- 페이지 로드/change recommendation되면 RC 이전 구글 크롬 8, 9, 10 및 Firefox 4가 항상 시작
replaceState
- safari iOS 4.0, 4.1, 4.2에는 실행되는 HTML5 역사 API가 있습니다. 브라우저의 실제 후퇴 단추가 작동하지 않음에도 불구하고 HTML4 브라우저로 간주합니다.- 실제 HTML5 브라우저 사용
onpopstate
매개변수가 호출되지 않음title
과pushState
- HTML4 탐색기- MSIE 6, 7 및 Firefox 2와 같은 오래된 브라우저에 이벤트가 없음
replaceState
- MSIE 6과 7은 간혹 알려져도 해시를 적용하지 않을 때가 있다(두 번째 호출 apply 함수 필요)- 비 Opera HTML4 브라우저는 해싱을 사용할 수 없을 때 해싱을 사용하지 않는 경우가 있습니다
onhashchange
.- 모든 브라우저
- 웹 사이트가 떠나고 돌아오면(페이지 새로 고침 포함) 상태 데이터와 제목이 계속 존재하지 않습니다.
- 주 직함은
urlencoded
에 적용되지 않음:) HTML4 지원, 히스토리 정보js는 데이터와 제목 (심지어replace State) 을 허용하는 선택할 수 있는 산열 반환을 제공합니다. 산열이 이상적이지 않다는 것에 동의하지만, 어떤 사람들은 그것을 좋아하기 때문에 왜 선택할 수 있는지 모르겠습니다.
document.title
토론 #셋
역사가 존재하는지 모르겠습니다.js는 첫 번째 선택 라이브러리이지만, 교차 브라우저 (비 html5) 는 pjax에 아주 좋습니다.토론 #4
저는:+1:이것에 관해서요.나는 차라리 URL에서 산열을 볼지언정 느린 페이지 불러오는 것을 참지 않겠다.물론, 이것은 페이지를 불러올 때 해시 내용을 읽어야 한다는 것을 의미합니다.pushState만 사용할 때보다 더 많은 작업을 해야 합니다.토론 #5
헤이, 나는 이전에 pjax와 유사한 것을 쓴 적이 있는데, 나는 이 문제에 직면해 있다.- MSIE 6, 7, Firefox 2 등 오래된 브라우저에는 onhashchange 이벤트가 없습니다.
내가 찾은 가장 좋은 해결 방안은 jquery 플러그인입니다. 이것은 크로스 브라우저hashchange 이벤트를 제공할 수 있습니다. (비교적 오래된 브라우저에서는 퀴즈를 사용합니다.)
http://benalman.com/projects/jquery-hashchange-plugin/
토론 #6
pushState가 없는 브라우저는 지원하지 않지만 자신의 브라우저를 자유롭게 선택할 수 있습니다.)토론 #7
@defunk 이것은pushState가 없는 브라우저가 아니라pushState가 있는 브라우저입니다.사용 내역.js에서 Safari 및 iOS 장치를 지원할 수 있습니다.Google Chrome은 Firefox 4와 Safari가 없는 상태에서도 onpopstate 이벤트를 트리거합니다. 또한 브라우저 세션이 닫히면 데이터 인자가 지속되지 않습니다.역사가 이 문제들을 해결했다.js, 역사 기록을 포함할 필요가 없습니다.html4.HTML4에 대한 js 지원, 원하지 않으면.만약 네가 이렇게 한다면 모든 일을 찾을 수 있을 뿐만 아니라, 아주 좋을 것이다.토론 #8
@defunkt, 반논점?GitHub은 정말 브라우저 사이의 버그에 관심이 없습니까? 이 브라우저들은 실제로HTML5 역사 API를 지원합니까?및/또는 HTML4 사용자에게 풍부한 체험을 제공합니까?토론 #9
@balupton, 반박: HTML4 사용자의 URL 세션으로 되돌아가면 인터넷을 파괴할 수 있습니다.그들은 추천인을 파괴하고 검색엔진을 파괴하며 URL 단축기를 파괴하고 공유 링크를 파괴하여 사이트에 커다란 기술적 채무를 가져왔다. 만약hashbang이나
onhashchange
URL을 지원한다면, 당신의 영역의 루트 페이지에 자바스크립트 해시 처리 프로그램을 영원히 포함해야 한다.적어도 당신의 사이트를 가리키는 모든 오래된 링크가 정상적으로 작동하기를 원한다면.
Which should be forever .
: +1: HTML5 히스토리 API를 사용하여 브라우저 간 문제 해결 정보.
: -1: HTML4 브라우저에 대한 모든 종류의 역사 지원을 제공합니다.
토론 #10
고맙습니다. 저도 동의합니다. 이것이 바로 산열이 역사상 후퇴하는 이유입니다.js는 선택할 수 있습니다. (사용을 권장하지 않음). 그러나 일부 사용자들은 여전히 그것을 원합니다. (주로 공공 응용 프로그램에 닫힌 응용 프로그램)토론 #11
: 하트: @bobthecow토론 #12
알겠습니다.그래서 @defunkt 당신은 역사 가입을 지원합니다.js는 HTML5 역사 API의 크로스 브라우저 문제를 해결하는 데 사용되며 HTML4?를 지원하지 않습니다.토론 #13
pjax의 디자인 목표는pushState를 지원하는 브라우저입니다.이게 바로 pjax의 p입니다.어떤 사람들은 pushState를 지원하지 않는 브라우저를 원하지만, 이 사람들은 pjax를 사용할 필요가 없습니다.나는 줄곧 역사를 추천해 왔다.pjax 범위 밖의 것을 원하는 사람은 누구나 js를 사용할 수 있습니다. 저는 앞으로도 계속 이렇게 할 것입니다.브라우저 버그에 대해 pjax는 버그 push State 구현에 대해 약간의 복구를 진행했습니다. 나는 그것들이 나타날 때 더 많은 것을 합병하거나 추가하기를 기꺼이 바랍니다.zap: 아직 테스트하고 통합하지 않은 복구 프로그램 (#30) 과 해결되지 않은 인출 요청이 있다는 것을 알고 있습니다.
토론 #14
@bobthecow가 맞습니다.하지만 해시 지원이 필요해. 내가 추가했어.https://github.com/ckald/jquery-pjax/토론 #15
@ckald:hashchange 이벤트와 pjax를 병합하려고 했을 때 IE9에서 오류가 발생했습니다.pjax는 방법이 아니야.pjax의 일반 버전을 사용할 때 오류를 발견하지 못했습니다.이것이 바로 내가 pjax를 호출하는 방식(jQuery 1.7.1 사용): $([href^='+siteURL+'): not([href ='/wp admin/')): not([href ='/wp login.php')): not([href$='/feed/'))))pjax("주");
토론 #16
@DogKnob, 아무도 문제없는 걸로 알고 있습니다.질문 하나 남겨주세요.https://github.com/ckald/jquery-pjax/증명 링크가 있습니다. 계속 토론해 주십시오.토론 #17
@ckald: 이 기능이 약간의 역할을 발휘하도록 노력했습니다.나는 더 이상 이 오류를 이해하지 못하지만, 나는 지금Wordpress에서IE의 구체적인 문제에 부딪혔다. (토론 #18
@DogKnob, 나는 defunkt가 우리로 하여금 그의lib이 아니라 여기서의lib에 대해 토론하게 하고 싶지 않다고 생각한다.나 개인적으로 말하자면, 나는 다시는 이곳에서 범람하지 않을 것이다.https://github.com/ckald/jquery-pjax토론 #19
를 취미로 삼다.나는 IE9에서 전문적으로 일할 PJAX가 필요하다. 그래서 나는 이것만 포함한다https://github.com/devote/HTML5-History-API페이지에서지금까지는 일종의 즐거움인 것 같다.토론 #20
@kim3er 죄송합니다. pjax는 IE9을 겨냥하지 않습니다.토론 #21
PJAX가 IE9에 대한 지지를 늘리는 것에 대해 흥미를 느끼지 않는다. 나는 네가 이렇게 하지 않는 것이 완전히 옳다고 믿는다.나의 마지막 논평은 순전히 향후 호환성을 원하는 사람들에게 정보를 제공하는 것이다.Rich토론 #22
kim3er:pjax 맞춤 제작 필요 없어요?OO토론 #23
는 맞춤형이 없습니다. 저는 PJAX 이전의 조건문에 스크립트를 추가했을 뿐입니다.<!--[if lte IE 9]>
<script src="/assets/history/history.iegte8-2ba4e7bd41fb9ab66b39900f904d6e4a.js" type="text/javascript"></script>
<![endif]-->
그것은 완벽하지는 않지만 (PJAX도 완벽하지는 않다) 상당히 괜찮다.
Reference
이 문제에 관하여(우리는 역사를 이용할 수 있다.js 크로스 브라우저 호환성 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/defunkt/jquery-pjax/issues/3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)