No Zoom on iOS

disable input form auto-zoom function on iOS

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        No Zoom on iOS
// @namespace   Violentmonkey Scripts
// @icon        https://cdn.oaistatic.com/_next/static/media/apple-touch-icon.59f2e898.png
// @match       https://chat.openai.com/*
// @grant       none
// @noframes
// @version     0.1.2
// @author      y-saeki
// @supportURL  https://github.com/y-saeki/UserScript
// @description disable input form auto-zoom function on iOS
// ==/UserScript==

check();

// Observe Screen Transition
const observeTarget = document.querySelector('head');
const observer = new MutationObserver(check);
observer.observe(observeTarget, { childList: true });

// Runs everytime when mutated
function check() {
    const viewportMeta = document.querySelector('meta[name="viewport"]');
    if (viewportMeta) {
        const content = viewportMeta.getAttribute("content");
        if (content) {
            if (!content.includes("user-scalable=no")) {
                viewportMeta.setAttribute(
                    "content",
                    content + ", user-scalable=no"
                );
            }
        } else {
            viewportMeta.setAttribute("content", "user-scalable=no");
        }
    } else {
        const newViewportMeta = document.createElement("meta");
        newViewportMeta.name = "viewport";
        newViewportMeta.content = "user-scalable=no";
        document.getElementsByTagName("head")[0].appendChild(newViewportMeta);
    }
}