我正在尝试重新设计一些我在SO上的答案中找到的Javascript代码.但我想首先更好地理解它的语法.其大纲是:
(function (root, ns, factory) {
// some code
} (window, 'detectZoom', function() {
// some more code
}));
Run Code Online (Sandbox Code Playgroud)
见接受的答案在这篇文章的参考完整的代码.
我理解最终结果如何实现,但我不太清楚内部(...)块如何与第一个相关,或者它内部的逗号分隔列表告诉编译器.
谁能解释一下?谢谢.
我正在尝试使用WebView显示内置多点触控的大图像,并尝试避免内存崩溃.
我这样设置webView:
setInitialScale(20);
WebSettings settings = getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
Run Code Online (Sandbox Code Playgroud)
然后加载以下代码:
<head>
<meta
name="viewport"
content="width=device-width, user-scalable=yes"
/>
</head>
<body
style="margin: 0; padding: 0">
<img
alt="image"
src="THE_SRC_GOES_HERE"
id="theImage"
>
</body>
Run Code Online (Sandbox Code Playgroud)
问题是,如果它加载一个中等图像(例如1600x1200),它工作得很好,图像适合屏幕宽度.

但是如果在我的示例中图像更大7300x5200,它看起来像放大并禁用缩小.

如果你想测试图像网址是:
注意:我不是那些图像的所有者,我只是用它进行测试
最近的浏览器允许使用CTRL + - ,CTRL-鼠标滚轮以及触控板上的两个手指捏动手势来更改缩放级别.虽然我自己发现这个功能非常方便(各种网站上的字体通常都太小而无法阅读),但我们进行了一些测试会话,其中测试人员(知情地在不知不觉中)应用非常极端的缩放级别,因为没有任何网页可能是可用.然后他们声称这样做的可能性是一个错误,用户可能会在不知道他在做什么的情况下应用缩放,并且可能无法将其设置回来.我被要求完全禁用变焦,但我自己并不喜欢这个想法.
而不是简单地禁用缩放,我希望有可能设置其最小和最大边界,我已经验证,该网站仍然看起来不错.如何完全禁用缩放问题不是这个问题的重复.
该网站建立在React frameweork的顶部.
我试着在CSS中添加以下内容:
body {
min-zoom: 0.75;
max-zoom: 1.5;
}
Run Code Online (Sandbox Code Playgroud)
要么
min-zoom: 75%;
max-zoom: 150%;
Run Code Online (Sandbox Code Playgroud)
这没有帮助,缩放允许从25%变为500%,而我的设计无法管理.其他属性如
body {
margin: 200px;
}
Run Code Online (Sandbox Code Playgroud)
在这个地方受到尊重,因此不会忽略标记或整个css文件.
我也尝试添加
<meta name="viewport" content="width=device-width,
initial-scale=1.00, maximum-scale=1.5, minimum-scale=0.75">
Run Code Online (Sandbox Code Playgroud)
在我的头标签,index.html但也似乎只是被忽略.
我还补充道
@viewport {
zoom: 1.00;
min-zoom: 0.75;
max-zoom: 1.5;
}
Run Code Online (Sandbox Code Playgroud)
对我的CSS,浏览器并不关心.
基本上我需要知道y轴距离屏幕左上角有多少像素,直到我到达实际的Web窗口.有没有人有任何想法......?
我做了一些研究,发现了很多帖子,包括这个,但它们都很旧,该页面上的答案链接到一个库,说它不再适用于Firefox或Chrome.
是否有当前可靠的方法来检测浏览器中的缩放和纯文本缩放?如何处理?
我想知道是否有办法检测所有现代浏览器都支持的页面缩放级别.我已经尝试了这个: 如何检测页面缩放级别的所有现代浏览器
但不幸的是,它与我试过的所有浏览器都不完全兼容.
是否有更通用的方法或jquery库来实现这一目标?
我想为移动设备创建一个上下文菜单,弹出页面内容并使用按钮列表填充部分屏幕.这很简单.
但是,无论页面在设备上的缩放位置和方式如何,我都希望菜单具有相同的大小和固定位置.因此,无论何时召唤菜单,即使用户非常放大,按钮列表也会显示相同的大小.换句话说,我想模仿手机上已存在的菜单功能,例如Chrome Mobile beta的选项菜单.
这只能用CSS吗?或者是否需要一些JavaScript?或者一般来说不可行吗?
换句话说,是否可以制作像这样的Refresh/etc菜单的菜单:

无论浏览器缩放如何,这都是恒定大小的?
可悲的是,我对这个通用问题没有足够好的解决方案.
在IE 8.0.7601.17514(最新)上,最受欢迎和接受的答案似乎对我没有用.另一个答案接近于工作 - 但它总是让我失望20%,可能是因为我在Windows中定义了大字体.我想我无法在javascript中检测到这一点,所以这也不是一个可靠的答案(即使它实际上可以用于95%的IE用户......我可能会将其用作解决方法).
是否有更好,更可靠的方法来检测IE 8中当前页面缩放的内容?
javascript browser internet-explorer zoom internet-explorer-8
我有一个带圆角的简单盒子,它有一个标题,并根据文本的数量进行扩展,如Dan Cederholm的Bullet Proof Web Design(ISBN 0-321-34693-9)中所述.
效果很好,除了放大谷歌浏览器外.然后框的右边缘消失.
它可以在IE和FireFox中正常运行.
在chrome中,它在缩放110%和其他缩放时也失败了.在IE或FireFox中没有问题.
是什么原因引起了这个?
一般来说,是什么让布局变焦敏感(如果存在任何这样的一般规则......)?
Dan Cederholm的书真的是防弹......?
当我将地图(相同的html,css,js)添加到不同的页面时,地图有时会模糊不清.不同的页面可能包含其他html,css和js.左侧的清晰图片位于第三方添加CSS的页面内.右边的那个没有别人的html,css和js.
我该如何解决这个问题?

在检查细节时我注意到的一件事是第二个例子的画布尺寸要小得多.

编辑[固定!]:
我发现了查看ol.js源代码的问题.在控制台上,模糊图像具有map.frameState_.pixelRatio = 0.89(默认为window.devicePixelRatio),而清晰图像具有map.frameState_.pixelRatio = 1.如果我在初始化地图时设置pixelRatio = 1,则修复了问题:
var map = new ol.Map({pixelRatio: 1, ...});
Run Code Online (Sandbox Code Playgroud)
事实证明,如果你的互联网浏览器放大(例如,90%),window.devicePixelRatio将会改变,这会导致模糊.但是,当您缩放回100%时,地图仍会缩放,直到您刷新页面.