在没有任何参数破解的情况下重新加载javascript中的图像
Reloading image in javascript without any parameter-hack
我正在尝试显示一个图像,并使用AngularJS每分钟自动刷新一次。
问题是,我抓取的图像来自API,它不允许我在url上添加任何伪造的东西,以使url每次都不同。所以,没有?_ts=12356678
等等…
我目前的代码是这样的:
HTML模板:
<div data-ng-controller="UpdateController" data-ng-init="image_reloader(timer=2000, url='http://lorempixel.com/400/200/sports/')">
<img ng-src="{{ image_url }}"></img>
</div>
AngularJS Javascript:
var app = angular.module('app', []);
app.controller('UpdateController', function($scope, $timeout) {
$scope.image_reloader = function(timer, url) {
$scope.timer = timer || 10000;
$scope.updater = function() {
$scope.image_url = url + '?_ts=' + new Date().getTime();
$timeout($scope.updater, $scope.timer);
};
$scope.updater();
};
});
这种方法很管用,除了?_ts
部分我不能用。。。将scope.image_url
部分更改为$scope.image_url = url;
不会有任何作用,也不会尝试刷新图像。
如何强制AngularJS尝试刷新它?在将$scope.image_url
更改为url之前,我还尝试将其设置为''
。
AngularJS只是一个框架,任何Javascript/jQuery解决方案都可以,但我更喜欢与AngularJS相关的解决方案。
我向这个API的供应商发送了一个添加伪参数的请求,所以这是可能的,但现在已经一个月了,没有回复。
我也一直在思考这个问题,终于找到了解决方案。这很简单,只需使用#符号而不是?。哈希从未发送到服务器,但仍然足以让JavaScript将其视为不同的请求,从而重新绘制图像。。有点不好意思之前没有想过:)
示例(使用我为这个项目所做的工作流,而不是AngularJS最优
角度代码:
$scope.image_reloader = function(timer, url) {
$scope.timer = timer || 10000;
$scope.updater = function() {
$scope.image_url = url + '#' + new Date().getTime();
$timeout($scope.updater, $scope.timer);
};
$scope.updater();
};
HTML代码:
<div ng-controller="UpdateController" ng-init="image_reloader(timer=2000, url='http://lorempixel.com/400/200/sports/')">
<img ng-src="[[ image_url ]]"></img>
</div>
这样的东西应该可以工作。。。请注意,这并没有经过测试,您可能需要在questionMarkIndex中加1或减1。
var questionMarkIndex = $scope.image_url.indexOf("?");
var newurl = (questionMarkIndex === -1 ? $scope.image_url : $scope.image_url.substring(0, questionMarkIndex); // remove old ts parameter
newurl += '?_ts=' + new Date().getTime();
$scope.image_url += newurl;
相关文章:
- 如何在谷歌字体加载时显示加载图像
- 预加载图像并插入DOM
- 加载图像时加载图标
- 在页面启动期间加载图像
- 预加载图像image.onload脚本MVC
- 可以't在我的React组件中加载图像
- 加载图像后调整HTML画布的大小
- HTML/JS github页面项目没有't在使用firefox运行时加载图像或声音
- 错误:$injector:modulerr加载图像时模块处于角度
- 谷歌地图加载后隐藏加载图像
- 在照片查看器(Javascript和jQuery)中异步加载图像时可能出现错误
- 正在从字节数组加载图像内容
- 网页上已有tinymce加载图像列表
- 单击提交按钮后加载图像将冻结
- 如何使用Express'正确加载图像;s的静态中间件
- 使用jquery即时加载图像
- Html5画布使用JCanvasScript加载图像
- Javascript使用JCanvaScript在画布中加载图像
- 使用jquery/ajax显示加载图像
- ajax缓存false无法加载图像