4


0

jqueryを使用して親ウィンドウから新しいウィンドウを移動/操作する

考えられる解決策がすでにある質問を見つけましたが、それを読む前に提案された方法をすでに試していて、矛盾しているとさえ言っています。 だから私はこれがなぜ機能しないのだろうと思うと思う:

$("img").click(function() {
    var imgwindow = window.open('imgwin.html','','width=460,height=345');
    alert(imgwindow.find("img").attr("src"));
});

目標は、新しいウィンドウの「img」を、ユーザーが新しいウィンドウを開くためにクリックした画像と同じ「src」に設定することです。 しかし、上記のシナリオでは、新しいウィンドウをタップして、すでに設定されているsrcを取得しようとしています。 画像のデフォルトの src`で既に書かれた imgwin.html`があるので、そのURLに警告する必要があります。 代わりに、「未定義」になります。

また、次のことも試してみました(バックエンドでも同じである必要があります)が、結果は同じです。

$("img").click(function() {
    var imgwindow = window.open('imgwin.html','','width=460,height=345');
    alert($("img",imgwindow).attr("src"));
});

jqueryが変数をDOM要素として取得していない場合に備えて、 imgwindow`変数を $() `でラップするバリエーションも試しました。

私が推測できる唯一のことは、 `window.open()`はメソッドであるため、基本的なJavaScriptチュートリアルのすべてのドキュメントが変数をウィンドウを開くためのメソッドとして扱う場合でも、jqueryはDOM要素のように扱わないことですウィンドウの内部DOMへのポインター。

注意:

私は通常、他の開発者にjquery-uiダイアログウィジェットの使用を好み、推奨していますが、このシナリオでは、画像は実際にはユーザーがメインウィンドウから飛び出し、メインウィンドウが開いていても開くウェブカメラフィードです閉じているので、一般にポップアップウィンドウからの移動を歓迎しますが、同じウィンドウウィジェットを含む代替案の提案は避けてください。 ありがとう。

2 Answer


2


なぜこれをしないのですか

$("img").click(function(e) {
var src = $(this).attr('src');
window.open(src,'','width=460,height=345');
});

これにより、画像が入った新しいウィンドウが開きます! ;-)

更新

あなたのコメントに応えて、次のようなことをする必要があります:

$("img").click(function(e) {
//Load content in your page and hide it...
$('#result').load('imgwin.html').hide();
//find the image you want...
 alert($('#result').find("img").attr("src"));
//remove it from your page..
$('#result').remove();
});

*アップデート2 *

わかりました、まだこれで、私はそれが好きです! ;-)

これを試して:

var reg = /src=\"(.+[\.jpg|\.jpeg|\.png|\.gif])\"/;
var imgwindow = $.ajax({type: "GET", url: "imgwin.html", async: false  }).responseText;
var img = imgwindow.match(reg)[1];
alert(img);


2


早くて汚い

var src = '';
var imgwindow;
$(function() {
  $("img").click(function() {
    imgwindow = window.open('urlto.html','','width=460,height=345');
    src = this.src;
    //delay needed as I couldn't manage to get ready/load events to work on the
    //imgwindow.document object
    //thus the snippet is dirtier then need with all those "global" variables
    setTimeout('$("img", imgwindow.document.body).attr("src", src)', 1000);
  });
});

注意: Operaでのみテストされています。 `imgwindow.document`はすべてのブラウザで機能するとは限りません。 少なくとも、iframeには、新しいウィンドウ/ iframeの「ドキュメント」を取得するためにdocument / contentDocumentおよびその他の「識別子」が必要になる問題があることを思い出します。 ただし、サポートが必要なブラウザでテストするだけです