2

그래서 웹 사이트에서 자바 스크립트 변수를 조작하여 페이지를로드하면 미리 결정된 값 (inmyscript.js)이 변경됩니다.사파리 확장 - 미리 정의 된 자바 스크립트 변수 값 변경

Safari의 확장 빌더에서

나는 다음과 같은 설정이 있습니다

  • 액세스 수준 : 모든
  • 시작 스크립트 (이 시간 것에 대해 제대로 실행되고 있는지 확인하려면) : jquery.min.js를합니다 (JQuery와 스크립트)
  • 끝 Scritps : 나는 약간의 DOM 조작을 위해 jQuery를 사용하여 원하는 myscript.js (로 myscripf)

시작 스크립트, JQuery와 스크립트를로드합니다. 종료 스크립트는 html 문서에서 변경하려고하는 변수에 대한 덮어 쓰기를 포함하는 스크립트입니다. 내가 뭘하려고 오전의 예를 들어

$(document).ready(function(){ 
    var numberImThinkingOf = 999; 
}); 

: 다음 페이지를 제출 새로운 단락 요소마다 시간을 만들어, numberImThinkingOf의 값을 출력

현재 myscript.js처럼 보이는 버튼을 누릅니다.

그래서 함께 확장 밖으로는

  • 값을 출력한다 : 5
  • 값 : 5
  • 값 : 누르면 5

경우 세 번.

    : 내가 누를 때이 출력 것이다 버튼을 제출 그래야

    그러나 나는 내 사파리 확장이 myscript.js에 지정된에 한 번 모든 DOM 요소가로드 된 numberImThinkingOf 변수의 기본값을 변경하려면

  • 값 : 999

이상적으로 나는 DOM을 조작하여 다른 스크립트 요소를 삽입하고 싶지 않습니다. 원래는 자바 스크립트 변수를 윈도우 객체에 붙였습니다. 그러나 나는 틀렸다고 생각한다.

과 같은 스크립트가있는 경우의 이벤트
$(document).ready(function(){ 
    alert(numberImThinkingOf) 
}); 

결과는 정의되지 않습니다. :(어떤 도움이 나를 많이 감사 것이다

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <script> 
    var numberImThinkingOf = 5; 
    function whatNumber(){ 
     var newElement = document.createElement("p"); 
     newElement.textContent = "Value: "+numberImThinkingOf; 
     document.body.insertBefore(newElement, document.body.firstChild); 
    } 
    </script> 
</head> 

<body> 
<input type="submit" value="Continue &rarr;" onclick="whatNumber()" /> 
</body> 
</html> 
+0

jQuery를 시작 스크립트로로드하는 이유는 무엇입니까? 그럴 필요가 없습니다. 시작 스크립트는 실제로 리소스로드를 방해해야하는 스크립트에만 사용됩니다. 첫 번째 스크립트로로드하십시오. –

답변

3

을 내가 스크립트와 페이지가 예상치 못한 오염을 방지하기 위해, 다른 window 객체를 얻을 생각 여기 Safari Extensions Development Guide의 말씀입니다 :..

주입 된 스크립트는 암시했다 네임 스페이스 - 웹 사이트 작성자의 변수 또는 함수 이름과 충돌하지 않아도되며 웹 사이트 작성자가 내선 번호의 함수를 호출 할 수도 없습니다. 즉, 격리 된 세계에서 실행되는 웹 페이지에 포함 된 스크립트 및 스크립트를 삽입 할 수 있습니다. , 서로의 기능이나 데이터에 대한 액세스 권한이 없습니다.

이 변수를 태그의 속성으로 DOM에 첨부해야하는 것처럼 들립니다.

2

상위 페이지 변수에 액세스하려는 경우 콘텐츠 스크립트를 샌드 박스로 지정하면 코드에 <script> 태그를 삽입해야합니다. here 몇 가지 예를 찾을 수 있습니다.