如何使用JavaScript读取HTML链接的文件名?

时间:2019-06-18 11:06:53

标签: javascript html

我在某个文件夹中有一个html文件。该文件称为“ file.html”。我在桌面或其他任何地方创建一个指向“ file.html”的链接文件。链接文件的名称为“星期一”。

对于我的“ file.html”,我正在使用一些JavaScript来过滤正在创建的表的某些行。

我的问题是:是否可以读取链接文件的“星期一”,打开原始文件并将“星期一”设置为我现有的下拉菜单的选定条目?如果是这样,我该怎么办?

我的xslt文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
    <head><title>Shared Secrets</title></head>

<body onload="JavaScript_Filter();">
    <h1>Dokumentation Shared Secrets durch RD/UEA</h1>

        <img style="position: absolute; top:80px; left:920px;" src="../logo/logo.jpg" alt="Logo RD/U"></img>

    <table id="myTable">
        <colgroup>
            <col width="150" style="background-color:e2e2e2"></col>         
        </colgroup>
        <tr  style ="background-color:a5a5a5">
            <th rowspan="2">plane
                <select id="modelRangeDropdown" onclick="JavaScript_Filter()">
                     <option selected="selected">All</option>
                     <xsl:for-each select="logstore/plane">
                        <option>
                         <xsl:value-of select="Name" />
                        </option>
                     </xsl:for-each>                    
                </select>                   
            </th>   
            <th colspan="2" width="330">date</th>
            <th rowspan="2">Secret
                <input type="checkbox" id="identicalSecrets" onclick="JavaScript_Filter()"></input>
                <label for="identicalSecrets">Hide identical secrets</label>
            </th>
        </tr>

        <tr>
            <th align="center" style="background-color:a5a5a5">begin</th>
            <th align="center" style="background-color:a5a5a5">end</th>
        </tr>
        <xsl:for-each select="logstore/plane/trigger">
            <tr>
                <td align="center"><xsl:value-of select="../Name"/></td>
                <td align="center"><xsl:value-of select="date"/></td>
                <td align="center"><xsl:value-of select="date"/></td>
                <td><xsl:value-of select="secret"/></td>
            </tr>
        </xsl:for-each>
    </table>    
    <script type="text/javascript" src="JavaScript_Filter.js"></script>     
</body>
</html>
</xsl:template>
</xsl:stylesheet>

我的JavaScript代码:

// Just contains some filtering code... does not matter for my question

2 个答案:

答案 0 :(得分:1)

链接(至少在Windows中是文件系统指针),当单击该链接时,操作系统将根据基础资源的mime类型打开引用的资源。因此,,因为链接是由操作系统内部处理的,所以没有数据从链接传递到资源本身。

我的第一个想法是拥有一个名为“ Monday.htm”的HTML页面,该页面仅转发到您的目标HTML页面,然后检查其引荐来源网址。但是,这不适用于本地文件:

  

在以下情况下,浏览器不会发送Referer标头:

     
      
  • 引荐资源是本地“文件”或“数据” URI。
  •   
  • 使用了不安全的HTTP请求,并使用安全协议(HTTPS)接收了引荐页。
  •   

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer

第二个选项是将您的标识符添加到所请求资源的URL中,然后使用该标识符进行标识。您的快捷方式页面将包含以下内容:

<html>
  <head>
    <meta http-equiv="Refresh" content="0;url=test.htm#Monday"/>
  </head>
</html>

井号#后面的单词将是我们的标识符。

现在在“主应用程序”中只需检查参数:

<html>
  <body>
    <script>
      var id = document.location.hash.substring(1);
      alert(id);
    </script>
  </body>
</html>

不知道这是否适合您。

答案 1 :(得分:0)

我也找到了对我有用的解决方案。 我已经创建了Internet_explorer.exe单击属性的快捷方式,并将目标路径更改为“ C:... / iexplore.exe”“ file:// path_to_html?parameter”。

现在可以读取我的URL并将子字符串(我的参数)保存到“ parameterModelrange”:

var currentLocation = window.location.href;
var parameterModelrange = currentLocation.substring(36);

然后我可以浏览我的下拉菜单,将每个条目与我的参数进行比较,如果在下拉菜单中找到了该条目,则可以选择所需的参数:

var mySelectNode = document.getElementById("modelRangeDropdown"); 
var l = mySelectNode.options.length;
for (var i = 0; i < l; i++) { 
    var opt = mySelectNode[i];

    if (opt.text === parameterModelrange) { 
       document.getElementById("modelRangeDropdown").selectedIndex = i;
    }
}