【问题标题】:Open a local HTML file using window.open in Chrome在 Chrome 中使用 window.open 打开本地 HTML 文件
【发布时间】:2019-06-18 20:02:33
【问题描述】:

我想通过 Javascript 打开一个本地 HTML 文件:

window.open ("file://C:/Users/wins/Desktop/exclusiveWordpress.html","mywindow");

但它打开了一个带有空白页面的新窗口,正如我们在未指定 URL 时所获得的那样。我如何做到这一点?

【问题讨论】:

  • 试试file:///而不是file://
  • 具有此 HTML 的页面是否也在 file: 协议上?
  • 它是一个 html 文件。我尝试使用 file:/// 而不是 file://............仍然无法按预期工作
  • 如果原始网页来自 http{s},则不能(安全问题)。您能否指定运行 javascript 的位置(localhost、http://、https://、file://、...告诉我们它的 html 文件不够具体)

标签: javascript


【解决方案1】:

这对我很有效:

文件 1:

    <html>
    <head></head>
    <body>
        <a href="#" onclick="window.open('file:///D:/Examples/file2.html'); return false">CLICK ME</a>
    </body>
    <footer></footer>
    </html>

文件 2:

    <html>
        ...
    </html>

无论这两个文件是否在同一个目录中,此方法都有效,但两个文件都必须是本地文件。

出于明显的安全原因,如果文件 1 位于远程服务器上,您绝对不能在某些客户端的主机上打开文件,并且尝试这样做会打开一个空白目标。

【讨论】:

  • 如何在同一个标​​签页中打开?
  • @TusharGogna 通过将name 属性传递给函数,例如:window.open('file:///D:/Examples/file2.html', "_self");
  • 谢谢 (y) 虽然我现在使用 location.harif 来做到这一点。无论如何,新年快乐:)
  • 如果我们通过服务器打开然后 html,此方法将不起作用。仅在以 file:///D:/Examples/file1.html 的形式打开时有效
【解决方案2】:

window.location.href = 'file://///fileserver/upload/Old_Upload/05_06_2019/THRESHOLD/BBH/Look/chrs/Delia';

没有什么对我有用。

【讨论】:

    【解决方案3】:

    首先,确保源页面和目标页面都通过file URI 方案提供服务。您不能强制 http 页面打开 file 页面(但反过来也可以)。

    接下来,调用window.open() 的脚本应该由用户发起的事件调用,例如点击、按键等。简单地调用window.open() 是行不通的。

    您可以在此问题页面的此处进行测试。在 Chrome 的 JavaScript 控制台中运行这些:

    // Does nothing
    window.open('http://google.com');
    
    // Click anywhere within this page and the new window opens
    $(document.body).unbind('click').click(function() { window.open('http://google.com'); });
    
    // This will open a new window, but it would be blank
    $(document.body).unbind('click').click(function() { window.open('file:///path/to/a/local/html/file.html'); });
    

    您还可以测试这是否适用于本地文件。这是一个简单地加载 jQuery 的示例 HTML 文件:

    <html>
        <head>
            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
        </head>
        <body>
            <h5>Feel the presha</h5>
            <h3>Come play my game, I'll test ya</h3>
            <h1>Psycho- somatic- addict- insane!</h1>
        </body>
    </html>
    

    然后打开 Chrome 的 JavaScript 控制台并运行上面的语句。第三个现在可以工作了。

    【讨论】:

    • 这个答案实际上是不准确的。你可以运行 window.open('google.com');只要您的弹出窗口阻止程序不妨碍它,它就会自动打开一个新窗口。
    • 谢谢@Deadron...我完全没有注意到我的弹出窗口阻止程序阻止我从 chrome 控制台调用 window.open()!
    猜你喜欢
    • 2013-12-05
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2020-08-08
    • 2018-05-15
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多