私はかなり長い間、簡単な解決策を探していました。ページ(たとえば http://www.google.com )をJQuery UIダイアログウィンドウに表示したいのですが。私のサイトからのすべてのリンクが上記のウィンドウに表示されるように、後でURLを動的に追加する計画です。
以下を試しましたが、リンクをクリックするとダイアログウィンドウが空になります。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
<script>
$(document).ready(function() {
$('#openwindow').each(function() {
var $link = $(this);
var $dialog = $('<div></div>')
.load($link.attr('href'))
.dialog({
autoOpen: false,
title: $link.attr('title'),
width: 500,
height: 300
});
$link.click(function() {
$dialog.dialog('open');
return false;
});
});
});
</script>
</head>
<body>
<a id="openwindow" href="http://www.google.com">Click me to test.</a>
</body>
</html>
いくつかの例を見つけましたが、実際に機能するものはありませんでした。私はいくつかの助けに本当に感謝します。
前もって感謝します。
提案されているようにiframe
は必要ありませんが、ダイアログのドキュメント here を読む必要があります。
代わりに、.open
プロパティのコンテンツをロードする必要があります-
$( "#openwindow" ).dialog({
open: function(event, ui) {
$('#divInDialog').load('test.html', function() {
alert('Load was performed.');
});
}
});
また、id
とともに.each
を使用しているようです-id
はページ内で一意であると想定されています。代わりにclass
を使用してください。
あなたはこれを試すことができます
$(function(){
$('a').on('click', function(e){
e.preventDefault();
$('<div/>', {'class':'myDlgClass', 'id':'link-'+($(this).index()+1)})
.load($(this).attr('href')).appendTo('body').dialog();
});
});
上記のコードは、ページ上のリンクをクリックすると新しいdialog
を作成し、クラス名myDlgClass
と、link-1
、link-2
などの各ダイアログに一意のIDを追加しますが、同じOriginポリシーのため、ページリンクのみがロードされ、外部リンクはロードされません。
外部サイトリンクを使用するには、iframe
を使用できます。これが iframeの使用例 です。
This 役立つかもしれません。ここで私がしているのはリンクの上にホバーしていて、URLがダイアログボックスで開いています。複数の同じタグが動的に作成される場合は、class
ではなくid
を使用する必要があります..それ以外は、単一のid
に対してのみ機能します。
$('.openwindow').click(function(){
var $this=$(this);
$.ajax({
url: $this.attr('href');//You got the link here
success: function(data) {
//show the dialog here..
//"data" contains the html returned by the url
},
error: function(jqXHR){
//Do something here
}
});
});
Iframeを使用できます。
$("#iframeId").attr("src", $(this).attr("href"));
$('#dialogId').dialog('open');
<div id="divId" >
<IFRAME id="iframeId" SRC="" width="" height = "" >
</div>