0

次の 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だけを使用してリンクをターゲットにするにはどうすればよいですか?

4

3 に答える 3

2

セレクター、特に属性セレクターと兄弟コンビネーターを確認してください。

iframe[src^="http://google.com"] ~ a

これは、jQueryセレクター式またはで簡単に使用できますdocument.querySelector

于 2013-02-11T20:45:11.393 に答える
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);
    }
});

最善の解決策ではありませんが、これは奇妙なシナリオだと思います。

編集:Bergisセレクターが機能する場合はそれを使用してください。派手なもの、私はちょうど何かを学びました。

編集2:また、リンクソースではなくiframe srcを確認したいので、私の投稿は本質的にまったく間違っていることに気づきました。

于 2013-02-11T20:44:42.573 に答える
0
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"
于 2013-02-11T21:03:22.747 に答える