>웹 프론트엔드 >JS 튜토리얼 >하위 창, 상위 창 및 Silverlight_javascript 기술 간의 상호 호출

하위 창, 상위 창 및 Silverlight_javascript 기술 간의 상호 호출

WBOY
WBOY원래의
2016-05-16 18:21:051241검색

사실 그 사이의 호출은 매우 간단합니다~
기본장
1. 상위 페이지는 하위 페이지에서 JS를 호출합니다
먼저 하위 폼을 만듭니다

코드 복사 코드는 다음과 같습니다.

var win
$(function () {
Root = $('#Root').val();//루트 디렉터리 설정
})
function OpenPlayer(id, type, add) {
//제한하는 데 사용됩니다. 동일한 창은 한 번만 팝업될 수 있습니다
//사실 제한이 없더라도 window.open 매개변수에 이름이 같으면 반복적으로 열리지 않습니다
/ /window.open의 매개변수에 대한 다른 기사를 참조할 수 있습니다.
if (win == null || win.closed) {
win = window.open('http://loaclhost/ sl.aspx', 'win', 'width=870,height=650,top =1,left=0,scrollbars=0,resizing=0,status=1', true)
}

어떻게 부르나요?
코드 복사 코드는 다음과 같습니다.

this.alert('hello world!' );
win.alert('hello world!');
win.onload = function () { this.alert('test') }; 아시다시피, 첫 번째 줄은 이 창에 프롬프트 상자가 나타납니다(일반적으로 생략할 수 있습니다~)
사실 this와 win은 같은 유형이지만 다른 객체를 가리킵니다
그래서 그 방법은 동일합니다.
두 번째 줄은 하위 창에 프롬프트 상자를 띄우는 코드입니다.
상위 폼에 하위 폼의 이벤트를 작성할 수도 있습니다~
세 번째 줄의 기능은 하위 폼이 로드되면 상위 창에 프롬프트 상자가 팝업되는 것입니다.

2. 하위 폼이 상위 폼을 호출합니다

상위 폼이 하위 폼을 열면 이렇게 상위 폼창에 접근할 수 있습니다. opener 이 개체는 상위 폼이므로 해당 함수
를 직접 호출하면 됩니다
3. 하위 폼은 Silverlight 함수 또는 개체를 호출합니다
MSND에 자세히 소개되어 있습니다. 중국어로~ 여기에서 주요 단계에 대해 언급하도록 도와드리겠습니다. (Silverlight 개체를 호출하는 방법은 게시되지 않으며 포함되어 있습니다.)
첨부된 포털은 다음과 같습니다.
1. 이제 Silverlight에서 필요한 방법은 호출되는 함수는 속성을 추가합니다. - ScriptableMember



코드 복사 코드는 다음과 같습니다. // MyScriptableManagedType.cs
system.Windows.Browser 사용;
네임스페이스 HB {
public class MyScriptableManagedType {
[ScriptableMember()]
public string MyToUpper(string str) {
return str .ToUpper();
[ScriptableMember()]
공개 문자열 이름 { get; set }
}


2. 구성에서 이 개체를



코드 복사
코드는 다음과 같습니다. MyScriptableManagedType smt = new MyScriptableManagedType() ; HtmlPage.RegisterScriptableObject("mySLapp", smt) //이 함수가 외부 클래스의 함수가 아니고 sl 본문의 함수인 경우 그런 다음 this 포인터를 직접 전달하세요.

3. slverlight가 있는 페이지를 엽니다.
Silverlight 개체 태그에 "pluginLoaded" 값이 있는 onLoad 속성을 추가합니다.
다음 예에서는 Silverlight 컨트롤 참조에 사용되는 HTML 마크업을 보여줍니다.



코드 복사


코드 복사
코드는 다음과 같습니다.
4. Silverlight는 하위 폼에서 js를 호출합니다
마찬가지로 MSDN의 기사이기도 합니다. 포털:
이것은 매우 간단하고 직접적입니다:
HtmlPage.Window.Invoke ("MethodName", args);
첫 번째 매개변수는 함수 이름이고, 다음 매개변수는 이 함수에 전달되어야 하는 매개변수입니다.
개선
5. 상위 페이지는 하위 페이지를 엽니다. 매개변수를 Silverlight에 직접 전달합니다
이는 주로 초기화 중에 사용됩니다
첫 번째 부분에서는 http://loaclhost/sl.aspx 하위 창을 열었습니다
이때 GET을 사용하여 http://loaclhost/sl.aspx?id=1
과 같은 일부 매개변수를 전달한 다음 Silverlight에서 다음과 같이 액세스할 수 있습니다.

string id = HtmlPage.Document.QueryString ["id"];

6. 자식 창을 앞으로 가져오는 방법은 무엇입니까?
내 하위 페이지의 Silverlight 애플리케이션은 실제로 음악 플레이어이므로 일반적으로 하위 페이지가 최소화됩니다.
그런데 실버라이트 애플리케이션에서 MessageBox를 띄워도 여전히 최소화된 상태인데... 이는 사용자에게 매우 불친절합니다.
자식 창을 앞으로 가져오려면 상위 창에서 win.focus() 함수만 호출하면 됩니다.
그러나 약간의 처리만 하면 다음에서 구현할 수 있습니다. 상위 창, 하위 창 및 sl. 이 목적은
이므로 다음과 같이 할 수 있습니다.
1. 상위 창에 Focus()라는 함수를 작성합니다.
그런 다음 win.focus()를 호출합니다.
2. 하위 창 함수에 Focus()라는 함수를 작성합니다.
window.opener.Focus()를 호출합니다.
3. 마지막으로 Silverlight 애플리케이션을 맨 앞으로 가져오려면 상위 창이나 하위 창에서 Focus() 함수를 호출하거나 Silverlight에서 하위 창의 Focus() 함수를 호출할 수 있습니다

7. Silverlight가 완료되었는지 판단하는 방법 짐을 실은?
아래 아이디어가 여럿 있는데, 일부는 맞고 일부는 틀리네요
(√) Silverlight 애플리케이션 생성자에서 하위 페이지나 상위 페이지의 js를 (서브 페이지를 통해) 호출합니다. [이 방법은 가능하지만 약간 번거롭습니다]
(×) 하위 페이지에 window.onload 이벤트를 작성합니다. [이 이벤트가 발생하면 실버라이트가 로드되지 않을 수 있습니다.]
(√) 세 번째 부분인 3단계를 기억하시나요? ? [권장 방법]
이것을 추가하면 Silverlight가 로드된 후 하위 페이지를 트리거하는 함수가 실행됩니다.