2011-01-06 9 views
6

वीएस -2010, सिल्वरलाइट 4.0 के लिए जेनरेट किए गए एचटीएमएल टेस्ट पेज पर जावास्क्रिप्ट जोड़ें।सिल्वरलाइट प्रोजेक्ट

क्या किसी को पता है कि क्या विजुअल स्टूडियो को जावास्क्रिप्ट (या उस मामले के लिए कुछ भी) जोड़ने के लिए कोई तरीका है, जो एचटीएमएल टेस्ट पेज पर डीबग के लिए चांदी की रोशनी परियोजना को संकलित करते समय उत्पन्न करता है? क्या यह एक टेम्पलेट का उपयोग करता है, और यदि हां, तो यह कहां है?

उत्तर

1

वास्तव में दिलचस्प सवाल!
मैंने ऐसा कुछ करने की कोशिश की है और आखिरकार कच्चा लेकिन सुंदर कामकाजी समाधान मिला:

सबसे पहले आपको गुण -> डीबग -> विशिष्ट पृष्ठ का उपयोग करके विशिष्ट पृष्ठ सेट करना चाहिए। मेरे पेज उदाहरण:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 

<head> 
    <title>SilverlightApplication1</title> 
    <script type="text/javascript"> 
    </script> 
</head> 

<body> 
    <div id="fillWithData"> 
    </div> 
    <form id="form1" runat="server" style="height:100%"> 
    <div id="silverlightControlHost" style="height: 100%; text-align:center"> 
     <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="30%" height="30%"> 
      <param name="source" value="file:///C:/Users/Igor/Documents/Visual Studio 2010/Projects/MobileTest/SilverlightApplication1/Bin/Debug/SilverlightApplication1.xap"/> 
      <param name="onError" value="onSilverlightError" /> 
      <param name="background" value="white" /> 
      <param name="minRuntimeVersion" value="4.0.50826.0" /> 
      <param name="autoUpgrade" value="true" /> 
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"> 
       <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
      </a> 
     </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> 
    </form> 
</body> 
</html> 

नोट: खाली स्क्रिप्ट और div तत्व महत्वपूर्ण है! हम उनमें गतिशील जेएस/एचटीएमएल लोड करेंगे।

मेरे Silverlight xaml.cs:

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     Loaded += new RoutedEventHandler(MainPage_Loaded); 
    } 

    void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     HtmlDocument hostPage = HtmlPage.Document; 

     ScriptObject obj = hostPage.GetElementsByTagName("script")[0]; 
     obj.SetProperty("innerHTML", "function alertonclick() { alert('Amazing! I am dynamic javascript!'); }");  

     HtmlElement ipAddressHtml = hostPage.GetElementById("fillWithData"); 
     ipAddressHtml.SetProperty("innerHTML", @"<input id=""Button1"" type=""button"" value=""button"" onclick=""alertonclick();"" />"); 
    } 
} 

बहुत महत्वपूर्ण नोट: मैं इस कोड का परीक्षण किया है और यह ओपेरा के तहत केवल काम करता है। यदि आपको किसी अन्य ब्राउज़र का उपयोग करके कुछ परीक्षण करने की आवश्यकता है तो आपको इनलाइन जावास्क्रिप्ट को सीधे तत्व में डालना होगा।

उदाहरण:

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     Loaded += new RoutedEventHandler(MainPage_Loaded); 
    } 

    void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     HtmlDocument hostPage = HtmlPage.Document; 

     HtmlElement ipAddressHtml = hostPage.GetElementById("fillWithData"); 
     ipAddressHtml.SetProperty("innerHTML", @"<input id=""Button1"" type=""button"" value=""button"" onclick=""alert('Amazing! I am dynamic javascript!');"" />"); 
    } 
} 

इस कोड आईई/एफएफ/क्रोम/(:) निश्चित रूप से) ओपेरा अंतर्गत अच्छी तरह से काम करता है।
मेरे लिए मुझे गतिशील जेएस और एचटीएमएल दोनों के साथ पहला उदाहरण पसंद है। और मुझे पूरा यकीन है कि इसे ठीक करना संभव है और अन्य ब्राउज़र द्वारा स्वीकार्य नहीं है बल्कि ओपेरा।
मुझे उम्मीद है कि मेरे उदाहरण आपकी मदद करेंगे =)

संबंधित मुद्दे