הפעלת פונקציה ב - Silverlight מתוך קוד javascript
תודה לאיתמר ריבר על העזרה בפוסט זה.
כדי להפעיל פונקציה בקוד ה - silverlight מתוך ה - javascript נצטרך לעשות מספר פעולות פשוטות.
ראשית על המחלקה שמכילה פונקצייה שנרצה להפעיל מקוד JS נשים attribute בשם ScriptableType
[ScriptableType]
public class MyLogicClass
{
}
על כל פונקציה שנרצה להפעיל מ - JS נשים ScriptableMemeber
[ScriptableMember]
public bool IsTextOk(string str)
{
return str == "str";
}
דבר אחד נוסף, ב - Application_Startup (בקובץ App.xaml.cs) נוסיף את הקוד הבא.
HtmlPage.RegisterScriptableObject("LogicClass", new MyLogicClass());
כעת בדף ה - html שמארח את ה -silverlight נכתוב את הקוד הבא:
function callSilverlight() {
var obj = document.getElementById('silverObj');
var res = obj.Content.LogicClass.IsTextOk("str");
alert(res);
}
חשוב לשים לב שכברירת מחדל ה - object של ה - silverlight לא מקבל id, ואנחנו צריכים לתת לו id כדי שנוכל להפעיל את הפונקציות שלו.
במידה וה - silverlight מתארח בדומיין אחר, כלומר אובייקט ה - silverlight מגיע מדומיין אחד ודף ה - html שמארח אותו יושב בדומיין אחר, נצטרך להגדיר בקובץ manifest שמותר להפעיל פונקציות מצד הלקוח.
קובץ ה - manifest יושב תחת תיקיית Properties והוא נקרא AppManifest.xml.
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ExternalCallersFromCrossDomain="ScriptableOnly"
>
<Deployment.Parts>
</Deployment.Parts>
</Deployment>