Home > Web Front-end > JS Tutorial > body text

Mutual calls between child windows, parent windows and Silverlight_javascript skills

WBOY
Release: 2016-05-16 18:21:05
Original
1227 people have browsed it

In fact, the calls between them are very simple~
Basic Chapter
1. The parent page calls the JS in the child page
We first create a child form

Copy code The code is as follows:

var win
$(function () {
Root = $('#Root').val();//Set the root directory
});
function OpenPlayer(id, type, add) {
//This is used to limit the same window to only It can pop up once
//In fact, even if there is no restriction, as long as the name in the window.open parameter is the same, it will not be opened repeatedly
//You can refer to other articles for the parameters in window.open, there are many
if (win == null || win.closed) {
win = window.open('http://loaclhost/sl.aspx', 'win', 'width=870,height=650,top =1,left=0,scrollbars=0,resizable=0,status=1', true);
}

How to call it?
Copy code The code is as follows:

this.alert('hello world!');
win.alert('hello world!');
win.onload = function () { this.alert('test'); };

As we all know, the first line is A prompt box pops up in this window (this can be generally omitted~)
In fact, this and win point to the same type but different objects
So, their methods are the same.
The second line is the code to pop up a prompt box in the sub-window.
You can also write events of the subform in the parent form~
The function of the third line is that when the subform is loaded, the parent window pops up a prompt box.
2. The child form calls the parent form
This is similar to the above. When the parent form opens a child form, you can access the parent form
window like this. opener
This object is the parent form, just call the corresponding function directly
3. The subform calls the silverlight function or object
This is introduced in detail on MSND, in Chinese ~ Here, I will help you mention the main steps (the method of calling the silverlight object will not be posted, it is included in it)
Attached is the portal:
1. Now in silverlight, the method that needs to be called is The called function adds an attribute - ScriptableMember
Copy code The code is as follows:

// MyScriptableManagedType.cs
using System.Windows.Browser;
namespace HB {
public class MyScriptableManagedType {
[ScriptableMember()]
public string MyToUpper(string str) {
return str .ToUpper();
}
[ScriptableMember()]
public string Name { get; set; }
}
}

2. In the construction Register this object in the function
Copy code The code is as follows:

MyScriptableManagedType smt = new MyScriptableManagedType() ;
HtmlPage.RegisterScriptableObject("mySLapp", smt);
//If this function is not a function in the external class, but a function of the sl body, then just pass in the this pointer directly

3. Open the page where slverlight is located
In the Silverlight object tag, add the onLoad attribute with the value "pluginLoaded".
The following example demonstrates the HTML markup used for Silverlight control references.
Copy code The code is as follows:

type="application/x-silverlight-2" width="100%" height="100%">






4. In the existing script element on the page, add the JavaScript function of the pluginLoaded method.
Use the getHost method to obtain a reference to the Silverlight control. The following example shows the JavaScript code for the pluginLoaded method.
Copy code The code is as follows:



4. Silverlight calls js in the subform
Similarly, it is also an article on MSDN~ Portal:
This is super simple and direct:
HtmlPage.Window.Invoke ("MethodName", args);
The first parameter is the function name, and the following parameter is the parameter that needs to be passed in for this function.
Improvement
5. When the parent page opens the child page, Directly pass in parameters to silverlight
This is mainly used during initialization
In the first part, we opened the http://loaclhost/sl.aspx sub-window
This At this time, we can use GET to pass in some parameters such as: http://loaclhost/sl.aspx?id=1
and then access it in silverlight like this:

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

6. How to bring the child window to the front?
The silverlight application in my subpage is actually a music player, so the subpage is generally minimized.
However, when I pop up the MessageBox in the silverlight application, it is still in a minimized state... This is very unfriendly to users.
If you want to bring the child window to the front, you can only call the win.focus() function in the parent window.
However, as long as we do a little processing, it can be achieved in the parent window, child window, and sl. This purpose is
so you can do this:
1. Write a function in the parent window, called Focus()
Then call win.focus();
2. Write a function in the child window function, called Focus()
Call window.opener.Focus()
3. Finally, if you want the silverlight application to be brought to the front, you can call the Focus() function in the parent window or child window, or you can Then call the Focus() function of the sub-window in silverlight

7. How to judge that silverlight has been loaded?
There are several ideas below, some are right and some are wrong
(√) In the constructor of the silverlight application, call the js of the subpage or parent page (through the subpage) [This method is feasible, but Slightly troublesome]
(×) Write the window.onload event in the sub-page [silverlight may not be loaded when this event is triggered]
(√) Remember the third part, step 3? ? [Recommended practice]
After adding this, the function that triggers the subpage will be triggered after silverlight is loaded. The function name can be changed.
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template