로드하기 전에 문서에 삽입하고 싶은 스크립트가 있습니다. I.E; 내가 제대로 실행 크롬에서 스크립트를 만든 같은 doc start에서 Chrome 확장 프로그램 실행
<script..>MYSCRIPT HERE</script>
<html>
.
.
경우가 작동해야하지만, 그것은 내가 원하는하지 않은 다른 환경에서 실행 (I (0) 등 경고 할 수 있습니다). 페이지와 동일한 환경에서 실행하고 싶습니다.
이전, 내가 시작 스크립트에서 나는 효과적으로 실행 환경을 변경
window.location="javascript:<MY SCRIPT HERE>"
을 사용했다 트릭을 사용했지만 지난 몇 일 동안은 작동하지 않습니다. 나는 그것의 크롬 버그 수정을 생각한다. 이 다른 해결 방법이 있습니까? 참고 : document.body 등을 사용할 수 없기 때문에 시작 스크립트의 페이지에 스크립트 태그를 동적으로 추가 할 수 없습니다.
왜이 솔루션과 필자의 이전 솔루션이 필요한지 자세히 알려드립니다. HTML 페이지 내가 제어하지 않습니다
.
.
<script>
function a(){//DOSOMETHING}
</script>
.
.
<script>
a(); <<------ I DONT WANT TO CALL THIS
</script>
소중한 솔루션 : 'A'때 페이지의 오류 강제로 그 ^^
window.location='javascript:const a=function(){};';<<-CONST used!!
를 포함 자바 스크립트 시작 재 선언 실제로로드됩니다. 따라서 a()가 호출되면 아무 일도 일어나지 않습니다. (영리하고, 맞지? -_-)
그러나 지금, 나는 window.location = "js : .."를 할 때 깨달았다. 심지어 다른 env에서 실행된다.
도움말! :)
"문서로드시 삽입 됨"에서 "문서 시작시 삽입 됨"으로 응답을 변경해야합니다. 좋은 물건 그대, 문서 시작에 작동합니다 (필자는 과거에 그렇게하는 법을 알고 싶었습니다). – PAEz
공정한 포인트. 나는 '유휴'를 의미하기 위해'load'를 사용하는 데 불편을 겪었습니다. 그러나 문서의 시작 부분에 실제로 스크립트를 삽입해야한다면, 그 옵션을 반드시 가지고 있어야합니다. :) 나는 내 대답을 업데이트 할 것이다. –
답장을 보내 주셔서 감사합니다. 마이크, 해결책을 시도했지만 문제가 해결되지 않습니다. ( 테스트 :
<스크립트 typ ..> a = function() { // ORIGINAL CODES }; a(); // <- - 차단하려는 전화 . . 시작 스크립트 : s = document.createElement ('script'); s.innerText = 'const a = function() {};'; document.documentElement.appendChild (s); 스크립트에서 본문에 추가되지만 함수 "a"는 다시 선언됩니다. 예를 들어 함수 이름을 "b"로 변경하면 Chrome 스크립트 콘솔을 사용하여 페이지에서 "b"에 액세스 할 수 있지만 "a"는 덮어 쓰게됩니다. 이 문제를 방지하는 방법은 없습니까? – Akshay