gpt4 book ai didi

macos - OS X Web View App - 是否可以使用 native 首选项面板来调整 JavaScript 变量?

转载 作者:行者123 更新时间:2023-12-03 17:55:08 26 4
gpt4 key购买 nike

我用 HTML5/JavaScript 编写了一个应用程序,并将其嵌入为 OS X Web View 。它可以工作,并且当前在网络应用程序中内置了一个设置区域,该区域也可以工作。

我的问题是,是否可以使用 native OS X 风格的首选项面板(应用程序名称 > 首选项)来调整 Web 应用程序的设置?

网络应用程序使用 JavaScript 变量进行设置。 OS X 首选项面板必须读取 JavaScript 变量,允许调整它们,然后在保存时更新它们。

示例网页代码 (test.html):

<p>Number of widgets (sample setting): 
<input type="button" id="buttonLessWidgets" value="&lt;">
<span id="divNumWidgets"></span>
<input type="button" id="buttonMoreWidgets" value="&gt;">
</p>

<script>
var numWidgets = 10;

// Display current number of widgets when the app is opened
document.getElementById("divNumWidgets").innerHTML = numWidgets;

// Adjust sample setting --- this is the part I'm hoping to move to the preferences panel
buttonLessWidgets.onclick = function() {
numWidgets -= 1;

divNumWidgets.innerHTML = numWidgets;
};

buttonMoreWidgets.onclick = function() {
numWidgets += 1;

divNumWidgets.innerHTML = numWidgets;
};
</script>

这是我可以轻松实现的东西吗?我对 HTML5 和 JavaScript 很熟悉,但对 Xcode 还很陌生。

最佳答案

这是非常可能的,但是这需要您做一些工作,并且没有自动的方法来做到这一点。至于实现自定义首选项 Pane ,这超出了单个问题的范围,您可能可以在其他地方找到 Material 。然而,实际的 JavaScript 部分还不错。

WebView 类提供了一个 windowScriptObject 方法,您可以调用该方法来获取对 JavaScript 环境的引用。然后,您可以使用标准 setValue:forKey:valueForKey: 方法在 JavaScript 上下文中获取和设置全局变量。

您可以在实际加载页面之前将这些值注入(inject)到页面中,方法是向 Web View 的 setFrameLoadDelegate: 方法提供自定义 WebFrameLoadDelegate,然后利用传递给 webView:didClearWindowObject:forFrame: 的 WebScriptObject 上下文。委托(delegate)方法。一旦 JavaScript 上下文可用,但在页面实际加载之前,就会调用此方法,以允许您插入自定义首选项变量。

关于macos - OS X Web View App - 是否可以使用 native 首选项面板来调整 JavaScript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com