두 문제:첫 번 째 문제:xmlhttp 의 responseText 는 기본적으로 utf-8 의 인 코딩 입 니 다.얼마 전에 이 문 제 를 최소 비용 으로 해결 하기 위해 전체 항목 을 utf-8 로 인 코딩 합 니 다.인터넷 에서 해결 하 는 방법 이 많 지 않 고 모두 비교적 난잡 해서 좋아 하지 않 는 다.앞으로 모든 걸 utf-8 로 할 수도 없고.두 번 째 문제:xmlhttp 가 페이지 에 불 러 온 javascript 스 크 립 트 는 실행 할 수 없습니다.사건 의 구동 은 여전히 사용 할 수 있 습 니 다.얼마 전에 이 물건 을 피하 기 위해 아예 스 크 립 트 를 모두 썼 습 니 다.징 그 러 워,항상 이렇게 해,매번 수백 K 의 js 파일 을 불 러 와,징 그 러 워.그러면 지금 시간 이 있 습 니 다.가장 정통 적 인 방식 으로 해결 해 보 세 요.xmlhttp 는 원래 xml 을 조작 하 는 데 사용 되 는 responseText 가 되 돌아 오 는 것 입 니 다.인터넷 의 바 이 너 리 하 드 인 코딩 을 사용 하여 UTF-8 을 GB 2312 인 코딩 으로 바 꾸 는 방법 은 믿 을 수 없 을 뿐만 아니 라 다른 인 코딩 을 처리 하면 어 쩔 수 없습니다.사용 한 responseXML 이 되 돌아 오 는 IXMLHTTPRequest 는 xml 인 코딩 성명 에 의존 하여 인 코딩 이 어 지 러 울 수 없습니다.안 써 도 돼 요.xml version="1.0" encoding="gb2312"?> 스 크 립 트 는 이렇게 쓸 수 있 습 니 다.returnValue = xmldom.documentElement.text; returnValue 는 바로 제 가 필요 로 하 는 html 텍스트 입 니 다.상대 적 으로 딱딱 하 게 바이트 흐름 으로 인 코딩 을 바 꾸 는 것 이 좋 겠 습 니까?첫 번 째 문 제 는 기본적으로 해결 되 었 습 니 다.어떤 인 코딩 을 사용 하 든 utf-8,gb 2315.gbk,8859-1 로 문서 성명 을 바 꾸 면 됩 니 다.첫 번 째 문 제 는 xml 을 사 용 했 기 때문에 두 번 째 문제 도 쉽게 해결 할 수 있 습 니 다.우리 의 수 요 를 간단하게 분석 하고 한 페이지 의 스 크 립 트 를 실행 합 니 다.불 러 온 페이지 에 있 습 니 다.주로 두 곳 에서 HTML 이전의 성명 과 불 러 온 완료 시의 호출 입 니 다.페이지 의 사용 에 대해 서 는 DHTML 이벤트 로 구동 하면 됩 니 다.그러면 XML 의 구 조 를 변경 하 십시오.
스 크 립 트 를 처리 하고 이 몇 줄 을 써 보 세 요.BeginScript = xmldom.documentElement.selectSingleNode("onStart").text; htmlCode = xmldom.documentElement.selectSingleNode("body").text; endScript = xmldom.documentElement.selectSingleNode("onEnd").text; IE 에 서 는 문제 가 없 는 것 같 지만 fireforx 가 잘못 보 고 했 습 니 다.가 증 스 러 운 fireforx 에 서 는 textContent 라 니,select SingleNode 방법 도 소 용이 없습니다.브 라 우 저 인식 방법 은 어디서나 베 끼 면 됩 니 다.지금 나 는 IE 와 Firefox 만 관리 하 러 간다.내 기계 에 도 이 두 개 밖 에 없 으 니 코드 를 다시 고 쳐 라.아래 의 앞의 세 줄 은 왕 이 블 로그 에서 베 낀 것 이다.문제 가 있 으 면 인터넷 을 찾 는 것 이 좋 겠 다.정말 스스로 다시 쓰 는 것 이 귀 찮 으 니,나 로 하여 금 인터넷 으로 찾 게 하 는 것 은 말 할 것 도 없다.var isIE=(document.all&&document.getElementById&&!window.opera)?true:false; var isMozilla=(!document.all&&document.getElementById&&!window.opera)?true:false; var isOpera=(window.opera)?true:false; if(isIE){ BeginScript = xmldom.documentElement.getElementsByTagName("onStart").item(0).text; htmlCode = xmldom.documentElement.getElementsByTagName("body").item(0).text; endScript = xmldom.documentElement.getElementsByTagName("onEnd").item(0).text; }else{ BeginScript = xmldom.documentElement.getElementsByTagName("onStart").item(0).textContent; htmlCode = xmldom.documentElement.getElementsByTagName("body").item(0).textContent; endScript = xmldom.documentElement.getElementsByTagName("onEnd").item(0).textContent; } 완성나머지 는 어떻게 집행 하 느 냐 하 는 것 이다.스 크 립 트 를 동적 으로 실행 해 야 합 니 다.세 가지 방법 이 있 습 니 다.a)JavaScript 에서 글로벌 대상 의 eval()방법;b)DHTML window 의 execScript()방법;c)JavaScript 의 new Function();대상세 가지 방법 은 각각 우열 이 있 습 니 다.첫 번 째,스 크 립 트 의 문맥 관 계 는 호출 시의 문맥 을 사용 하여 역할 영역 문제 가 뚜렷하게 존재 합 니 다.실 행 된 역할 영역 은 호출 된 함수 나 방법 에 만 있 습 니 다.징 그 러 운 문제;두 번 째 는 DHTML 의 맨 위 에 있 는 윈도 우 를 실행 하 는 것 입 니 다.역할 영역 에 문제 가 없 지만 execScript()방법 은 브 라 우 저 호 환 문제 가 있 습 니 다.그냥 IE 만 의 방법.Firefox 에서 사용 할 수 없습니다.세 번 째 는 사용 이 불편 한 것 을 제외 하고 하나의 방법 을 설명 하 는 데 사 용 될 것 이다.만약 에 하나의 변수 만 설명 하면 매우 번 거 로 운 문제 이다.브 라 우 저 호 환 문 제 를 고려 하지 않 는 다 면 두 번 째 를 사용 하 는 것 이 최선 이다.세 번 째 는 고려 하지 않 는 다.첫 번 째 는 역할 영역 문 제 를 해결 할 수 있다 면 가장 좋다.내 가 생각 한 방법 은 다음 과 같다.우 리 는 웹 페이지 에서 var author="연극 은 사람 을 해산 시 킬 수 있다"는 변 수 를 설명 합 니 다.함 수 를 설명 합 니 다.즉:function getBlogUrl(){return author+"의 블 로그 주소:http://shizhong8841.blog.163.com"; } 이때 우 리 는 window.author="사람 을 해산 시 키 는 연극"에 해당 한다.window.getMyBlogUrl=function(){return this.author+"의 블 로그 주소:http://shizhong8841.blog.163.com"; } 그러면 우 리 는 window 쌍 상 을 조금 만 확장 하면 된다.window.runScript = function(str){ eval(str); } 신기 한 this 다음은 this.a=0;또는 this.funName=function(arg 0){};이 방식 으로 스 크 립 트 를 작성 하고 runScript(str)를 호출 합 니 다.방법 은 페이지 에서 전체적인 속성 과 방법 을 정의 하 는 것 과 같다.즉,역할 영역 문 제 를 개척 하여 우리 의 목적 을 달성 할 수 있다.현재 모든 문 제 를 해결 하고 인터넷 Elpxerer 6.0 과 Firefax 2.0 에서 모두 테스트 를 통과 합 니 다.쓴 코드 가 너무 어 지 러 워 서 위 에 붙 이지 않 고 창피 함 을 덜 었 지만 생각 은 옳 을 것 이다.더 많은 문 제 는 나중에 다시 이야기 하 자.