我无法修改以下html:
<iframe src="http://google.com/foo" width="600" height="338" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe>
<div style="padding:5px 0; text-align:center; width:600px;"><p>
<a href="http://www.foobar.com/lol/wut">Some Link</a></p></div>
我需要定位这个元素:
<a href="http://www.foobar.com/lol/wut">Some Link</a>
要求是:
由于我无法编辑html,我不能简单地添加id并使用document.getElementById。那么如何使用普通的js来定位链接?
答案 0 :(得分:2)
查看selectors,特别是属性选择器和兄弟组合器:
iframe[src^="http://google.com"] ~ a
您可以在jQuery选择器表达式或document.querySelector
中轻松使用它。
答案 1 :(得分:1)
function aSrcAfterIFrame(document) {
var elements, result, looking, item, tagName, i, n;
elements = document.getElementsByTagName('*');
looking = false;
for (i = 0, n = elements.length; i < n; i++) {
item = elements[i];
tagName = item.tagName.toLowerCase();
if (looking && tagName === 'a') {
result = item.href;
break;
}
if (tagName === 'iframe') {
if (item.src.indexOf('http://google.com/foo') === 0) {
looking = true;
}
}
}
return result;
}
aSrcAfterIFrame(document);
"http://www.foobar.com/lol/wut"
答案 2 :(得分:0)
阅读编辑。
未经测试,但假设您正在使用类似这样的jQuery应该可以解决问题。
var link = null;
$('iframe:first').siblings().each(function() {
if (link !== null) return;
if ($(this).attr('href') && $(this).attr('href').search('http://www.google.com') > -1) {
link = $(this);
}
});
不是最好的解决方案,但我觉得这是一个奇怪的场景。
编辑:如果贝尔吉斯选择器使用它。花哨的东西,我刚刚学到了一些东西。
编辑2:我还注意到你想检查iframe src而不是链接源,所以我的帖子基本上都是错误的。