Opera 용 사용자 JS를 작성 중입니다. 확장자가없는 요청에 대해 반응합니다 (예 : /stuff/code/MyFile
이거나 자바 스크립트와 관련이없는 매크로가 있습니다 (예 : /stuff/code/load.do
. 응답의 콘텐츠 형식은 순수 JavaScript 소스 (text/javascript
)를 반환하더라도 text/html
으로 설정됩니다. 서버 코드에 대한 액세스 권한이 없으므로이 코드를 사용하면됩니다.Opera User-JS : 원시 서버 응답을 얻으려면 어떻게해야합니까?
지금 문제는 라인 번호 등으로 소스를 포맷하여 Opera 내부에 표시하고자하는 것입니다. 따라서, 나는 AfterEvent.DOMContentLoaded
(또한 시도했습니다 AfterEvent.load
, 같은 건)에 반응하는 일부 사용자 - JS 썼습니다. 본문, 즉 자바 스크립트 코드에 액세스하려면 e.event.target.body.innerHTML
으로 읽습니다.
원본 만 HTML 태그 또는 비교 연산자 (<,>)를 포함하지 않으면이 둘만으로도 잘 작동합니다. 그것이 있기 때문에, 나는 결코 내가 원하는 출력을 얻지 못한다. Opera는 text/html
-response를 자체 표현 형식으로 변환하는 내부 논리를 갖고있는 것으로 보입니다. 여기에는 예를 들어 HTML 태그가 제거 된 후 CRLF 또는 두 개의 "일치하는"< 및> (비교 연산자!) 사이의 코드가 각각의 단어 뒤에 =""
을 적용하여 하나의 단일 행으로 함께 잘립니다.
문제가있는 부분입니다.
사용자 -JS없이 동일한 URL을 요청한 다음 "페이지"의 소스를 보면 서버가 보낸 것과 동일한 깨끗한 JavaScript 코드를 볼 수 있습니다. 그리고 이것은 내가 접근하고자하는 것입니다.
innerHTML
대신 innerText
을 사용하면 오페라는 파일을 원본과 다른 HTML 태그를 제거합니다.
나는 또한 outerHTML
, outerText
및 textContent
을 보려고했지만 모두 동일한 문제가 있습니다.
나는 오페라가 여기서 아무 것도하지 않는다는 것을 안다. 서버는 text/html
이고 Opera는 응답의 종류가 보통 text/html
일 경우 간단하다고 말합니다.
따라서 제 질문은 : 사용자 JS로 손길이 닿지 않은 응답을받을 수있는 방법이 있습니까?
오페라 왔을 때 텍스트/자바 스크립트 응답, 여전히'
'에 둘러싸 및 응답 텍스트/자바 스크립트 인 경우 확인할 방법이 없다 (또는 텍스트/*하지만 text/html과 다른) . –