我需要在 Ipad 上为横向和纵向设置不同的初始比例

我添加了 head<meta name="viewport" content="width=device-width, initial-scale=0.6" />
我尝试使用这个脚本

if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
          function onOrientationChange()
          {
            var viewportmeta = document.querySelector('meta[name="viewport"]');
            switch(window.orientation)
            {
              case -90:
              case 90:
                viewportmeta.content = 'initial-scale=0.6';
                break;
              default:
                viewportmeta.content = 'initial-scale=0.8';
                break;
            }
          }

          window.addEventListener('orientationchange', onOrientationChange);
          onOrientationChange();

但 id 不能正常工作。有没有办法让它工作?

最佳答案

原始问题中的 JavaScript 代码非常准确,几乎是正确的。我在浏览器中测试时的问题如下:window.orientationundefined,因此 switch 子句是多余的。

我的固定解决方案的演示可以在这里找到: JS Bin ,但一定要在移动设备上测试它(阅读下面的更多细节)。

本质在JavaScript代码中,如下:

function onOrientationChange() {

    var landscape = screen.width > screen.height;
    var viewportmeta = document.querySelector('meta[name="viewport"]');

    if(landscape) {

        viewportmeta.content = "width=device-width, initial-scale=1.0";

    } else {

        viewportmeta.content = "width=device-width, initial-scale=0.5";

    }

}

window.addEventListener('orientationchange', onOrientationChange);
onOrientationChange();

可以看到我没有使用 window.orientation 因为它在我在浏览器中测试时出现问题,所以我只是检查了屏幕的宽度和高度的比例: var landscape = screen.width > screen.height 。此外,在设置 viewportmeta.content 时,我已经替换了整个值,而不仅仅是原始问题中的 initial-scale=0.6 部分。

由于我只有 Android 设备要测试,因此我还删除了有关 iPhone 和 iPad 检测的 IF 子句。因此,该解决方案也适用于桌面浏览器。但请记住,桌面浏览器无法触发 orientationchange 事件。我已经尝试过 Chrome 的移动模拟器,但它不起作用。我的解决方法是暂时将事件更改为 resize

关于ios - 为横向和纵向设置不同的初始比例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23736506/

10-13 01:28