2012-03-29 9 views
6

मैं कुछ HTML फ़ाइलों को जावास्क्रिप्ट के साथ Winforms (v2.0) एप्लिकेशन में वेब ब्राउज़र नियंत्रण में लोड करना चाहता हूं। निष्पादन के दौरान, मेरे पास इंटरनेट का उपयोग नहीं होगा, इसलिए संसाधन.रेक्सएक्स फ़ाइल में जावास्क्रिप्ट और एचटीएमएल फॉर्म एम्बेड किए जाएंगे।एम्बेडेड संसाधन से एचटीएमएल/जावास्क्रिप्ट को Winform वेब ब्राउज़र में कैसे लोड करें

1) कैसे मैं संसाधन (एक फ़ाइल के अनुरूप से बाहर एक HTML दस्तावेज लोड कर सकते हैं: /// आपरेशन, लेकिन यह फाइल सिस्टम से लोड किया जा रहा है),

2) मैं कैसे होगा जावास्क्रिप्ट स्क्रिप्ट लोड होने की घोषणा करें? आईई,

<script src=resource.jquery.min.js??? ... /> 

धन्यवाद!

उत्तर

6

HTML दस्तावेज़ को लोड करने के लिए, बस एम्बेडेड संसाधन के रूप में अपने html फ़ाइल संकलन, और उसके बाद:

WebBrowser browser = new WebBrowser(); 
browser.DocumentText = Properties.Resources.<your_html_file>; 

तुम सच में बाहरी .js फ़ाइलों की आवश्यकता है, तो मुझे लगता है कि आप शायद उन्हें बनाने एम्बेडेड करने की आवश्यकता होगी संसाधनों। फिर आप इन संसाधनों को जावास्क्रिप्ट की एक स्ट्रिंग में पढ़ सकते हैं।

string GetResourceString(string scriptFile) 
{ 
    Assembly assembly = Assembly.GetExecutingAssembly(); 
    Stream str = assembly.GetManifestResourceStream(scriptFile); 
    StreamReader sr = new StreamReader(str, Encoding.ASCII)); 
    return sr.ReadToEnd(); 
} 

(a reply on this page से अनुकूलित) यहाँ से

, IHTMLScriptElement पर गौर। जो मैं समझता हूं, उससे आप इस जावास्क्रिप्ट स्ट्रिंग का उपयोग कर सकते हैं और इसे ITHMLScriptElement के टेक्स्ट फ़ील्ड के रूप में सेट कर सकते हैं। this question

शुभकामनाएं देखें।

+0

यह इस तरह काम नहीं करेगा। जब एक एम्बेडेड संसाधन के रूप में बनाया गया, 'गुण। स्रोत। ' सामग्री को बाइट सरणी के रूप में वापस कर देगा। – nathanchere

0

यहां फ़ाइल संरचना है।

enter image description here

मैं ऐसा करने से सफलता मिली:

इस तरह मेरी समाधान में एचटीएमएल फ़ाइलों के गुण सेट करें: इस तरह

Build Action -> Content 
Copy to Output Directory -> Copy always 

मेरी WebBrowser वस्तु गुण कॉन्फ़िगर करें:

var myAssembly = System.Reflection.Assembly.GetExecutingAssembly().CodeBase; 
var path = myAssembly.Substring(0, myAssembly.Length - "MyLib.DLL".Length) + "WebViews/prototype/index.html"; 
webBrowser.Url = new Uri(path); 
+1

आपको 'सबस्ट्रिंग' के साथ मैन्युअल रूप से स्लाइसिंग के बजाय 'Get.irect.Name' जैसे' System.IO.Path' फ़ंक्शंस का उपयोग करना चाहिए। यह भी ध्यान दें कि इसका परिणाम 'फ़ाइल: ///' यूआरएल होगा जो AJAX- प्रकार के अनुरोधों के अनुकूल नहीं होगा। – emackey

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