3

我成功添加一個ContextMenu到我的網頁瀏覽器與這段JavaScript代碼:文本菜單在網頁瀏覽器的Windows Phone 7

public void AttachContextMenu() 
     { 
      try 
      { 
       if ((App.Current as App).Browser.IsScriptEnabled) 
       { 
        (App.Current as App).Browser.InvokeScript("execScript", "function FindParentLink(item) \r\n{\r\n\tif (!item.parentNode)\r\n\t\treturn null;\r\n\tif (item.tagName.toLowerCase() == 'a') \r\n\t{\r\n\t\treturn item;\r\n\t} \r\n\telse \r\n\t{\r\n\t\treturn FindParentLink(item.parentNode);\r\n\t}\r\n}\r\n\r\nfunction FindParentImage(item) \r\n{\r\n\tif (!item.parentNode)\r\n\t\treturn null;\r\n\tif (item.tagName.toLowerCase() == 'img') \r\n\t{\r\n\t\treturn item;\r\n\t} \r\n\telse \r\n\t{\r\n\t\treturn FindParentImage(item.parentNode);\r\n\t}\r\n}\r\n\r\nfunction HandleContextMenu() \r\n{\r\n\tvar linkItem = FindParentLink(event.srcElement);\r\n var imageItem = FindParentImage(event.srcElement);\r\n var notifyOutput = '';\r\n if (linkItem != null) if (linkItem.href != null) notifyOutput += linkItem.href;\r\n if (imageItem != null) if (imageItem.src != null) notifyOutput += imageItem.src;\r\n if (notifyOutput != '')\r\n  window.external.notify(notifyOutput);\r\n else\r\n\t\twindow.external.notify('NOTLINKIMG');\r\n}"); 
        (App.Current as App).Browser.InvokeScript("execScript", "document.oncontextmenu = HandleContextMenu;"); 
       } 
      } 
      catch 
      { 
      } 
     } 

這種方法每次使用瀏覽器導航。 因此,scriptnotify代碼,當用戶將一個鏈接,將用於:

if (e.Value.ToString() != null && IsValidUri(e.Value.ToString())) 
      { 
       ContextMenu cm = new ContextMenu(); 
       MenuItem menuItem0 = new MenuItem() { Header = "X", Tag = e.Value }; 
       menuItem0.Click += new RoutedEventHandler(X_Click); 
       MenuItem menuItem1 = new MenuItem() { Header = "Y", Tag = e.Value }; 
       menuItem1.Click += new RoutedEventHandler(Y_Click); 
       MenuItem menuItem2 = new MenuItem() { Header = "Z", Tag = e.Value }; 
       menuItem2.Click += new RoutedEventHandler(Z_Click); 

        cm.Items.Add(menuItem0); 
        cm.Items.Add(menuItem1); 
        cm.Items.Add(menuItem2); 


       ContextMenuService.SetContextMenu(Browser, cm); 
       cm.IsZoomEnabled = false; 
       cm.VerticalOffset = mouseClickPosition.Y; 
       cm.IsOpen = true; 
      } 

到目前爲止,我希望我做的一切權利。 現在,它隨機工作。將近50%的嘗試會導致錯誤,Visual Studio會導航到名爲「No source available」的藍白色框架並引發NullReferenceException。

這應該在哪裏解決?已經設置try-catch塊圍繞孔2的方法,沒有任何變化:/

希望你有一些想法

迎接 roqstr

回答

1

沒有得到它的工作,但有一個變通方法:

AttachContextMenu()

- >持有鏈接會將url推送到scriptnotify方法。

構建自定義上下文菜單&一切都很好。

相關問題