0

これは私がする必要があることです。

Webページと別のWebサイトがあり、どちらも同じドメインでホストされています。そのWebサイト全体をそのWebページのdivまたはiframeにロードしたいと思います。これに似た例は、hidemyass.comのような無料のプロキシブラウザです。

私はこれが簡単にできることを知っていますが、要点は私もナビゲーションを避ける必要があるということです。Webサイトにa.htmとb.htmという2つのページがあるとします。a.htmからb.htmへのリンクがあります。したがって、誰かがa.htmのリンクをクリックすると、ブラウザはb.htmにリダイレクトします。

そのa.htmをページの一部に埋め込んだときに、誰かがリンクをクリックした場合。ブラウザのb.htmにリダイレクトされます。私がやりたいのは、そのリダイレクトを回避し、誰かがリンクをクリックすると、b.htmが私のページ自体に読み込まれるようにすることです。

そのWebサイト(この場合はa.htmとb.htm)を変更する方法はありません。すべて、そのページで行う必要があります。

どうすればこれを達成できますか?

4

2 に答える 2

1

リンクのクリックのみを表示し、JavaScriptを介したナビゲーションを表示していない場合は、次のコードで実行できます。

<iframe id="frame" src="a.html"></iframe>
<script type="text/javascript">
  function onClick(event)
  {
    var link = event.target;
    while (link && link.localName != "a")
      link = link.parentNode;

    if (link && !link.hasAttribute("target"))
      link.setAttribute("target", "_parent");
  }

  // Listen to clicks inside the frame
  document.getElementById("frame").contentWindow.addEventListener("click", onClick, false);
</script>

これにより、ユーザーがクリックしたリンクがチェックされ、target="_parent"明示的なターゲットが定義されていない場合はそれらに属性が追加されます。これは、新しいウィンドウ/タブを対象としたリンクが引き続き通常どおり機能することを意味します。現在のページを置き換えることを目的としたリンクは、代わりに親ドキュメントを置き換えます。a.htmlただし、これはもちろん、のJavaScriptコードが干渉しない限り機能します。

于 2012-05-23T07:15:27.367 に答える
0

ページからのみリンクをスキップしたい場合は、リンクに onclick ハンドルを追加し、フレームが完全にロードされていないときに false を返すことができます。

これがスクリプトです

function checkLink(){
  if (canNavigate){
    return true;
  }
  return false;
}

ただし、ブラウザアドレスでのナビゲーションを無効にしたい場合は、linkbuck Web サイトのようにする必要があります

http://c6f11ddd.linkbucks.com/url/http://www.google.com

linkbuck では、広告がまだ読み込まれていない間は移動できません。これらのコードを使用してこれをアーカイブします。調査する必要があります

Buster: function () {
  var interval = setInterval(function () {
    if (Lbjs.IsClick) {
     clearInterval(interval);
    }
    else if (Lbjs.Unload > 0) {
     Lbjs.Unload -= 2;
     window.top.location.replace("/cancelnavigation/");
     Lbjs.NavigationNotice();
    }
  }, 1);
  var clearDelay = (this.Countdown > 0) ? this.Countdown : 8;
  setTimeout(function () { clearInterval(interval); }, clearDelay * 1000);
},
NavigationNotice: function () {
  var navNotice = document.getElementById("navNotice");
  navNotice.innerHTML = "<span class=\"warning\" style=\"text-align:center;height:20px;width: 400px;padding: 10px;\"><b>Request Cancelled</b> - Navigation is disabled for 8 Seconds...</span>";
  if (navNotice.style.display == "none") {
    this.Fader.FadeIn(navNotice, 200, function () {
      setTimeout(function () {
      Lbjs.Fader.FadeOut(navNotice, 200, null);
    }, 1500);
  });
} 
于 2012-05-23T07:01:40.440 に答える