2012-11-06 14 views
5

मैं सी # में WebBrowser नियंत्रण में जावास्क्रिप्ट इंजेक्शन बनाया (System.Windows.Controls.WebBrowser) ऐसा है कि, <C#>सी # WebBrowser नियंत्रण में जावास्क्रिप्ट से वापसी मान रही WPF

IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document; 
string var = File.ReadAllText("C:/.../Resources/script.txt"); 
object retVal = webdoc.parentWindow.execScript(var, "Jscript"); 

और जावास्क्रिप्ट फ़ाइल script.txt है,

var headID = document.getElementsByTagName('head')[0]; 
var newScript = document.createElement('script'); 
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' 
headID.appendChild(newScript) 

$('body').bind('click',function(e){ 
    var domsArray = []; 
    for (var i = 0; i < 15; i++){ 
     for (var j = 0; j < 15; j++){ 
      if (document.elementFromPoint(e.clientX+i, e.clientY+j) && (jQuery.inArray(document.elementFromPoint(e.clientX+i, e.clientY+j), domsArray) < 0)){ 
      domsArray.push(document.elementFromPoint(e.clientX+i, e.clientY+j)); 
      }if (document.elementFromPoint(e.clientX-i, e.clientY+j) && (jQuery.inArray(document.elementFromPoint(e.clientX-i, e.clientY+j), domsArray) < 0)){ 
      domsArray.push(document.elementFromPoint(e.clientX-i, e.clientY+j)); 
      }if (document.elementFromPoint(e.clientX+i, e.clientY-j) && (jQuery.inArray(document.elementFromPoint(e.clientX+i, e.clientY-j), domsArray) < 0)){ 
      domsArray.push(document.elementFromPoint(e.clientX+i, e.clientY-j)); 
      }if (document.elementFromPoint(e.clientX-i, e.clientY-j) && (jQuery.inArray(document.elementFromPoint(e.clientX-i, e.clientY-j), domsArray) < 0)){ 
      domsArray.push(document.elementFromPoint(e.clientX-i, e.clientY-j)); 
     }}} 
for (var p = 0; p < domsArray.length; p++){ 
    alert(domsArray[p].href); 
}}); 

यह क्या होता है, जब भी कोई उपयोगकर्ता वेबब्रोसर पृष्ठ में किसी भी बिंदु पर क्लिक करता है, तो वह उस बिंदु के आसपास href को एकत्र करता है।

मैं अपने सी # में href सरणी वापस करना चाहता था ताकि मैं उन लिंक के साथ बटन बना सकूं।

हालांकि

, जब मैं करने की कोशिश की,

Console.WriteLine(retVal); 

यह कंसोल पर कुछ भी प्रिंट नहीं किया। जब भी मैं उन्हें अन्य डमी रिटर्न मानों के साथ स्ट्रिंग या int जैसी चीजों में डाल देता हूं, तो उसने कुछ भी प्रिंट नहीं किया। क्या मुझे सही रिटर्न मिल रहा है? क्या कोई तरीका है कि मैं जावास्क्रिप्ट से आउटपुट रिटर्न का परीक्षण कर सकता हूं?

+0

क्या आपने यह देखने के लिए डिबगिंग करते हुए 'retVal' के मान की जांच करने का प्रयास किया है कि यह शून्य है या कोई मूल्य है? यदि उसके पास कोई मान है, तो आपको डेटा प्रकार, गुण, इत्यादि ... को डिबगिंग करने में सक्षम होना चाहिए ताकि आपको इच्छित डेटा प्राप्त करने के लिए संशोधित करने की आवश्यकता हो। – Alexander

उत्तर

0

मुझे लगता है कि यह एक दायरा मुद्दा हो सकता है। आप

var domsArray = []; 
(ऊपर) के बाहर

$('body').bind('click',function(e){ .... 

समारोह चलती की कोशिश की? जैसे

var domsArray = []; 
$('body').bind('click',function(e){ 

    for (var i = 0; i < 15; i++){ < ... etc ....> 

भी मुझे लगता है कि आप एक (लाइनों 3 & script.txt की 4) कि हालांकि अर्धविराम की जोड़ी याद कर रहे हैं शायद कोई फर्क नहीं करना चाहिए।

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