如何使用Javascript中的外部文件创建模式弹出窗口?

如何使用Javascript中的外部文件创建模式弹出窗口?,javascript,Javascript,我目前正在一个网站上工作,我想用JavaScript创建一个模式弹出窗口。问题是,我想从一个单独的.html文件中提取窗口的内容,而不是从页面上的隐藏div中提取(这就是我所看到的大多数示例向您展示的方法) 如果有人能为我指明正确的方向,告诉我如何实现这一点,我将不胜感激 提前谢谢 Matt D假设HTML文件与站点位于同一个域中(因为跨域请求不起作用),您可以启动Ajax请求来检索数据并将其插入包含的元素中 尽管您不需要使用jQuery(或任何其他库)来处理Ajax请求和响应,但它使处理跨浏览

我目前正在一个网站上工作,我想用JavaScript创建一个模式弹出窗口。问题是,我想从一个单独的.html文件中提取窗口的内容,而不是从页面上的隐藏div中提取(这就是我所看到的大多数示例向您展示的方法)

如果有人能为我指明正确的方向,告诉我如何实现这一点,我将不胜感激

提前谢谢


Matt D

假设HTML文件与站点位于同一个域中(因为跨域请求不起作用),您可以启动Ajax请求来检索数据并将其插入包含的元素中

尽管您不需要使用jQuery(或任何其他库)来处理Ajax请求和响应,但它使处理跨浏览器细微差别变得更加容易

您可以这样做(假设myModel的显示为none):


举个简单的例子,但这应该可以做到。您可以在API页面上看到更深入的jQuery示例。

假设HTML文件与站点位于同一个域中(因为跨域请求不起作用),您可以启动Ajax请求来检索数据并将其插入包含的元素中

尽管您不需要使用jQuery(或任何其他库)来处理Ajax请求和响应,但它使处理跨浏览器细微差别变得更加容易

您可以这样做(假设myModel的显示为none):


举个简单的例子,但这应该可以做到。您可以在API页面上看到更深入的jQuery示例。

您可以使用iframe在弹出窗口中显示另一个页面。

您可以使用iframe在弹出窗口中显示另一个页面。

Tom的建议很好。您还可以使用jQuery的load(http://api.jquery.com/load/)将html直接转换为元素的函数:

$(modelContainerId).load(pathToHtml+ " #sectionOfHtml", function (response, status, xhr) {
    $.blockUI({
        message: $(modelContainerId),
        css: {
            border: 'none',
            padding: '15px',
            backgroundColor: '#000',
            '-webkit-border-radius': '10px',
            '-moz-border-radius': '10px',
            opacity: .9,
            color: '#fff',
            top: ($(window).height() - 700) / 2 + 'px',
            left: ($(window).width() - 700) / 2 + 'px',
            width: '700px',
            cursor: 'pointer'
        }
    });

    $('.blockOverlay').attr('title', 'Click to unblock').click($.unblockUI);
});

这里
.load(pathToHtml+“#sectionOfHtml”
只从加载的html中加载名为
#sectionOfHtml
的id。我使用此功能以上下文敏感的方式加载不同的帮助页面。

Tom的建议很好。您也可以使用jQuery的load(http://api.jquery.com/load/)将html直接转换为元素的函数:

$(modelContainerId).load(pathToHtml+ " #sectionOfHtml", function (response, status, xhr) {
    $.blockUI({
        message: $(modelContainerId),
        css: {
            border: 'none',
            padding: '15px',
            backgroundColor: '#000',
            '-webkit-border-radius': '10px',
            '-moz-border-radius': '10px',
            opacity: .9,
            color: '#fff',
            top: ($(window).height() - 700) / 2 + 'px',
            left: ($(window).width() - 700) / 2 + 'px',
            width: '700px',
            cursor: 'pointer'
        }
    });

    $('.blockOverlay').attr('title', 'Click to unblock').click($.unblockUI);
});
此处
.load(pathToHtml+“#sectionOfHtml”
仅从加载的html中加载名为
#sectionOfHtml
的id。我使用此功能以上下文敏感的方式加载不同的帮助页面。

如果使用jQuery(您应该这样做)

注意:本例使用jQuery 1.5新的“延迟”语法。如果使用早期函数,则将处理程序作为参数传递给
$。根据需要获取

如果使用jQuery(您应该这样做)

注意:本例使用jQuery 1.5新的“延迟”语法。如果使用早期函数,则将处理程序作为参数传递给
$。根据需要获取

并使用jQuery.UI的“dialog”函数将#myModel转换为模式对话框。使用jQuery.UI的“dialog”函数将#myModel转换为模式对话框。
var div = $('#myid');  // container for the content

$.get(url)                      // get the content
 .success(function(resp) {      // on success
   $(div)
      .html(resp)               // populate the div
      .dialog({ modal: true }); // and turn it into a dialog
 });