Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery替换所有HTML_Javascript_Jquery_Drupal_Drupal 7 - Fatal编程技术网

Javascript jQuery替换所有HTML

Javascript jQuery替换所有HTML,javascript,jquery,drupal,drupal-7,Javascript,Jquery,Drupal,Drupal 7,我正在尝试用另一个页面替换所有HTML(包括HTML标记)。我想做的是让一个网站充当一个应用程序,即使在浏览另一个页面时也是如此 代码如下: (function($) { Drupal.behaviors.loadingPage = { attach: function(context,settings) { $('a').click(function(event) { event.preventDefault(); // Create t

我正在尝试用另一个页面替换所有HTML(包括HTML标记)。我想做的是让一个网站充当一个应用程序,即使在浏览另一个页面时也是如此

代码如下:

(function($) {
  Drupal.behaviors.loadingPage = {
    attach: function(context,settings) {
      $('a').click(function(event) {
        event.preventDefault();
        // Create the loading icon
        // ...
        $.ajax({
          url: $(this).attr('href'),
          success: function(data) {
            $('html').replaceWith(data);
          }
        });
      });
    }
  };
})(jQuery);
我试过几种方法。replaceWith()在删除HTML标记后在jQuery.js中导致jQuery错误,我猜这是因为它再也找不到父对象来添加替换

我得到的最好结果是使用
document.write(data)
。问题是,加载页面上的javascript代码没有执行


有人有更好的主意吗?

有更好的主意吗?是的,只需通过设置
window.location
而不是使用AJAX来正常加载新页面。或者提交一份表格

否则,如果您想加载一些内容来替换当前页面的所有可见内容,但要保持当前页面的脚本运行,请将所有可见内容放在一个大小足以填充浏览器窗口的框架中—同样,您不会使用AJAX填充


(我喜欢AJAX,但我不明白为什么要用它来替换整个页面。)

试着用数据内容替换
标记的内容?这不像
有任何有用的属性。也就是说,这将实现的唯一一件事是你模拟另一个页面,直到用户单击该页面上的链接为止。@Sii如果有什么,它会保存你不想重做的浏览器测试结果,因为我们都在使用Modernizer,对吗?:如果你要重新加载整个页面,为什么要用ajax呢?只需将
window.location
设置为新的URL,或者如果需要将表单作为POST而不是GET,则发布表单。@Sii数据变量中有HTML标记,这就是为什么我不能直接替换它。尖刻:请看下面我对nnnnnn的回答。正如我在第一篇文章中所说的(但我想这很糟糕),我正试图让我的网站成为一个真正的应用程序,而不是浏览器中的页面。为此,我在加载内部单击的链接时放置了一个“加载图标”。我只是想知道怎么做:-)。使用框架可以让我这样做吗?我之所以使用AJAX,是因为这是我认为的一种方式。完全主观地说:单页应用程序令人难以置信地讨厌,而模仿第三方网站更是如此(回想一下DiggBar的惨败)。web应用程序的用户希望在应用程序中导航以更改页面,或者至少更改URL。此外,是的,在您的应用程序中嵌入另一个网页的标准方式是框架或iFrame。请记住,出于安全原因,如果它们来自另一个域,则无法从脚本访问它们的内容。按照Sii的说法,如果所有“应用程序”都来自同一个域,则框架可以访问彼此的内容(包括在其他框架中定义的调用函数等)。框架教程超出了这里的回答范围。好的,谢谢大家的回答:)@Sii:我确实计划使用