browser.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. const url = require('url');
  2. const {ipcRenderer} = require('electron');
  3. let ipc=require('electron').ipcRenderer;
  4. /*注册命名空间*/
  5. let US_Browser=[];
  6. Namespace.register("US_Browser");
  7. /*浏览器函数*/
  8. US_Browser.CreatBrower=function (address,flag) {//创建窗口,url,是否为用户选择文件
  9. let http = /^(http)/;
  10. let https = /^(https)/;
  11. let www=/^(www)/;
  12. let m=/^(m)/;
  13. let li=$$("li", {//创建ul下的li
  14. "className": "BrowerList"
  15. }, US_Browser.NavContainer);
  16. let ListBody=$$("div", {//创建li下的div
  17. "className": "BrowerListBody","ripple":""
  18. }, li);
  19. US_Browser.NavContainer.insertBefore(li,US_Browser.AddButton);//把新建标签页按钮追加到ul的li下
  20. li.data={//传窗口地址
  21. "url":address,
  22. "name":null,
  23. "favicons":'public/img/tray/logo.png'
  24. };
  25. ListBody.tag_favicon=$$("img", {//标签页图标
  26. "className": "tag_favicon", "draggable":"false", "alt":""
  27. }, ListBody);
  28. ListBody.tag_favicon.style.display=(address&&address!==null)?"block":"none";
  29. ListBody.tag_favicon.onerror=function () {//不存在时显示的标签页图标
  30. this.src='public/img/tray/logo.png';
  31. webview.tag.data.favicons=this.src;
  32. };
  33. ListBody.Webname=$$("p", {//标签页标题
  34. "className": "Webname","innerHTML":address?"正在加载":"新建标签","draggable":"false"
  35. }, ListBody);
  36. ListBody.tag_close=$$("i", {//标题页关闭按钮
  37. "className":"icon-cancel tag_close"
  38. }, ListBody);
  39. let BrowerContainer=$$("div", {"className":"BrowerContainer"},$("body")[0]);//装载webview
  40. let webview=$$("webview", {//创建webview
  41. "allowpopups":"", "autosize":"on"
  42. }, BrowerContainer);
  43. webview.setAttribute('plugins','');
  44. webview.state=(address&&address!==null)?false:true;
  45. webview.tag=li;//把li赋给webview标签
  46. webview.addEventListener("new-window",function (e) {//访客页面尝试打开新的浏览器窗口时触发。
  47. US_Browser.BrowersTag=$(".BrowerList");//获取选项卡li
  48. let LIwidth = ((US_Browser.NavContainer.offsetWidth - 120)/US_Browser.BrowersTag.length)-10;//得到每个li标签页宽度
  49. if(US_Browser.BrowersTag.length>=30){//如果如果li标签页大于35
  50. confirm("窗口太多,请关闭一些再使用");//弹出提示
  51. return false;
  52. }
  53. const protocol=url.parse(e.url).protocol;
  54. if(protocol==='http:'||protocol==='https:'||protocol==="about:blank"){
  55. US_Browser.CreatBrower(e.url);//系统的默认浏览器中打开新的URL
  56. }
  57. });
  58. webview.addEventListener("page-favicon-updated",function (e) {//当页面收到图标网址时触发
  59. ListBody.tag_favicon.src=e.favicons[0];
  60. this.tag.data.favicons=e.favicons[0];
  61. });
  62. webview.addEventListener('will-navigate',function (e) {//导航跳转时触发
  63. this.tag.data.url=e.url;
  64. if(webview===US_Browser.SelecteWebview) {
  65. US_Browser.Head[5].value=e.url;
  66. }
  67. });
  68. webview.addEventListener('did-navigate',function (e) {//导航完成时触发
  69. this.tag.data.url=e.url;
  70. if(webview===US_Browser.SelecteWebview) {
  71. US_Browser.Head[5].value=e.url;
  72. }
  73. ListBody.Webname.innerHTML=this.getTitle();
  74. });
  75. webview.addEventListener('did-navigate-in-page',function (e) {//导航完成时触发
  76. this.tag.data.url=e.url;
  77. US_Browser.Head[5].value=e.url;
  78. US_Browser.CheckState(this);
  79. });
  80. webview.addEventListener('page-title-updated',function (e) {//导航完成时触发
  81. this.tag.data.name=e.title;
  82. ListBody.Webname.innerHTML=e.title;
  83. });
  84. webview.addEventListener('dom-ready',function (e) {//加载完成webview后执行
  85. ListBody.Webname.innerHTML=this.getTitle();//更改webview的title
  86. this.tag.data.name=this.getTitle();
  87. US_Browser.CheckState(this);
  88. this.focus();
  89. this.getWebContents().focus();
  90. });
  91. webview.addEventListener('did-get-response-details',function (e) {
  92. US_Browser.LoadTips.innerHTML='正在请求:'+e.originalURL;
  93. });
  94. webview.addEventListener('did-start-loading',function (e) {
  95. US_Browser.IsLoading(this,true);
  96. });
  97. webview.addEventListener('did-finish-load',function (e) {
  98. US_Browser.IsLoading(this,false);
  99. US_Browser.LocalStorage(this);
  100. });
  101. webview.addEventListener('did-frame-finish-load',function (e) {
  102. US_Browser.IsLoading(this,false)
  103. });
  104. webview.addEventListener('did-stop-loading',function (e) {
  105. US_Browser.IsLoading(this,false)
  106. });
  107. webview.addEventListener('load-commit',function (e) {
  108. US_Browser.LoadTips.innerHTML=e.url;
  109. });
  110. webview.addEventListener('found-in-page', function(e) {
  111. if (e.result.finalUpdate) {
  112. US_Browser.Elm[1].innerHTML=e.result.activeMatchOrdinal+'/'+e.result.matches;
  113. US_Browser.Elm[2].onclick=function () {
  114. };
  115. US_Browser.Elm[3].onclick=function () {
  116. US_Browser.SelecteWebview.findInPage(US_Browser.Elm[0].value)
  117. };
  118. }
  119. });
  120. webview.addEventListener('did-fail-load',function (e) {
  121. console.log(e)
  122. });
  123. webview.fullSrceen=false;
  124. webview.FindKey=false;
  125. webview.onmousedown=function (e) {//webview鼠标事件
  126. US_Browser.MouseMenu(US_Browser.MouseMenuMain,this,e);//右键显示创建应用菜单
  127. };
  128. ListBody.tag_close.onclick=function () {//点击标题页关闭按钮
  129. event.stopPropagation();
  130. let closeArr = $(".tag_close");
  131. closeArr[0].index = 0;//设置li下第一个关闭图标的index
  132. if(ListBody.tag_close.index === 0){
  133. webview.tag.nextSibling.onclick();//点击当前li下一个
  134. }else{
  135. webview.tag.previousSibling.onclick();//点击当前li上一个
  136. }
  137. if(ListBody.offsetWidth<50){
  138. ListBody.Webname.style.display = "none";
  139. }else{
  140. ListBody.Webname.style.display = "block";
  141. }
  142. US_Browser.NavContainer.removeChild(webview.tag);//移除当前li
  143. document.body.removeChild(BrowerContainer);//移除当前webview
  144. };
  145. webview.src=address;//给webview的src传值
  146. US_Browser.Bind();
  147. ListBody.click();//点击li下的包裹节点
  148. if(flag){
  149. let pattern = new RegExp("^[a-zA-Z]:/[a-zA-Z_0-9//]*");
  150. if(pattern.test(address)){
  151. webview.src = "file:///"+address;
  152. }else {
  153. if (address.match(http) || address.match(https)) {//判断是否存在http或https
  154. webview.src = address;//给webview的src传值
  155. } else if (this.value.match(www) || this.value.match(m)) {
  156. webview.src = 'http://' + this.value;//给webview的src传值
  157. } else {
  158. webview.src = 'https://www.baidu.com/s?cl=3&wd=' + this.value;//给webview的src传值
  159. }
  160. }
  161. webview.tag.getElementsByTagName('img')[0].style.display = "block";//标签页图标显示
  162. }
  163. };//创建一个新的浏览器选项卡
  164. US_Browser.MouseMenu=function (menu_main,data,e,flag) {//右键菜单事件
  165. let createNode=document.body;//获取第一和参数父元素
  166. let MouseMenuMain=$('.MouseMenuMain');//获取右键菜单事件的ul元素
  167. for(let i=0;i<MouseMenuMain.length;i++){//隐藏右键菜单事件所有
  168. MouseMenuMain[i].style.display='none';
  169. }
  170. document.onmouseup=function () {//鼠标事件后触发
  171. if (e.button === 2||flag) {
  172. if (!flag) {
  173. menu_main.style.left = e.pageX + -parseFloat(createNode.getBoundingClientRect().left) + createNode.offsetLeft + 'px';//菜单定位横坐标
  174. menu_main.style.top = e.pageY + -parseFloat(createNode.getBoundingClientRect().top) + createNode.offsetTop + 'px';//菜单定位纵坐标
  175. if (menu_main.getBoundingClientRect().left + menu_main.offsetHeight - createNode.getBoundingClientRect().left > createNode.offsetWidth) {//判断距左位置
  176. menu_main.style.left = menu_main.style.left.split('px')[0] - menu_main.offsetWidth + 'px';//距左多少
  177. }
  178. if (menu_main.getBoundingClientRect().top + menu_main.offsetHeight - createNode.getBoundingClientRect().top > createNode.offsetHeight) {//判断距上位置
  179. menu_main.style.top = menu_main.style.top.split('px')[0] - menu_main.offsetHeight + 'px';//距上多少
  180. }
  181. }
  182. menu_main.style.display = 'block';//显示菜单
  183. document.onmouseup = null;//清空
  184. }
  185. };
  186. menu_main.onclick=createNode.onmousewheel=function () {//执行右键菜单隐藏
  187. for(let i=0;i<MouseMenuMain.length;i++){
  188. MouseMenuMain[i].style.display='none';//隐藏
  189. }
  190. };
  191. };//右键菜单函数
  192. US_Browser.CheckState=function(webview){
  193. if(webview.canGoBack()){//判断是否可以后退
  194. US_Browser.Head[0].style.color = '#5a5a5a';
  195. US_Browser.MenuBack.removeAttribute('style');
  196. }else{
  197. US_Browser.Head[0].style.color = '#d3d3d3';
  198. US_Browser.MenuBack.style.color='#adadad';
  199. }
  200. if(webview.canGoForward()){//判断是否可以前进
  201. US_Browser.Head[1].style.color = '#5a5a5a';
  202. US_Browser.MenuGo.removeAttribute('style');
  203. }else{
  204. US_Browser.Head[1].style.color = '#d3d3d3';
  205. US_Browser.MenuGo.style.color='#adadad';
  206. }
  207. if(!US_Browser.Head[5].value.length){
  208. US_Browser.Head[2].style.color = '#d3d3d3';
  209. }else{
  210. US_Browser.Head[2].style.color = '#5a5a5a';
  211. }
  212. };//检查标签是否可后退前进
  213. US_Browser.LocalStorage=function(webview){
  214. let time = (new Date()).valueOf();
  215. let today = new Date().toLocaleDateString();
  216. let datas={
  217. url:webview.src,
  218. title:webview.tag.data.name,
  219. favicons:webview.tag.data.favicons,
  220. data:new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay()),
  221. time:new Date().toLocaleTimeString(),
  222. key:time
  223. };
  224. if(localStorage[today]){
  225. let aa = JSON.parse(localStorage[today]);
  226. let bb = JSON.parse(JSON.stringify(datas));
  227. aa.push(bb);
  228. let Storage = JSON.stringify(aa);
  229. localStorage.removeItem(today);
  230. localStorage.setItem(today, Storage);
  231. }else{
  232. localStorage.setItem(today,[]);
  233. localStorage[today]="["+JSON.stringify(datas)+"]";
  234. }
  235. };//本地存储操作
  236. US_Browser.IconLock = function(){//判断是否为https
  237. if(US_Browser.Head[5].value.indexOf('https')>-1){//判断搜索框是否有https
  238. US_Browser.LockIcon.style.color = '#035816';
  239. }else {
  240. US_Browser.LockIcon.style.color = '#d3d3d3';
  241. }
  242. };
  243. /*浏览器按钮函数*/
  244. US_Browser.about=function () {
  245. ipc.send('AboutUsW-show');
  246. };
  247. US_Browser.ShowHistory=function(){
  248. ipc.send('BrowserHistory-show');
  249. };
  250. US_Browser.Feedback=function(){
  251. ipc.send('BrowserFeedback-show');
  252. };
  253. US_Browser.ClearCache=function(){
  254. localStorage.clear();
  255. };
  256. US_Browser.CreatBrowerWindow=function(){
  257. ipc.send('newBrowersWindow')
  258. };
  259. US_Browser.Print=function(){
  260. US_Browser.SelecteWebview.print();
  261. };
  262. US_Browser.DevTools=function(){
  263. if(US_Browser.SelecteWebview.isDevToolsOpened()){//判断是否存在
  264. US_Browser.SelecteWebview.closeDevTools();//关闭开发者工具
  265. }
  266. US_Browser.SelecteWebview.openDevTools();//打开开发者工具
  267. };
  268. US_Browser.SourceCode = function () {//查看源代码
  269. US_Browser.CreatBrower("view-source:"+US_Browser.Head[5].value);
  270. };
  271. US_Browser.Exit=function(){
  272. ipc.send('window-all-closed');
  273. };
  274. US_Browser.goBack = function(){//执行后退
  275. US_Browser.SelecteWebview.goBack();
  276. };
  277. US_Browser.goForward = function(){//执行前进
  278. US_Browser.SelecteWebview.goForward();
  279. };
  280. US_Browser.CampusInfo=function(){
  281. ipc.send('CampusInfo')
  282. };
  283. US_Browser.reFresh = function(){//执行刷洗
  284. if(US_Browser.SelecteWebview.state) {
  285. US_Browser.SelecteWebview.reload();
  286. }
  287. };
  288. US_Browser.Stop=function(){
  289. US_Browser.SelecteWebview.stop();
  290. };
  291. US_Browser.IsLoading=function(webview,flag){
  292. if(flag) {
  293. if (webview === US_Browser.SelecteWebview) {
  294. US_Browser.Head[2].className = 'icon-cancel';
  295. webview.state=false;
  296. } else {
  297. US_Browser.Head[2].className = 'icon-cw';
  298. webview.state=true;
  299. }
  300. US_Browser.LoadTips.style.display='block';
  301. }else {
  302. if(webview===US_Browser.SelecteWebview) {
  303. US_Browser.Head[2].className='icon-cw';
  304. webview.state=true;
  305. }else{
  306. US_Browser.Head[2].className='icon-cancel';
  307. webview.state=false;
  308. }
  309. US_Browser.LoadTips.innerHTML='';
  310. US_Browser.LoadTips.style.display='none';
  311. }
  312. };
  313. /*浏览器初始化*/
  314. US_Browser.IpcBind=function(){
  315. ipcRenderer.on('flag', function(event, message){//接收用户指定的文件
  316. if(message==='-1'){
  317. US_Browser.CreatBrower('https://www.baidu.com');//开始进入一个页面
  318. }
  319. });
  320. ipcRenderer.on('url', function(event, message){//接收用户指定的文件
  321. if(message){
  322. US_Browser.CreatBrower(message,true);//打开用户请求的页面
  323. }
  324. });
  325. ipcRenderer.on('open-history', function(event, message){//接收历史记录地址
  326. if(message){
  327. US_Browser.CreatBrower(message,true);//打开用户请求的页面
  328. }
  329. });
  330. ipcRenderer.on('download-progress',function (event,message) {
  331. console.log(message)
  332. });
  333. ipcRenderer.on('size',function (event,message) {
  334. if(message>0){
  335. US_Browser.ControlButton[1].className='icon-window-restore';
  336. US_Browser.NavContainer.style.padding = "5px 0 0";
  337. US_Browser.RightMenu.style.top='70px';
  338. US_Browser.BrowerContainer.each(function (index,elm) {
  339. elm.style.top='70px';
  340. elm.style.height='calc(100% - 70px)';
  341. })
  342. }else {
  343. US_Browser.ControlButton[1].className='icon-window-maximize';
  344. US_Browser.NavContainer.style.padding = "15px 0 0";
  345. US_Browser.RightMenu.style.top='80px';
  346. US_Browser.BrowerContainer.each(function (index,elm) {
  347. elm.style.top='80px';
  348. elm.style.height='calc(100% - 80px)';
  349. })
  350. }
  351. })
  352. };//ipc通信绑定
  353. US_Browser.Bind=function(){//绑定
  354. US_Browser.BrowerListBody = $(".BrowerListBody");
  355. US_Browser.BrowersTag=$(".BrowerList");//获取选项卡li
  356. US_Browser.BrowerContainer=$(".BrowerContainer");//获取webview
  357. US_Browser.SelecteWebview=US_Browser.BrowerContainer[0].children[0];
  358. for(let i=0;i<US_Browser.BrowersTag.length;i++){//对选项卡及webview进行操作
  359. (function (i) {
  360. US_Browser.BrowersTag[i].onclick=function () {
  361. for(let j=0;j<US_Browser.BrowersTag.length;j++){
  362. US_Browser.BrowersTag[j].className='BrowerList';
  363. US_Browser.BrowersTag[0].className='BrowerList Listindex';
  364. US_Browser.BrowerContainer[j].style.opacity='0';
  365. US_Browser.BrowerContainer[j].style.zIndex='-1';
  366. }
  367. US_Browser.BrowersTag[i].className+=' BrowerActive';
  368. US_Browser.BrowerContainer[i].style.opacity='1';
  369. US_Browser.BrowerContainer[i].style.zIndex='1';
  370. US_Browser.Head[5].value=this.data.url;
  371. US_Browser.SelecteWebview=US_Browser.BrowerContainer[i].children[0];
  372. if(US_Browser.SelecteWebview.FindKey){
  373. US_Browser.FindContainer.style.display='block';
  374. US_Browser.Elm[0].value=US_Browser.SelecteWebview.FindKey;
  375. US_Browser.SelecteWebview.findInPage(US_Browser.Elm[0].value);
  376. }else{
  377. US_Browser.Elm[4].click();
  378. }
  379. if(US_Browser.SelecteWebview.state){
  380. US_Browser.Head[2].className='icon-cw';
  381. if(US_Browser.SelecteWebview.src) {
  382. US_Browser.CheckState(US_Browser.SelecteWebview);
  383. }else{
  384. US_Browser.Head[2].style.color = '#d3d3d3';
  385. }
  386. }else{
  387. US_Browser.Head[2].className='icon-cancel';
  388. }
  389. US_Browser.RightMenu.style.display='none';
  390. US_Browser.IconLock();//判断是否为https
  391. }
  392. })(i);
  393. }
  394. };//标签页事件绑定
  395. US_Browser.HeadBind=function(){
  396. let http = /^(http)/;
  397. let https = /^(https)/;
  398. let www=/^(www)/;
  399. let m=/^(m)/;
  400. let isBig=true;//窗口放大还原标示
  401. US_Browser.AddButton=$(".BrowwerAdd")[0];//获取新建标签页按钮
  402. US_Browser.ControlButton=$(".browerHeaderControl button");
  403. US_Browser.ControlButton[0].onclick=function(){//最小化
  404. ipc.send('hide-window');
  405. };
  406. US_Browser.ControlButton[1].onclick=function(){//最大化
  407. if(isBig){
  408. ipc.send('show-window');
  409. this.className='icon-window-restore';
  410. US_Browser.NavContainer.style.padding = "5px 0 0";
  411. US_Browser.RightMenu.style.top='70px';
  412. US_Browser.BrowerContainer.each(function (index,elm) {
  413. elm.style.top='70px';
  414. elm.style.height='calc(100% - 70px)';
  415. })
  416. }else{
  417. ipc.send('orignal-window');
  418. this.className='icon-window-maximize';
  419. US_Browser.NavContainer.style.padding = "15px 0 0";
  420. US_Browser.RightMenu.style.top='80px';
  421. US_Browser.BrowerContainer.each(function (index,elm) {
  422. elm.style.top='80px';
  423. elm.style.height='calc(100% - 80px)';
  424. })
  425. }
  426. isBig=!isBig;
  427. };
  428. US_Browser.ControlButton[2].onclick=function(){//关闭窗口
  429. US_Browser.Exit();
  430. };
  431. US_Browser.Head=$(".BrowerHead *");
  432. US_Browser.Head[0].onclick=function () {
  433. US_Browser.goBack()
  434. };
  435. US_Browser.Head[1].onclick=function () {
  436. US_Browser.goForward()
  437. };
  438. US_Browser.Head[2].onclick=function () {
  439. if(this.className==='icon-cw') {
  440. US_Browser.reFresh()
  441. }else{
  442. US_Browser.Stop();
  443. this.className='icon-cw';
  444. }
  445. };
  446. US_Browser.LockIcon=US_Browser.Head[4];
  447. US_Browser.Head[5].tabIndex=-1;
  448. US_Browser.Head[5].onkeydown=function (e) {//获取搜索框值
  449. if(e.keyCode===13){//keycode为13
  450. if(this.value.length){//如果存在值
  451. if(this.value.match(http) || this.value.match(https)){//判断是否存在http或https
  452. US_Browser.SelecteWebview.src=this.value;//给webview的src传值
  453. }else if(this.value.match(www)||this.value.match(m)){
  454. US_Browser.SelecteWebview.src='http://'+this.value;//给webview的src传值
  455. }else {
  456. US_Browser.SelecteWebview.src='https://www.baidu.com/s?cl=3&wd='+this.value;//给webview的src传值
  457. }
  458. US_Browser.SelecteWebview.tag.getElementsByTagName('img')[0].style.display = "block";//标签页图标显示
  459. }
  460. this.blur();
  461. }
  462. };
  463. US_Browser.Head[6].onmousedown=function (event) {//点击菜单
  464. US_Browser.MouseMenu(US_Browser.RightMenu,this,event,true);//右键显示创建应用菜单
  465. };
  466. US_Browser.AddButton.onclick= function (){//点击新建标签页
  467. US_Browser.BrowersTag=$(".BrowerList");//获取选项卡li
  468. if(US_Browser.BrowersTag.length>=30){//如果如果li标签页大于35
  469. alert("窗口太多,请关闭一些再使用");//弹出提示
  470. return false;
  471. }
  472. US_Browser.CreatBrower(null);
  473. US_Browser.Head[5].focus();
  474. US_Browser.RightMenu.style.display='none';
  475. };
  476. window.addEventListener('dragleave',function (e) {
  477. e.preventDefault();
  478. return false;
  479. });
  480. window.addEventListener('dragover',function (e) {
  481. e.preventDefault();
  482. return false;
  483. });
  484. window.addEventListener('dragenter',function (e) {
  485. e.preventDefault();
  486. return false;
  487. });
  488. window.addEventListener( "drop", function (e) {
  489. e.preventDefault();
  490. return false;
  491. }, false );
  492. document.body.onkeydown=function(evt){
  493. evt = (evt) ? evt : window.event;
  494. if(evt.keyCode===112 ){
  495. US_Browser.about();
  496. }else if(evt.keyCode===114||((evt.ctrlKey)&&(evt.keyCode===70))) {
  497. if(US_Browser.FindContainer.offsetWidth) {
  498. US_Browser.FindContainer.style.display = 'none';
  499. US_Browser.Elm[0].blur();
  500. }else {
  501. US_Browser.FindContainer.style.display = 'block';
  502. US_Browser.Elm[0].value = '';
  503. US_Browser.Elm[1].innerHTML = '0/0';
  504. US_Browser.Elm[0].focus();
  505. }
  506. }else if(evt.keyCode===116){
  507. if(US_Browser.Head[2].className==='icon-cw') {
  508. US_Browser.reFresh()
  509. }else{
  510. US_Browser.Stop();
  511. US_Browser.Head[2].className='icon-cw';
  512. }
  513. }
  514. else if(evt.keyCode===117){
  515. if(document.activeElement.id===US_Browser.Head[5].id){
  516. US_Browser.Head[5].blur();
  517. }else{
  518. US_Browser.Head[5].focus();
  519. US_Browser.Head[5].select();
  520. }
  521. }else if(evt.keyCode===121){//F10菜单
  522. US_Browser.RightMenu.style.display=US_Browser.RightMenu.offsetWidth?'none':'block';
  523. }else if(evt.keyCode===122){//F11全屏
  524. if(US_Browser.SelecteWebview.fullSrceen){
  525. if (document.exitFullscreen) {
  526. document.exitFullscreen();
  527. }
  528. else if (document.mozCancelFullScreen) {
  529. document.mozCancelFullScreen();
  530. }
  531. else if (document.webkitCancelFullScreen) {
  532. document.webkitCancelFullScreen();
  533. }
  534. else if (document.msExitFullscreen) {
  535. document.msExitFullscreen();
  536. }
  537. US_Browser.SelecteWebview.fullSrceen=false;
  538. }else{
  539. US_Browser.SelecteWebview.webkitRequestFullscreen();
  540. US_Browser.SelecteWebview.fullSrceen=true
  541. }
  542. }else if (evt.keyCode===123||((evt.ctrlKey)&&(evt.shiftKey)&&(evt.keyCode===73))) {//F12、ctrl+shift+i
  543. US_Browser.DevTools();
  544. }else if((evt.ctrlKey)&&(evt.keyCode===87)){
  545. if($(".BrowerContainer").length>0&&US_Browser.SelecteWebview.tag.children[0].tag_favicon.offsetWidth) {
  546. US_Browser.SelecteWebview.tag.children[0].tag_close.click();
  547. }
  548. }
  549. };
  550. };//浏览器头部事件绑定
  551. US_Browser.Init=function () {//初始化
  552. US_Browser.NavContainer=$(".bowerCreaterWindow")[0];//获取标签页ul
  553. US_Browser.MouseMenuMain=$("#webviewBrowserMenu")[0];//获取网页右键菜单
  554. US_Browser.RightMenu=$("#CampusInfoBrowserOnclickMenu")[0];//获取浏览器菜单
  555. US_Browser.LoadTips=$(".BrowerTips")[0];
  556. US_Browser.FindContainer=$(".BrowerFind")[0];//查找菜单主题
  557. US_Browser.Elm=$(".BrowerFind *");//查找菜单的子级
  558. US_Browser.MenuBack= $(".US_Browers_Back")[0];
  559. US_Browser.MenuGo=$(".US_Browers_go")[0];
  560. US_Browser.Elm[0].onkeyup=function (e) {//查找的input
  561. if(this.value.length&&e.keyCode!==8){//如果存在值
  562. US_Browser.SelecteWebview.findInPage(this.value);
  563. US_Browser.SelecteWebview.FindKey=this.value;
  564. }else{
  565. US_Browser.SelecteWebview.stopFindInPage("keepSelection");
  566. US_Browser.SelecteWebview.FindKey=false;
  567. }
  568. };
  569. US_Browser.Elm[4].onclick=function () {
  570. US_Browser.Elm[2].onclick=US_Browser.Elm[3].onclick=null;
  571. US_Browser.SelecteWebview.FindKey?US_Browser.SelecteWebview.stopFindInPage("keepSelection"):'';
  572. US_Browser.FindContainer.style.display='none';
  573. };
  574. US_Browser.HeadBind();
  575. US_Browser.IpcBind();
  576. }();