2013-09-25 65 views
1

有关我需要的一点介绍,但无法在任何地方找到完整的答案。我使用webbrowser控件在我的应用程序中显示一个网站,但我想要删除上面的导航,这是一个单独的HTML元素类名“tabs-outer”。我想在我的应用程序中执行此操作,而不是在主页的CSS中执行此操作,因为它用于显示移动设备的内容,而我只想在没有它的桌面/移动网站上显示在浏览器控件的应用程序中它仍然是可见的。如何从Windows Phone中隐藏html元素webbrowser控件

我发现了一些java脚本代码,如“$('#mydiv')。allBut()。hide();”我知道我必须添加像“$('。tabs-outer')。allBut()。hide();”但在哪里?我没有线索,在哪里输入,如何在应用程序中调用它?我需要更多信息。我发现了一个2岁的线程,但没有关于究竟要做什么的信息。

如何以及在何处使用此javascript,是否可以将其添加到应用程序中,所以我在运行时将其称为此脚本?任何帮助?我是一个新手,所以我不知道任何关于JavaScript的,并没有任何关于它在Windows手机和C#。

这是我现在的使用方式:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 

     String url = NavigationContext.QueryString["url"]; 
     if (!String.IsNullOrEmpty(url)) 
     { 
      WebBrowser.Navigate(new Uri(url)); 
     } 

    } 
    private void WebBrowser_LoadCompleted(object sender, NavigationEventArgs e) 
    { 
     WebBrowser.InvokeScript("RemoveNav"); 
     SystemTray.SetProgressIndicator(this, null); 
     WebBrowser.Visibility = Visibility.Visible; 
    } 

,我在这样的标题添加一个脚本在我的网页:

<script type="text/javascript"> 
function RemoveNav() 
{ 
$('.tabs-outer').not(this).hide() 
} 
</script> 

和它的作品,但我必须设置webbrowser控件的可见性折叠为页面加载 - “隐藏”我想要的元素,然后使其可见。但我需要一些东西来拦截这个元素的加载,但只在我的Windows手机应用程序在浏览器控制。

回答

0

我已经添加了这个新答案,因为在某些情况下,对于某些用户,我以前的答案就足够了。

这个问题可以用CSS解决。 您可以从移动设备应用程序加载页面并访问标题部分。考虑到这一点,您可以从那里设置div的风格。

使用!重要将覆盖其他规范,但如果css已经使用!重要(我非常怀疑它),您必须确保您的样式位于页面样式之后。考虑到这一点,请尝试在head元素中添加以下代码:

<style> 
    .tabs-outer { 
     display: none !important; 
    } 
</style> 

这将完全删除您的div。

UPDATE:隐藏他们的所有设备,并显示他们对非WP

第1步:添加风格在头节

<style> 
    .tabs-outer { 
     display: none; 
    } 
</style> 

第2步:添加进口在jQuery API的标题部分中

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 

第3步:添加代码在头

<script type="text/javascript"> 
$(document).ready(function(){ 
    if(!navigator.userAgent.match(/IEMobile/i) && !navigator.userAgent.match(/Windows Phone/i)){ 
     $(".tabs-outer").show(); 
    } 
}); 
</script> 

就是这样。桌面更快,所以它应该加载元素并且足够快地显示它们。

* *更新:使用媒体查询和CSS重要的是要隐瞒你需要什么,自定义显示

您可以在CSS中添加以下代码,以解决以最有效的方式问题:

@media only screen 
and (min-device-width : 160px) 
and (max-device-width : 640px) { 
    .tabs-outer { 
     display: none !important; 
    } 
    html { 
     font-family : "Palatino Linotype"; 
     font-size : 12; 
     font-color : #98AFC7; 
    } 

    ......... 

} 

资源:http://css-tricks.com/snippets/css/media-queries-for-standard-devices/

现在你可以让你的自定义样式。对不起,我第一次没有得到它,但自从我在网站上工作以来已经过了很多年了。

请提供反馈意见。再次:-)

+0

我知道我可以通过这种方式将其删除,但这种方式也可以删除桌面用户以及移动设备用户。我需要这个脚本在我的Windows手机应用程序中,在浏览器控件中使用它。所以我不能从应用程序内触发这个以上?! – dinchy87

+0

但您的第一篇文章帮我删除它,但它很慢,因为它加载页面,然后隐藏,我想这个脚本可用于页面加载之前,所以我称之为webbrowser控件,所以页面呈现和div未呈现。这可能吗? – dinchy87

+0

等一下。据我所知,你在windowsphone应用程序中添加了jQuery代码。所以我告诉你用这个CSS样式替换jQuery脚本,这将解决它。你有没有访问windowsphone应用程序的头部部分? – George

1

您提供了jQuery源代码。 jQuery是开源的,可以免费下载和使用。 请浏览本网站信息有关的jQuery:http://learn.jquery.com/

你确切的答案所在,在这里解释:http://learn.jquery.com/using-jquery-core/document-ready/

实际上,在页面加载后的代码将运行。您需要的代码在这里:

<script> 
// A $(document).ready() block. 
$(document).ready(function() { 
    $('.tabs-outer').hide(); 
}); 
</script> 

您需要将此代码作为javascript加入到您的网页中。要使用该代码,还需要在html页面的头部包含以下行。

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 

这将加载jQuery插件会解释你的脚本和隐藏所有已班级设置为“标签 - 外”的div。

祝你好运!

+0

我已经通过此代码完成$('。tabs-outer')。allBut()。hide();我在webbrowser加载的时候调用这个脚本,但是我仍然可以在webbrowser控件删除它们之前看到加载的元素......我怎么能“预加载”这个脚本,并在webbrowser控件打开时调用它,所以我甚至没有看到这个元素。 – dinchy87

+0

你可以在CSS中做到这一点,而不必使用jQuery。我会立即提供一个新的答案。 – George

+0

谢谢,但我无法想象如何在CSS中做到这一点,只有我的应用程序用户可见...但我已经做了一些小的解决方法,我已经设置webbrowser控件的可见性折叠,直到页面被加载,然后变为可见,所以脚本“隐藏”的部分不可见,但对于用户来说,这意味着要等待整个页面加载。 – dinchy87