gpt4 book ai didi

javascript - 在 FF 上重新加载页面而不更改页面

转载 作者:可可西里 更新时间:2023-11-01 02:47:31 27 4
gpt4 key购买 nike

我遇到了这个问题,我无法弄清楚发生了什么:我正在使用 Angular 及其路由机制。

所以我有一个网址:

<a href="#/videos/detail/{{video.Id}}" onclick="location.reload();">
<div class="card-image">
<img ng-src="{{video.ThumbnailUrl?video.ThumbnailUrl:'img/images.png'}}" src="" />
</div>
</a>

如您所见,有一个 onclick="location.reload(); 这适用于 Chrome 和 IE9。但在 FF 上它执行以下操作:

  1. 点击链接
  2. url 已更新
  3. 在刷新页面时调用 location.reload()
  4. url和 Angular View ,返回点击链接的页面
  5. 当按“F5”时,实际页面和 url 正在加载

我也尝试过 location.reload(true); 来判断路由是否被缓存了,但没有成功。

如果您想知道为什么要刷新和定位:我需要刷新页面才能重新加载插件(由于其中的错误),这是我第一个想到的方法。

编辑:最终通过结合使用 Angular 和一些 Jquery 来完成;

所以最终的 html 看起来像这样;

<a href="#" class="prevent" ng-click="redirectwithreload('# />videos/detail/'+video.Id)" >
<div class="card-image">
<img ng-src="{{video.ThumbnailUrl?video.ThumbnailUrl:'img/images.png'}}" src="" />
</div>
</a>

指令看起来像这样

.directive('videoCard', function () {
return {
restrict: 'E',
templateUrl: 'partials/directives/video-card.html',
controller: function ($scope, $element, $location) {
$scope.redirectWithReload = function (url) {
var toUrl = location.href.split('#')[0] + url;
location.replace(toUrl);
}
},
compile: function () {
return {
post: function () {
$('a.prevent').click(function (e) {
e.preventDefault();
});
}
}
}
};
})

prevent 类只是为了我的 Jquery 防止默认然后点击 ng-click,因为如果我需要向 url 添加更多变量,现在很容易做到:)

感谢大家的帮助!特别是:@mplungjan

最佳答案

如果你将ID存储在一个属性中并使用replace,你可以这样做

<a href="#" id="{{video.I‌​d}}"
onclick="location.replace(location.href.split('#')[0]+'#/videos/detail/'+this.id‌​); return false">

或者对于纯粹主义者(这里是 jQuery,我不做 Angular):

<a href="#" class="vids" id="{{video.I‌​d}}"> 

使用

$(function() {
$(".vids").on("click",function(e) {
e.preventDefault();
location.replace(location.href.split('#')[0]+'#/videos/detail/'+this.id‌​); "
});
});

更多参数:

<a href="#" class="vids" data-id="{{video.I‌​d}}" data-target="somewhere"> 

使用

$(function() {
$(".vids").on("click",function(e) {
e.preventDefault();
location.replace(location.href.split('#')[0]+'#/videos/detail/'+
$(this).data("id‌"​)+'/'+
$(this).data("target"​));
});
});

关于javascript - 在 FF 上重新加载页面而不更改页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com