我正试图找到一种方法让我的程序知道WebBrowser何时导航以及何时不导航.这是因为程序将通过将在文档中注入的JavaScript与加载的文档进行交互.我没有任何其他方式知道它何时开始导航而不是处理导航事件,因为不是我的程序,而是将通过与文档交互进行导航的用户.但是,当DocumentCompleted发生时并不一定意味着它已完成导航.我一直在谷歌搜索,发现两个伪解决方案:
在事件中检查WebBrowser的ReadyState属性DocumentCompleted.这里的问题是,如果没有这个文件,但该文件加载的框架中,ReadyState将Completed即使没有完成主文档.
为了防止这种情况,他们建议,看是否网址参数传递到DocumentCompleted比赛地址的WebBrowser.这样我就会知道DocumentCompleted文档中的某些其他框架没有调用它.
2的问题在于,正如我所说,我必须知道页面导航的唯一方法是处理Navigating(或Navigated)事件.因此,例如,如果我在Google地图中并点击搜索,Navigating则会调用,但只是一个框架正在导航; 不是整个页面(在特定的Google案例中,我可以使用TargetFrameName属性WebBrowserNavigatingEventArgs来检查它是否是正在导航的帧,但帧并不总是有名称).所以在那之后,DocumentCompleted将被调用,但不会与Url我WebBrowser的Url属性相同,因为它只是一个导航的框架,所以我的程序将会永远导航它.
添加调用Navigating和减去调用也DocumentCompleted不会工作.它们并不总是一样的.我已经好几个月没有找到这个问题的解决方案; 我一直在使用解决方案1和2,并希望它们适用于大多数情况.我的计划是使用计时器,以防某些网页出现错误或其他问题,但我认为Google地图没有任何错误.我仍然可以使用它,但唯一更丑陋的解决方案是烧毁我的电脑.
编辑:到目前为止,这是我最接近解决方案的:
partial class SafeWebBrowser
{
private class SafeNavigationManager : INotifyPropertyChanged
{
private SafeWebBrowser Parent;
private bool _IsSafeNavigating = false;
private int AccumulatedNavigations = 0;
private bool NavigatingCalled = …Run Code Online (Sandbox Code Playgroud) 我知道MongoDB接受和检索记录JSON/BSON objects,但它如何实际将这些文件存储在磁盘上?它们是作为单个*.json文件的集合存储还是作为一个大文件存储?我对后者有一种预感,因为MongoDB文档声明它最适用于ext4/xfs处理大文件的系统.谁能确认一下?
在编码该值时,我发现一些 javascript 字符串文字存在问题:
未编码
<!-- Start ValueClick Media 300x250 Code for Test Tag -->
<script language="javascript" src="http://media.fastclick.net/w/get.media?sid=38901&m=6&tp=8&d=j&t=n"></script>
<noscript><a href="http://media.fastclick.net/w/click.here?sid=38901&m=6&c=1" target="_blank">
<img src="http://media.fastclick.net/w/get.media?sid=38901&m=6&tp=8&d=s&c=1"width=300 height=250 border=1></a></noscript>
<!-- End ValueClick Media 300x250 Code for Test Tag -->
Run Code Online (Sandbox Code Playgroud)
我最终得到这个值:
已解码
"<!-- Start ValueClick Media 300x250 Code for Test Tag -->\r\n<script language=\"javascript\" src=\"http://media.fastclick.net/w/get.media?sid=38901&m=6&tp=8&d=j&t=n\"></script>\r\n<noscript><a href=\"http://media.fastclick.net/w/click.here?sid=38901&m=6&c=1\" target=\"_blank\">\r\n<img src=\"http://media.fastclick.net/w/get.media?sid=38901&m=6&tp=8&d=s&c=1\"width=300 height=250 border=1></a></noscript>\r\n<!-- End ValueClick Media 300x250 Code for Test Tag -->"
Run Code Online (Sandbox Code Playgroud)
当在某些 javascript 代码中用作 javascript 文字时,Firefox 会抱怨它未终止 - 但我自己也不明白为什么。
奇怪的是,如果我</script>从上面的 html 中删除“”结束标记,则编码版本可以正常工作,如下所示:
未编码
<!-- Start ValueClick Media …Run Code Online (Sandbox Code Playgroud) 我正在使用.NET Treeview控件(不是WPF,但是常规winforms),并且当控件内部没有节点时,右键单击事件(或任何单击事件)无法触发.根据对Stackoverflow 上另一个线程的响应,我的事件处理程序代码如下:
private void tvTest_MouseClick(object sender, MouseEventArgs e)
{
// Note: this block below is needed so that the menu appears on
// the correct node when right-clicking.
if (e.Button == MouseButtons.Right)
{
tvTest.SelectedNode = tvTest.GetNodeAt(e.X, e.Y);
if (tvTest.SelectedNode != null)
{
tvTestContextMenuStrip.Show(tvTest, e.Location);
}
else
{
tvTestContextMenuStrip.Show(tvTest, tvTest.Location);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于,当节点存在时这种方法很好,如果控件为空,我无法右键单击该控件并选择"添加节点"以添加到根节点.处理程序未输入AT ALL,因为我在开头设置了一个断点,并且似乎从未输入该方法.
当Treeview为空时,有谁知道如何让"某事"发生?
在MATLAB中,我fprintf用来打印列标题下的数值列表,如下所示:
fprintf('%s %s %s %s\n', 'col1', 'col2', 'col3', 'col4')
for i = 1:length(myVar)
fprintf('%8.4g %8.4g %8.4g %8.4g\n', myVar{i,1}, myVar{i,2}, myVar{i,3}, myVar{i,4})
end
Run Code Online (Sandbox Code Playgroud)
这导致如下所示:
col1 col2 col3 col4
123.5 234.6 345.7 456.8
Run Code Online (Sandbox Code Playgroud)
但是,当其中一个单元格为空(例如myVar{i,3} == [])时,不保留空间:
col1 col2 col3 col4
123.5 234.6 456.8
Run Code Online (Sandbox Code Playgroud)
如何以我的格式保留可能为空的数值的空间?
我正在对实践中的修订控制进行一些研究,在书籍和论文中似乎有两个相同的名称:软件配置管理(SCM)和版本控制系统(VCS).前者似乎很受软件工程师/ Java程序员的欢迎,而后者似乎来自系统管理员,但在外行人的眼神中,两者都出现了同样的意思.
另一方面,在过去,我将SCM解释为傀儡或cfengine.任何人都可以在实践中直接指导我这两个术语吗?优选具体实例.
我正在为在线游戏构建统计应用程序,使用Java中的servlet API构建(将部署在Tomcat上).每次用户登录时,让游戏向stats服务器发送消息都很容易,因为处理请求是Servlets/Tomcat的用途.
我还需要定期在统计服务器上发起请求,例如从游戏服务器检索在线用户的数量或从我们的Facebook页面检索粉丝数量.
在应用程序的主servlet中启动一个线程并让它偶尔进行数据检索会很容易,但是感觉有点奇怪,因为所有其他线程都是由Tomcat创建的.
请注意第一个答案:我不是在寻找解决时序或并发问题的方法,因为我可以轻松处理这两个问题.我只需要知道如何在servlet容器中正确启动主动进程.
我有一个在Firefox中运行良好的应用程序但是当我在IE8中测试时,我遇到了一个奇怪的错误: 'Stack overflow at line: 0'
在GWT讨论组建议它可能与从RPC调用返回的大型/复杂对象有关之后,我能够将问题缩小到我的一个RPC服务器调用,这些调用确实返回一个大而复杂的对象.
如果错误是由于大对象太大或太复杂,我怎么知道这个?"太大"的门槛在哪里?
GWT讨论的进一步评论表明Collections对象可能是问题所在,但这是来自GWT开发人员的另一个经验.这是由GWT文档或团队在任何地方记录的吗?
但即便如此,问题仍然存在 - 我怎么知道什么时候'足够小'?
我在我的Android应用程序中使用选项卡,在HTC Sense手机上运行应用程序时遇到了这个问题:
Android:TabWidget的突出显示选项卡在HTC Sense上无法读取
建议那里的解决方案(将android:targetSdkVersion设置为4)不能解决我的问题,也不想将目标sdk设置为4.
我已经尝试解决这个问题,我创建了自己的标签小部件样式,并修改了文本颜色.问题是当我使用自己的风格时没有明显的区别; 即样式似乎没有应用于选项卡.
这是主要活动的代码,包含选项卡:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab);
tabHost = getTabHost();
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Tab 1").setContent(new Intent(this, Tab1.class)));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("Tab 2").setContent(new Intent(this, Tab2.class)));
tabHost.setCurrentTab(0);
}
Run Code Online (Sandbox Code Playgroud)
这是我的tab.xml.请注意,我已将MyTabStyle指定为TabWidget的样式:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
style="@style/MyTabStyle"
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)
这是我对MyTabStyle的定义,我在res/values/styles.xml中定义了它:
<style name="MyTabStyle" parent="@android:style/TextAppearance.Widget.TabWidget">
<item name="android:textColor">#5DFC0A</item>
</style>
Run Code Online (Sandbox Code Playgroud)
为什么我的应用程序中没有MyTabStyle中的任何更改?解决HTC Sense中选定选项卡上不可见文本的任何其他解决方案?
更新2011-06-02
通过使用选项卡上的文本实际上是TextViews的知识,我设法以一种hacky方式解决了这个问题.将以下方法添加到您的活动中:
private void setTabColor(TabHost tabHost) {
try {
for (int i=0; i < tabHost.getTabWidget().getChildCount();i++) …Run Code Online (Sandbox Code Playgroud) 我有这张桌子:
id (int)
name (varchar)
insert (timestamp)
Run Code Online (Sandbox Code Playgroud)
一个示例行是这样的:
14, John, 2010-02-25 01:48:36
Run Code Online (Sandbox Code Playgroud)
在这个表中,我有100万行,我想知道每天插入了多少行.所以我想要这样的东西:
2010-02-25 153
2010-02-24 98
2010-02-23 219
2010-02-22 127
...
Run Code Online (Sandbox Code Playgroud)
我该怎么办?