Javascript 如何防止链接在模式窗口中加载整个网页?
我有个奇怪的问题。我的网页有大约50个标题,来自10或12个不同的网站。当用户单击任何一个标题(这是实际文章的链接)时,网页应该只在模式窗口中显示该文章的主要内容。除第一次单击外,它每次都有效。下面是包含XHR请求的网络选项卡的屏幕截图 如您所见,我单击的第一个链接加载了一个额外的XHR请求。这种行为并不特定于任何一个网站。第一次单击任何标题都会导致两个请求。第一次点击并不是指用户第一次点击某个标题。我指的是第一次点击任何标题 在上面的屏幕截图中,我首先点击了加载AJAX请求和实际链接的第三个标题。然后我点击第一个标题,它没有导致任何额外的XHR请求。为了确保它不是某个网站特有的东西,我再次点击了第三个标题。这一次,没有额外的XHR请求。我使用了Javascript 如何防止链接在模式窗口中加载整个网页?,javascript,jquery,html,ajax,twitter-bootstrap,Javascript,Jquery,Html,Ajax,Twitter Bootstrap,我有个奇怪的问题。我的网页有大约50个标题,来自10或12个不同的网站。当用户单击任何一个标题(这是实际文章的链接)时,网页应该只在模式窗口中显示该文章的主要内容。除第一次单击外,它每次都有效。下面是包含XHR请求的网络选项卡的屏幕截图 如您所见,我单击的第一个链接加载了一个额外的XHR请求。这种行为并不特定于任何一个网站。第一次单击任何标题都会导致两个请求。第一次点击并不是指用户第一次点击某个标题。我指的是第一次点击任何标题 在上面的屏幕截图中,我首先点击了加载AJAX请求和实际链接的第三个
e.preventDefault()
,它防止仅在第一次单击后加载额外请求
这是我的密码:
$('a.modal-link').on('click', openModal);
这是我的OpenModel函数:
function openModal(evt) {
evt.preventDefault();
var link = $(this).attr("href");
var page = window.location.href.split('?')[0];
var text = $(this).text();
$.ajax({
type: "POST",
url: "path/to/getarticle.php",
data: {
link: link,
page: page
},
success: function(markup) {
$(".feed-modal .modal-body").html(markup);
}
})
您应该提供其余的
openmodel
。如果页面被缓存,您可能看不到AJAX请求。我以前从未写过这样的东西。通常我会传递一个匿名函数作为第二个参数,比如function(evt){/*your code*/}
@pcnate如果代码凌乱,我很抱歉。这是错误的做事方式吗?我是一个初学者。@cambuncive我正在添加完整的代码。啊,等等——看看第二个AJAX请求不是由您发起的,而是由那个9to5网站发起的?当你打开那个网站时,它本身就让XHR加载额外的内容——恐怕你对此无能为力。现在,你说这与你点击的网站无关。真的吗?第一次发送的XHR是否总是同一个,使用的是同一个启动器?或者,也许大多数网站都有自己的XHR,但出于某种原因,只有打开新模式后的第一个XHR才会出现在您的inspector窗口中?您应该提供其余的OpenModel
。如果页面被缓存,您可能看不到AJAX请求。我以前从未写过这样的东西。通常我会传递一个匿名函数作为第二个参数,比如function(evt){/*your code*/}
@pcnate如果代码凌乱,我很抱歉。这是错误的做事方式吗?我是一个初学者。@cambuncive我正在添加完整的代码。啊,等等——看看第二个AJAX请求不是由您发起的,而是由那个9to5网站发起的?当你打开那个网站时,它本身就让XHR加载额外的内容——恐怕你对此无能为力。现在,你说这与你点击的网站无关。真的吗?第一次发送的XHR是否总是同一个,使用的是同一个启动器?或者,也许大多数网站都有自己的XHR,但出于某种原因,只有在打开新模式后的第一个XHR才会出现在您的inspector窗口中?