有没有办法全局捕获混合内容错误?
要明确:我不想允许不安全的内容,我想做的就是优雅地处理错误。
背景故事:我正在集成程序化广告,也就是说我必须包含一些脚本标签,它返回一些更多的 JavaScript,它可以加载更多的资源,等等......
我无法控制进入我网站的内容,有时这些资源包括 http 资源,这会引发混合内容错误。然后我留下了一个空的广告容器,看起来有点难看。此外,我可以尝试转售此广告空间,因为第一次尝试失败。
我已经尝试过 window.onerror,但没有成功。
我最近遇到了一个问题,虽然我为我解决了这个问题,但我不确定那里是否有更好的解决方案,所以我很感激任何评论.
问题.我想创建一个'ScrollIntoView'绑定.由于将一个元素滚动到视图中,需要DOM-Element,我编写了一个自定义绑定,然后我想明确地触发它,只要我满意.我从这段代码开始:
ko.bindingHandlers.scrollTo = {
update: function (element, valueAccessor, allBindings) {
var _value = valueAccessor();
var _valueUnwrapped = ko.unwrap(_value);
if (_valueUnwrapped) {
element.scrollIntoView();
}
}
Run Code Online (Sandbox Code Playgroud)
};
绑定:
<div data-bind="scrollTo: goToThis">
Run Code Online (Sandbox Code Playgroud)
在ViewModel中我有这个可观察的:
_self.goToThis = ko.observable(false).extend({notify: 'always'});
Run Code Online (Sandbox Code Playgroud)
然后我可以通过调用触发:
_self.goTohis(true);
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是我很快遇到了问题.因为每当我将goTothis()Observable设置为true时,真正的值就会停留在它上面,导致一些元素滚动到视图中,而用户没有明确地触发它.例如,当我更改视图时,基本上用if绑定隐藏所有元素,然后切换回来,if绑定将重新触发之前已设置为true的所有goToThis observable.啊!
所以我想到了这个模式并扩展了我的custum绑定,如下所示:
ko.bindingHandlers.scrollTo = {
update: function (element, valueAccessor, allBindings) {
var _value = valueAccessor();
var _valueUnwrapped = ko.unwrap(_value);
if (_valueUnwrapped) {
element.scrollIntoView();
// resets the trigger value to false. Otherwise there will be more and more ViewModels, where the value is …Run Code Online (Sandbox Code Playgroud)