1

私は、サイトの右側に独自の動的な最新ニュース フィードを埋め込みたいクライアントのプロジェクトに取り組んでいます。これは、RSS や Twitter だけでなく、ビデオやリンクを備えたかなりカスタマイズされたモジュールです。

クライアントは、このコンテンツを取得するための特別なページとしてサーバーにアップロードし、URL を提供してくれました。

iFrame を使用してコンテンツを埋め込むことはできますが、リンクに target="_parent" が含まれていないため、リンクをクリックすると新しいコンテンツが iframe 内に読み込まれますが、これは望ましくありません。新しいタブで開くようにします。残念ながら、コンテンツを変更したり、2 週間待つことはできません。これでは手遅れになります。さらに厄介なことに、私たちは同じドメインにいません。

私たちのシステムは、私が知らないasp.net上に構築されています(私はもっとPHPです!)。また、私はこの役割のフロントエンド開発者であり、asp.net コードにアクセスしたり変更したりすることはできません。

jQuery .load() を使用してみましたが成功しませんでした。少し初心者なので、これを行う正しい方法がわからない、またはフロントエンドテクノロジーを使用してまったく可能かどうかさえわかりませんか?

私の同様の質問はすべて古くて時代遅れであるように思われるので、最新かつ最良のアプローチを取得することをお勧めします。

ありがとう。

4

3 に答える 3

0

でコンテンツをプルすると.load()、完了したときのコールバック関数があります。<a>そのセクションのすべてのリンクをループしてtarget=、新しいタブで開くように変更するだけです。

css: target-new: tab ! important(残念ながら、これはcss3とのみ互換性があります)

于 2012-08-14T13:40:47.323 に答える
0

<head>読み込まれているページに次のものが含まれていることを確認できる場合:

<base target="_blank" />

その後、すべてのリンクが新しいウィンドウで開きます。ページの にそれが含まれていることを確認できない場合は<head>、サーバー側の HTTP リクエストを介してページ データをダウンロードし、ページをボックスに埋め込む前にそのタグを手動で追加するオプションがあります。サーバー側の作業をしたくない場合は、クライアント側で行うこともできます。これを行う方法の簡略版を次に示します。

$.get("http://exampleurl.com/", function (data) {
    var pos = data.indexOf("<head>");
    if(pos == -1) {
        //pretty impossible
        return;
    }
    data = data.substr(0, pos + 5) + '<base target="_blank" />' + data.substr(pos + 6, data.length - (pos + 6));
    //display data
});
于 2012-08-14T13:43:25.520 に答える
0

jQuery .load()を使用すると、DOM 要素のみをロードするため、ページ上のすべての JS コードを抽出し、この部分をターゲットにする必要があります。少しトリッキーですが、いくつかのこととパスを変更すると、機能するようになります。

別の、おそらくより簡単な方法ですが、同じドメインにいる場合にのみ機能します。

$("#iFrame").contents().find("a").on("click",function(e)
{
    e.preventDefault();
    // then use the href to virtualy create a link click event :-)
});
于 2012-08-14T13:44:48.677 に答える