我可以链接到dom中的元素

时间:2016-03-14 13:38:37

标签: javascript html dom

我有一个由文本组成的静态网页,分为带有<h2>标记的部分。 我无权访问底层代码,但我想链接到特定的<h2>标记。 如果我有权访问代码,我可以使用ID标记标记,例如:<p id="section1"> - 但这不是一个选项。 我也可以使用DOM索引访问它们,例如document.getElementsByTagName("h2")[0] - 所以我的问题是,是否有任何方法可以将其添加到链接而无需关联的javascript?

由于

阿里

2 个答案:

答案 0 :(得分:1)

不,你只能通过链接做到这一点。

您需要以某种方式访问​​底层标记,以滚动到某个位置或对DOM进行实时更新。

如果您可以使用iframe访问它并且CORS没有阻止,则可以这样做。

另一种方法是使用服务器端语言,如ASP.NET,从中读取页面,处理页面然后将其转发到客户端。这仍然会适得其反,具体取决于脚本等在相关页面上的行为方式。

答案 1 :(得分:0)

<iframe id="myframe" src="/yourDocument.html" />
var x = document.getElementById("myframe");
var y = (x.contentWindow || x.contentDocument);
if (y.document)y = y.document;
var contLinks = y.body;

如下所述:IFrame contentDocument Property

如果您可以在iframe上打开文档,或者从服务器端脚本获取内容,请在返回的DOM上运行:

var createLinks = function(){
    var contLinks = document.getElementsByTagName("body");
    for(i=0; i<contLinks.length; i++)
        {
            var Links = document.getElementsByTagName("h2");
            var appendLinks = "";
            for(idx=0; idx<Links.length; idx++)
                {
                    appendLinks += "<a href='"+Links[idx].innerHTML.trim()+"'>"+Links[idx].innerHTML.trim()+"</a><br/>";
                    //Links[idx].remove;
                }
            contLinks[i].innerHTML = appendLinks;
        }
  }
 createLinks();

将最后一行contLinks[i].innerHTML = appendLinks;指向您喜欢的输出...

如果您绝对不能使用任何与文档的交互,那么您就是无法使用它。