window.open

函数方法,该函数的作用是打开一个新窗口或改变原窗口,如果你直接在js中调用window.open()去打开一个新窗口,浏览器会拦截

  1. setTimeout('window.open(url);', 500);
  2. # 点击这个超链接,浏览器会认为它是打开一个新的链接,就不会拦截。
  3. <a href="javascript:void(0)" onclick="window.open()"></a>

location.href

image.png

  1. location.href ="https://www.oecom.cn";

采用a标签

  1. export function openUrl(url, id = "default", type="_blank") {
  2. var a = document.createElement("a");
  3. a.setAttribute("href", url);
  4. a.setAttribute("target",type);
  5. a.setAttribute("id", id);
  6. // 防止反复添加
  7. if (!document.getElementById(id)) {
  8. document.body.appendChild(a);
  9. }
  10. a.click();
  11. }

兼容方案

  1. var newTab=window.open('about:blank');
  2. newTab.location.href ="https://www.oecom.cn";
  1. /**
  2. * @description: 在新标签页打开网页
  3. * @param {*} url 需要打开的url
  4. * @param {*} id 防止重复位置打开
  5. * @param {*} type 防止重复位置打开
  6. * @return {*}
  7. */
  8. export function openUrl(url, id = "default", type="_blank") {
  9. let browser = myBrowser()
  10. if (browser === "Safari") {
  11. window.location = url
  12. return
  13. }
  14. var a = document.createElement("a");
  15. a.setAttribute("href", url);
  16. a.setAttribute("target",type);
  17. a.setAttribute("id", id);
  18. // 防止反复添加
  19. if (!document.getElementById(id)) {
  20. document.body.appendChild(a);
  21. }
  22. a.click();
  23. }
  24. function IEVersion() {
  25. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  26. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
  27. var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
  28. var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
  29. if(isIE) {
  30. var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  31. reIE.test(userAgent);
  32. var fIEVersion = parseFloat(RegExp["$1"]);
  33. if(fIEVersion == 7) {
  34. return IE7;
  35. } else if(fIEVersion == 8) {
  36. return IE8;
  37. } else if(fIEVersion == 9) {
  38. return IE9;
  39. } else if(fIEVersion == 10) {
  40. return IE10;
  41. } else {
  42. return IE6;//IE版本<=7
  43. }
  44. } else if(isEdge) {
  45. return 'edge';//edge
  46. } else if(isIE11) {
  47. return IE11; //IE11
  48. }else{
  49. return -1;//不是ie浏览器
  50. }
  51. }
  52. function myBrowser() {
  53. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  54. var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
  55. var ieVersion= IEVersion(); //判断是否IE浏览器
  56. var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
  57. var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
  58. var isSafari = userAgent.indexOf("Safari") > -1
  59. && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
  60. var isChrome = userAgent.indexOf("Chrome") > -1
  61. && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
  62. if (ieVersion !="-1") {
  63. return ieVersion;
  64. }
  65. if (isOpera) {
  66. return "Opera";
  67. }
  68. if (isEdge) {
  69. return "Edge";
  70. }
  71. if (isFF) {
  72. return "FF";
  73. }
  74. if (isSafari) {
  75. return "Safari";
  76. }
  77. if (isChrome) {
  78. return "Chrome";
  79. }
  80. }
  81. /**
  82. * @description: 解析url中的携带参数
  83. * @param {*} val
  84. * @return {*}
  85. */
  86. export function parseQuery(val) {
  87. var params = {},
  88. seg = val.replace(/^\?/, '').split('&'),
  89. len = seg.length,
  90. p;
  91. for (var i = 0; i < len; i++) {
  92. if (seg[i]) {
  93. p = seg[i].split('=');
  94. params[p[0]] = p[1];
  95. }
  96. }
  97. return params;
  98. }