我正在处理一个通过 CGI 系统动态生成的页面,该网站的真正开发人员没有时间为我更改 python 代码。也就是说,我被迫构建页面(相同域)并使用一些 JavaScript 来修改其内容......现在,我正在尝试找到包含 URL 的锚标记并将目标属性设置为“_top” . 这样,打开菜单等的页面上的锚点被加载到框架中,并且指向场外的任何内容都被加载到整个窗口中。这是我尝试过的:
function pointOutside(){
var anchorS = window.frames[0].document.getElementsByTagName("a");
for(i=0;i<anchorS.length;i++){
var foo = anchorS[i].getAttribute('href');
foo = foo.toString();
if(foo.search(/http/i) != -1){
anchorS[i].setAttribute('target','_top');
};
};
};
setTimeout("pointOutside()",2000);
超时使框架的内容在被调用之前有足够的时间加载,但我遇到麻烦的地方是检查 href 属性是否以“http”开头。我最初在没有“foo = foo.toString();”的情况下尝试了这个 行,但出现“未捕获的类型错误:无法在 null 上调用方法‘搜索’”的错误。我心想,“啊哈,我会确保它是一个字符串!” 但没有运气。现在,当我调用 toString() 时,我遇到了类似的错误...“未捕获的 TypeError:无法调用方法‘toString’ of null。”
奇怪的是,为了确保我的选择器正常工作,我使用了“alert(foo)”,并且能够为每个锚标记获取一个弹出窗口,显示 href 属性的值。
不知道我要去哪里错了。任何帮助将非常感激。