Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产亚洲精品hd网站,亚洲一区二区三区四区在线观看,国产第一区二区三区在线观看

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          最全最新方法:Electron開(kāi)發(fā)中設(shè)置a標(biāo)簽的href跳轉(zhuǎn)默認(rèn)瀏覽器打開(kāi)鏈接

          因?yàn)樽罱苊Γ緛?lái)打算不斷更新博客的。由于時(shí)間關(guān)系,因此更新較慢。

          背景

          因?yàn)樽罱行枨螅肟焖匍_(kāi)發(fā)一個(gè)桌面端應(yīng)用,最好是采用H5+JS+CSS3進(jìn)行開(kāi)發(fā),這樣效率最高。但是要知道,H5來(lái)開(kāi)發(fā)桌面端,由于瀏覽器安全策略問(wèn)題,是不可能直接給你調(diào)用本地系統(tǒng)API的,因此也出現(xiàn)了很多打包框架,國(guó)外免費(fèi)的有(Github團(tuán)隊(duì)開(kāi)發(fā)和維護(hù))、NW.js(.js)及(不太推薦)。國(guó)內(nèi)有付費(fèi)的打包軟件,有錢的大佬可以用,比較省心,底層原理還是封裝了。

          這里我選用的是。雖然NW.js和都可以跨平臺(tái)打包,但是你會(huì)才到無(wú)數(shù)坑。各有優(yōu)缺點(diǎn)吧,我個(gè)人比較喜歡前者。

          但是我相信大家在用前端技術(shù)做桌面開(kāi)發(fā)的過(guò)程中,最大的痛苦就是瀏覽器的跨域問(wèn)題、同源問(wèn)題及其他安全性問(wèn)題,還有對(duì)系統(tǒng)原生API支持力度不夠。這里我就遇到了這樣一個(gè)問(wèn)題:

          在頁(yè)面中的標(biāo)簽里的href屬性,點(diǎn)擊以后還是在內(nèi)置的瀏覽器(Chrome V8引擎)中跳轉(zhuǎn)并打開(kāi)多個(gè)頁(yè)面。而我想實(shí)現(xiàn)的是,點(diǎn)擊鏈接或者按鈕,會(huì)自動(dòng)跳轉(zhuǎn)到系統(tǒng)默認(rèn)瀏覽器中。

          推薦方法

          我在國(guó)內(nèi)網(wǎng)站上查閱了各種教程資料,只能感慨:1.治標(biāo)不治本,思路不算好;2.很多方法已經(jīng)過(guò)時(shí)了。經(jīng)過(guò)我查閱了國(guó)外大量文獻(xiàn)和教程,最終找到一種合適的辦法。這里推薦第一種:

          1.前提是你的鏈接需要添加target="_blank"屬性才行;

          2.然后在main.js主程序中添加shell請(qǐng)求,如下:

          const { app, BrowserWindow, shell } = require('electron')

          3.其次在 ()函數(shù)中新增一個(gè)函數(shù):

          mainWindow.webContents.on('new-window', function(e, url) {
              e.preventDefault();
              require('electron').shell.openExternal(url);
            })

          原來(lái)的文件長(zhǎng)這樣:

          const { app, BrowserWindow } = require('electron')
          const path = require('path')
          function createWindow() {
            // Create the browser window.
            const mainWindow = new BrowserWindow({
              width: 1600,
              height: 1000,
              ...
              title: "xxx",
              webPreferences: {
                ...
                preload: path.join(__dirname, 'preload.js')
              }
            })
              ...
            // and load the index.html of the app.
            mainWindow.webContents.openDevTools();
            mainWindow.loadFile('index.html')

          修改后的文件長(zhǎng)這樣(注意觀察文件的不同):

          const { app, BrowserWindow, shell } = require('electron')
          const path = require('path')
          function createWindow() {
            // Create the browser window.
            const mainWindow = new BrowserWindow({
              width: 1600,
              height: 1000,
              xxx
              title: "xxx",
              webPreferences: {
                preload: path.join(__dirname, 'preload.js')
              }
            })
            mainWindow.webContents.on('new-window', function(e, url) {
              e.preventDefault();
              require('electron').shell.openExternal(url);
            })
              ...
            // and load the index.html of the app.
            mainWindow.webContents.openDevTools();
            mainWindow.loadFile('index.html')

          然后你的鏈接就可以愉快的跳轉(zhuǎn)到電腦的默認(rèn)瀏覽器啦~

          其他方法

          其他方法我就不多說(shuō)了,簡(jiǎn)單描述一下,不同需求可能用到的方法不一樣。

          方法一

          您可以簡(jiǎn)單地使用:

          //老外力薦的方法
          

          瀏覽鏈接器下載打開(kāi)不了_瀏覽鏈接器下載打開(kāi)網(wǎng)頁(yè)_瀏覽器下載鏈接打不開(kāi)

          require("shell").openExternal("http://www.google.com")

          方法二

          這個(gè)答案很老了,假設(shè)你有 jQuery。

          const shell = require('electron').shell;
            
          // assuming $ is jQuery
          $(document).on('click', 'a[href^="http"]', function(event) {
              event.preventDefault();
              shell.openExternal(this.href);
          });

          方法三

          代碼片段根據(jù) 版本 v12.0.0 中的折舊提供線索

          const win = new BrowserWindow();
          win.webContents.setWindowOpenHandler(({ url }) => {
              // config.fileProtocol is my custom file protocol
              if (url.startsWith(config.fileProtocol)) {
                  return { action: 'allow' };
              }
              // open url in a browser and prevent default
              shell.openExternal(url);
              return { action: 'deny' };
          });

          方法四

          要使所有 鏈接在默認(rèn) OS 瀏覽器中從外部打開(kāi),您必須向onclick它們添加一個(gè)屬性并更改該href屬性,以便它不會(huì)在 應(yīng)用程序中加載任何內(nèi)容。

          你可以使用這樣的方式:

          aTags = document.getElementsByTagName("a");
          for (var i = 0; i < aTags.length; i++) {
            aTags[i].setAttribute("onclick","require('shell').openExternal('" + aTags[i].href + "')");
            aTags[i].href = "#";
          }

          但請(qǐng)確保在執(zhí)行此操作之前已加載整個(gè)文檔,否則它將無(wú)法正常工作。

          更健壯的實(shí)現(xiàn)如下所示:

          if (document.readyState != "complete") {
            document.addEventListener('DOMContentLoaded', function() {
              prepareTags()
            }, false);
          } else {
            prepareTags();
          }
          function prepareTags(){
            aTags = document.getElementsByTagName("a");
            for (var i = 0; i < aTags.length; i++) {
              aTags[i].setAttribute("onclick","require('shell').openExternal('" + aTags[i].href + "')");
              aTags[i].href = "#";
            }
            return false;
          }

          請(qǐng)記住,如果您加載外部文件,則必須在它們完全加載后也使它們經(jīng)歷此過(guò)程。

          方法五

          通過(guò)偵聽(tīng)主體,以下解決方案將適用于 運(yùn)行時(shí)可能尚不存在但僅在稍后出現(xiàn)在 DOM 中的標(biāo)簽。

          這個(gè)需要 jQuery:

          $('body').on('click', 'a', (event) => {
            event.preventDefault();
            require("electron").shell.openExternal(event.target.href);
          });

          您可以將選擇器更改為僅針對(duì)某些鏈接,例如'#-view a'或'a.open-'。

          這是一個(gè)沒(méi)有任何庫(kù)的替代方案:

          document.body.addEventListener('click', event => {
            if (event.target.tagName.toLowerCase() === 'a') {
              event.preventDefault();
              require("electron").shell.openExternal(event.target.href);
            }
          });

          瀏覽鏈接器下載打開(kāi)網(wǎng)頁(yè)_瀏覽鏈接器下載打開(kāi)不了_瀏覽器下載鏈接打不開(kāi)

          方法六

          我將此方法與 v.13 一起使用。

          我們攔截用戶的導(dǎo)航(window.)并在默認(rèn)瀏覽器中打開(kāi) URL。

          請(qǐng)參閱文檔:

          const { shell } = require('electron');
          window.webContents.on('will-navigate', function (e, url) {
              e.preventDefault();
              shell.openExternal(url);
          });

          方法七

          關(guān)于tsx語(yǔ)法():

          import { shell } from "electron";
          shell.openExternal("http://www.google.com")

          方法八

          要在 的項(xiàng)目中打開(kāi)外部鏈接,您需要模塊 Shell () 和方法。

          但是,如果您正在尋找一種實(shí)現(xiàn)該邏輯的抽象方法,那就是為您的目標(biāo)屬性創(chuàng)建一個(gè)自定義目標(biāo)的處理程序。

          const {shell} = require('electron');
          if (document.readyState != "complete") {
              document.addEventListener('DOMContentLoaded', function() {
                  init()
              }, false);
          } else {
              init();
          }
          function init(){
              handleExternalLinks();
              //other inits
          }
          function handleExternalLinks(){
              let links = document.getElementsByTagName('a')
              let a,i = 0;
              while (links[i]){
                  a = links[i]
                  //If , so open using shell.
                  if(a.getAttribute('target') == '_external'){
                      a.addEventListener('click',(ev => {
                          ev.preventDefault();
                          let url = a.href;
                          shell.openExternal(url);
                          a.setAttribute('href', '#');
                          return false;
                      }))
                  }
                  console.log(a,a.getAttribute('external'))
                  i++;
              }
          }

          方法九

          要在您的實(shí)際瀏覽器(Chrome、Mozilla 等)中運(yùn)行 項(xiàng)目,請(qǐng)將其添加到您的腳本是外部腳本:

          aTags = document.getElementsByTagName("a");
          for (var i = 0; i < aTags.length; i++) {
               aTags[i].setAttribute("onclick","require('shell').openExternal('" + aTags[i].href + "')");
               aTags[i].href = "#";
          }

          最后BB兩句,全球 YYDS,當(dāng)我們找不到好的辦法的時(shí)候,學(xué)會(huì)去外面看看。

          所有方法均來(lái)自 或 ,在cc by-sa 2.5、cc by-sa 3.0和cc by-sa 4.0下獲得許可

          版權(quán)聲明:本文為CSDN博主「」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

          原文鏈接:

          設(shè)置無(wú)線路由器的網(wǎng)址是多少 192.168.1.1主頁(yè)打不開(kāi)怎么辦

          現(xiàn)在可是互聯(lián)網(wǎng)時(shí)代,家家都有電腦,筆記本、平板電腦等,而這些電子設(shè)備都需要連接網(wǎng)絡(luò),也只有購(gòu)買無(wú)線路由器才能實(shí)現(xiàn)一條網(wǎng)線,多種設(shè)備上網(wǎng)的需求,而購(gòu)買回來(lái)的無(wú)限路由器也需要進(jìn)行連接,那么設(shè)置無(wú)線路由器的網(wǎng)址是多少以及192.168.1.1主頁(yè)打不開(kāi)怎么辦呢,接下來(lái)就隨小編一起去了解下吧!

          無(wú)線連接網(wǎng)頁(yè)打不開(kāi)_用無(wú)線網(wǎng)頁(yè)打不開(kāi)_無(wú)線網(wǎng)頁(yè)打不開(kāi)怎么辦

          一、設(shè)置無(wú)線路由器的網(wǎng)址是多少:

          很多家庭都會(huì)購(gòu)買無(wú)線路由器,而現(xiàn)在市場(chǎng)的無(wú)線路由器品牌就有tp-link路由器,騰達(dá)路由器,水星路由器,斐訊路由器,F(xiàn)AST迅捷路由器、小米路由器。不管您購(gòu)買的哪個(gè)牌子的路由器都需要登錄網(wǎng)頁(yè)進(jìn)行連接,而設(shè)置無(wú)線路由器的網(wǎng)址是192.168.1.1,這個(gè)網(wǎng)頁(yè)打開(kāi)成功后就能根據(jù)說(shuō)明書進(jìn)行無(wú)線路由器的設(shè)置。

          無(wú)線網(wǎng)頁(yè)打不開(kāi)怎么辦_用無(wú)線網(wǎng)頁(yè)打不開(kāi)_無(wú)線連接網(wǎng)頁(yè)打不開(kāi)

          二、192.168.1.1主頁(yè)打不開(kāi)怎么辦:

          無(wú)線連接網(wǎng)頁(yè)打不開(kāi)_用無(wú)線網(wǎng)頁(yè)打不開(kāi)_無(wú)線網(wǎng)頁(yè)打不開(kāi)怎么辦

          進(jìn)入設(shè)置無(wú)線路由器的網(wǎng)址是很關(guān)鍵的一步,如果主頁(yè)進(jìn)入不成功,那么意味著無(wú)線路由器將無(wú)法設(shè)置,那么192.168.1.1主頁(yè)打不開(kāi)應(yīng)該怎么辦呢:

          1、192.168.1.1屬于IP地址的C類地址,是供無(wú)線路由器設(shè)置的專屬網(wǎng)址,同時(shí)也是屬于保留IP。簡(jiǎn)單的說(shuō)192.168.1.1就是無(wú)線路由器的設(shè)置網(wǎng)址,在瀏覽器網(wǎng)址欄中輸入就可以打開(kāi)路由器登陸管理頁(yè)面,進(jìn)行路由器設(shè)置。而且新買的無(wú)線路由器都需要通過(guò)192.168.1.1登陸路由器。

          2、如果遇見(jiàn)192.168.1.1登陸之后,網(wǎng)頁(yè)打不開(kāi),那有可能是因?yàn)槟妮斎敕绞讲徽_,正確是輸入方式是192.168.1.1,,http:192.168.1.1,192 .168.1.1.這四種方式都是正確的,如果中間有空格,那么網(wǎng)頁(yè)進(jìn)入時(shí)也會(huì)打不開(kāi)。

          無(wú)線連接網(wǎng)頁(yè)打不開(kāi)_用無(wú)線網(wǎng)頁(yè)打不開(kāi)_無(wú)線網(wǎng)頁(yè)打不開(kāi)怎么辦

          3、使用http:和都可以,也可以直接輸入192.168.1.1,另外末尾多一位點(diǎn)也可以,即192.168.1.1.也可以登陸路由器。錯(cuò)誤的情況則是會(huì)出現(xiàn)這樣http :192.168.1.1,這樣是打不開(kāi)路由器登陸頁(yè)面。而且網(wǎng)址的小點(diǎn)是不能少的,這些輸入都是把小點(diǎn)漏掉了,同樣路由器登陸頁(yè)面打不開(kāi)。

          無(wú)線網(wǎng)頁(yè)打不開(kāi)怎么辦_用無(wú)線網(wǎng)頁(yè)打不開(kāi)_無(wú)線連接網(wǎng)頁(yè)打不開(kāi)

          4、有時(shí)候也會(huì)因?yàn)檩斎敕ǖ脑颍瑢?dǎo)致將小點(diǎn)按成了逗號(hào),這樣的網(wǎng)址是錯(cuò)誤的,也無(wú)法登陸192.168.1.1管理頁(yè)面。還有一種現(xiàn)象是喜歡加www,可能這樣的組合輸入習(xí)慣了,也會(huì)讓網(wǎng)頁(yè)登錄失敗。

          無(wú)線網(wǎng)頁(yè)打不開(kāi)怎么辦_無(wú)線連接網(wǎng)頁(yè)打不開(kāi)_用無(wú)線網(wǎng)頁(yè)打不開(kāi)

          小編小結(jié):文中小編為大家介紹了設(shè)置無(wú)線路由器的網(wǎng)址是多少以及192.168.1.1主頁(yè)打不開(kāi)怎么辦的相關(guān)知識(shí),大家可以參考一下。設(shè)置無(wú)線路由器的網(wǎng)址在正確輸入的情況,是能正常登錄的哦。

          什么,裝修還用自己的錢?!齊家裝修分期,超低年利率3.55%起,最高可貸100萬(wàn)。立即申請(qǐng)享受優(yōu)惠


          主站蜘蛛池模板: 日韩AV在线不卡一区二区三区 | 精品人妻少妇一区二区三区在线| 人妻久久久一区二区三区| 国产一区在线视频| 国产综合精品一区二区| V一区无码内射国产| 亚洲一区欧洲一区| 台湾无码一区二区| 国产精品区AV一区二区| 人妻无码一区二区视频| 午夜性色一区二区三区不卡视频| 亚洲天堂一区二区三区四区| 日本亚洲成高清一区二区三区| 国产成人无码精品一区在线观看 | 国产在线一区二区三区av| 亚洲一区二区三区久久久久| 亚洲av鲁丝一区二区三区| 国产波霸爆乳一区二区| 国产在线精品一区二区三区不卡 | 国产精品免费综合一区视频| 亚洲Av无码国产一区二区| 精品少妇ay一区二区三区| 国产a∨精品一区二区三区不卡 | 亚洲国产高清在线精品一区| 日韩精品一区二区三区中文| 久久久久人妻一区精品性色av| 亚洲成AV人片一区二区| 无码少妇一区二区三区浪潮AV| 亚洲av午夜福利精品一区人妖| 久久婷婷色一区二区三区| 色婷婷一区二区三区四区成人网 | 中文字幕国产一区| 中文字幕人妻丝袜乱一区三区 | 亚洲一区电影在线观看| 人妖在线精品一区二区三区| 国产成人精品一区二三区熟女| 春暖花开亚洲性无区一区二区 | 美女一区二区三区| 亚洲日本乱码一区二区在线二产线 | 精品无码人妻一区二区三区18| 怡红院美国分院一区二区|