以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  Webbrowser控件打开网页时能否在JS中嵌入代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92736)

--  作者:天若千颖
--  发布时间:2016/11/11 13:06:00
--  Webbrowser控件打开网页时能否在JS中嵌入代码

如图,由于信息安全的需要,需要对网页进行加密,通过TOKEN的形式加密,但是,TOKEN又不能保留在网页中,不然所有的浏览器都能打开。所以,想试试通过Webbrowser打开的时候,向网页嵌入一串代码。

 

嵌入的代码如下:

 

 dynLayer.Token = "M_FqEbVGrVlU1DnnA-IAwthYPRwmpuj7Q9-nVv51S0MpDVOSWmsNETrWOQ8R4DElOvqpjFMPMhqxI1FwsPrbhYIYj-o9xxK9hCuOnFUgoWdOIzaHNrt_z1iVooPXPeveExrQ_8oY0O1H2hwqiJpgFg..";

 

如果嵌入不行的话,有没有什么变通的方法可以实现Webbrowser打开网页的时候才有这段代码,如果用IE打开,没有这段代码?

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20161111130324.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2016/11/11 14:31:00
--  
https://www.baidu.com/baidu?word=Webbrowser+%E5%8A%A0%E5%85%A5+%E6%8F%92%E5%85%A5+%E6%B3%A8%E5%85%A5+js&ie=utf-8&tn=myie2dg&ch=6
--  作者:天若千颖
--  发布时间:2016/11/12 9:59:00
--  
蓝版你的意思是我这样的解决方案是可行的?

至于代码怎么写,我再去研究,不要把方向搞错了,做很多无用功。

--  作者:天若千颖
--  发布时间:2016/11/12 10:11:00
--  
这个问题解决了,我就把FT和WEBGIS结合起来了,并且实现了对地图的加密和动态的授权访问。
--  作者:有点蓝
--  发布时间:2016/11/12 10:16:00
--  
可以注入并调用代码。至于能不能用要结合网页测试过才知道
--  作者:天若千颖
--  发布时间:2016/11/12 10:29:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:js注入.foxdb

例如,上述项目,默认窗口打开Fxotable论坛的首页,希望能在打开首页的时候,将代码:

 

<script type="text/javascript">
try{
if(self==top){
document.write(\'<a href="index.asp?action=frameon" target="_top" title="显示左侧版面导航">左栏</a>\');
}
else{
document.write(\'<a href="index.asp" target="_top" title="关闭左侧版面导航">关闭左栏</a>\');
}
}catch(e){alert(e);}

</script>

改为:

 

<script type="text/javascript">
try{
if(self==top){
document.write(\'<a href="index.asp?action=frameon" target="_top" title="显示左侧版面导航">打开左栏</a>\');   \'这里修改原代码中的“左栏”为“打开左栏” 

document.write(\'<a href="index.asp?action=frameon" target="_top" title="显示左侧版面导航">这是增加的代码</a>\');  \'这里在原代码中增加了一行代码

}

 

else{
document.write(\'<a href="index.asp" target="_top" title="关闭左侧版面导航">关闭左栏</a>\');
}
}catch(e){alert(e);}

</script>

 

 如何实现?


--  作者:有点蓝
--  发布时间:2016/11/12 11:05:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题测试.rar


--  作者:天若千颖
--  发布时间:2016/11/12 13:01:00
--  
谢谢蓝版,解决了我几天没有解决的问题。

你的解决方案是把修改后的内容放入全局代码里面,我还有几个问题追问。

1.因为我有多个页面,不同的页面要修改的内容不一样,能否把要修改的内容放在表格里面,从表格里面引用修改后的内容,全局标量引用表格数据就像窗体里面引用表格数据一样吗?
也就是把function Button1_onclick() { alert(\'这是修改后的内容\')  }放入表格。

2.如果要修改的内容是几句,怎么分割,现在只有一句:alert(\'这是修改后的内容\')   ,如果有多句呢?两句之间用分号隔开吗?

3.问题测试这个例子中只有一个Script,所以修改的之后能找到唯一的一段代码,如果页面中有两个呢,如何定位到修改第二个,而不是第一个?

<script type="text/javascript" src="http://127.0.0.1/init.js"></script>  ‘这个中间没有代码
    <script>   \'如何定位修改这个script里面的内容?
            var dynLayer = new ArcGISDynamicMapServiceLayer();   
            map.addLayer(dynLayer);
        });
    </script>

[此贴子已经被作者于2016/11/12 13:06:01编辑过]

--  作者:有点蓝
--  发布时间:2016/11/12 14:21:00
--  
1、全局代码用法和其它地方一样
可以在全局代码调用内部函数,通过内部函数返回需要的内容,就不需要每次都重启项目了

2、js代码可以用分号分隔,或者用vbcrlf拼换行字符串

3、全局代码里Dim hec As System.Windows.Forms.HtmlElementCollection 返回的是一个集合,可以病历集合的内容,判断里面的内容
for i as integer = 0 to hec.Count - 1
if hec(i).InnerHtml.Contains("var dynLayer = new ArcGISDynamicMapServiceLayer();") then ......