uihtml
描述
H = uihtml
在新图形中创建HTML UI组件并返回超文本标记语言
UI组件对象。MATLAB®调用uifigure
函数创建图形。
与uihtml
函数,可以嵌入HTML, JavaScript®或CSS内容,并与第三方库交互以显示小部件或数据可视化等内容。所有支持金宝app文件(包括HTML、JavaScript、CSS、图像)必须保存在本地文件系统可以访问的位置。
例子
显示格式化文本
创建一个HTML组件,并使用HTML标记在其中显示格式化文本。
图= ufigure图(“位置”,[561 497 333 239]);H = uihtml(fig);h.HTMLSource =' < p风格= "字体类型:arial;" > < b > < span风格=“颜色:红色;>你好< / span > <你> < / u > !< / b > < / p > ";
使用HTML文件嵌入音频和视频
创建一个HTML文件,在应用程序中嵌入音频和视频元素,并引用媒体源文件。
首先,在图中创建一个空的HTML UI组件。
FIG = ufigure;fig.Position = [500 500 380 445];H = uihtml(fig);h.Position = [10 10 360 420];
然后,创建一个名为audio_videoplayers.html
.在文件中,添加音频和视频元素,并相对于HTML文件的路径指定它们的文件源。在本例中,媒体文件与HTML文件位于同一目录中。
一个好的做法是为每个元素指定多个文件源,因为不是所有上下文都支持相同的文件类型。金宝app例如,MATLAB Desktop中的HTML组件不支持MP4视金宝app频,但MATLAB Online™支持。在video元素中,指定一个OGA文件作为应用程序尝试播放的第一个视频。然后,如果第一个文件不受支持,则指定一个MP4文件作为备用文件。金宝app
< !DOCTYPE html>播放音频文件:
播放视频文件:
<视频width="320" height="240" controls style="padding-left:20px">
属性将HTML文件嵌入到应用程序中HTMLSource
属性设置为文件的完整路径。
h.HTMLSource = fullfile(pwd,“audio_videoplayers.html”);
代码JavaScript响应数据变化在MATLAB
创建一个htmlComponent
JavaScript®对象,显示在MATLAB®HTML UI组件上设置的数据。
首先,创建一个空的HTML UI组件,并将其放置在图形中。
FIG = ufigure;fig.Position = [500 500 490 180];H = uihtml(fig);h.Position = [20 20 450 130];
然后,创建一个名为displayDataFromMATLAB.html
.在文件中,
使用一个
风格
标记来定义内部CSS样式< div >
显示文本的元素。写一个
设置
函数的内部< >脚本
标记来连接JavaScript对象,称为htmlComponent
到您在MATLAB中创建的HTML UI组件。类中添加事件侦听器
设置
函数。事件监听器监听“DataChanged”
上的事件htmlComponent
JavaScript对象,并创建一个侦听器回调函数。当一个“DataChanged”
事件发生时,监听器回调函数更新“dataDisplay”
< div >元素
属性的值数据
属性的MATLAB。
< !DOCTYPE html>
Please set data in MATLAB...
现在,在MATLAB中,设置HTMLSource
属性设置为HTML文件的路径。
h.HTMLSource = fullfile(pwd,“displayDataFromMATLAB.html”);
的值数据
属性为HTML UI组件。注意htmlComponent
在HTML UI组件中更新JavaScript对象。
h.Data =“Hello World !”;
代码MATLAB对数据更改的响应JavaScript
创建JavaScripthtmlComponent
对象,该对象显示一个按钮和一个进度条,并在进度发生变化时在MATLAB命令窗口中显示当前进度。
首先,创建一个空的HTML UI组件,并将其放置在图形中。
图= ufigure图(“位置”,[500 500 350 150]);H = uihtml(图,“位置”,[50 40 250 70]);
然后,创建一个名为progressBar.html
.在文件中:
使用一个
<时尚>
标记来定义按钮和进度条元素的内部CSS样式。写一个
设置
函数的内部< >脚本
标记来连接JavaScript对象,命名为htmlComponent
到您在MATLAB中创建的HTML UI组件。类中添加事件侦听器
设置
函数。事件监听器监听“点击”
事件,并创建侦听器回调函数。当用户单击下一个按钮,则监听器回调函数将更新进度条并设置数据
的属性htmlComponent
到新的进度值。
< !DOCTYPE html>
的值在MATLAB中设置HTMLSource
属性设置为HTML文件的路径。创建一个DataChangedFcn
方法时显示已更新进度的回调函数数据
属性变更。
h.HTMLSource =“progressBar.html”;h.DataChangedFcn = @(src,event)disp(event. data);
单击下一个按钮以更新进度条并更改数据
财产。进度显示在MATLAB命令窗口中。
发送事件JavaScript来MATLAB
自从R2023a
创建JavaScripthtmlComponent
对象,该对象在用户单击按钮时生成一个随机数,并在MATLAB中显示该数字。
首先,创建一个名为myRandomNum.m
.在脚本中,创建一个空的HTML UI组件,并将其放置在图形中。
图= ufigure图(“位置”,[100 100 300 160]);H = uihtml(图,“位置”,[50 50 200 60]);
然后,创建一个名为generateJSRandomNumber.html
.在文件中:
使用一个
<时尚>
标签定义按钮元素的内部CSS样式。写一个
设置
函数的内部< >脚本
标记来连接JavaScript对象,命名为htmlComponent
到您在MATLAB中创建的HTML UI组件。类中添加事件侦听器
设置
监听“点击”
按钮上的事件。当用户单击按钮时,首先生成一个随机数,然后发送一个事件通知MATLAB进行单击。传入随机数作为事件数据,以便您可以在MATLAB中访问该数字。
< !DOCTYPE html>
在MATLAB中myRandomNum.m
的值HTMLSource
属性设置为HTML文件的路径。创建一个HTMLEventReceivedFcn
回调函数,在命令窗口中显示生成的随机数。
h.HTMLSource =“generateJSRandomNumber.html”;h.HTMLEventReceivedFcn = @displayNumber;函数displayNumber(src,event) name = event. htmleventname;如果比较字符串(名称、“ButtonClicked”) number = event.HTMLEventData;disp(数量);结束结束
运行脚本,点击按钮,生成随机数并显示在MATLAB命令窗口中。
发送事件MATLAB来JavaScript
自从R2023a
创建JavaScripthtmlComponent
对象,当用户与MATLAB旋钮组件交互时更新HTML元素样式。
首先,创建一个名为myTemperature.m
.在脚本中,在UI图中创建一个旋钮UI组件和一个空的HTML UI组件。
FIG = ufigure;K = uiknob(fig,“离散”,…“项目”, (“冻结”,“冷”,“温暖”,“热”],…“ItemsData”,[0 1 2 3],…“价值”, 0);H = uihtml(图,“位置”,[230 60 40 150]);
然后,创建一个名为thermometer.html
.在文件中:
使用一个
<时尚>
标签定义温度计部件的内部CSS样式。写一个
设置
函数的内部< >脚本
标记来连接JavaScript对象,命名为htmlComponent
到您在MATLAB中创建的HTML UI组件。类中添加事件侦听器
设置
函数,监听事件从MATLAB命名“TemperatureChanged”
.当htmlComponent
对象收到温度发生变化的通知时,查询事件数据以获得新的温度。然后,调整温度计上的样式以反映新的温度。
< !DOCTYPE html>
在MATLAB中,在脚本中,编写与HTML源代码通信的代码:
的值
HTMLSource
属性的HTML UI组件到HTML文件的路径。写一个
ValueChangedFcn
用于发送事件的旋钮的回调函数“TemperatureChanged”
当温度变化时,HTML源代码。将新的温度值作为事件数据传递。
h.HTMLSource =“thermometer.html”;k.ValueChangedFcn = @(src,event) handleKnobValueChanged(src,event,h);函数handleKnobValueChanged(src,event,h) val = src. value;sendEventToHTMLSource (h,“TemperatureChanged”, val);结束
运行脚本并与旋钮交互以更新温度计。
在MATLAB和JavaScript之间共享多个数据字段
创建一个HTML UI组件,用于显示具有多个字段的数据。
创建一个商品卡组件,其中列出商品名称、价格和数量。设计HTML UI组件以接收项目数据结构体
在MATLAB。首先,检查如何结构体
当数据从MATLAB传输到JavaScript时,数据被编码jsonencode
函数。
matlabData = struct(“ItemName”,“苹果”,“价格”2,“数量”10);jsonencode (matlabData)
ans = '{“ItemName”:“苹果”、“价格”:2,“数量”:10}”
有关HTML组件如何在MATLAB和JavaScript之间传输数据的详细信息,请参见在应用中创建HTML内容.
接下来,创建一个名为itemCard.html
创建条目卡HTML组件并设置其样式。在文件中:
使用一个
<时尚>
标签来定义项目卡的内部CSS样式。写一个
设置
函数的内部< >脚本
标记来检测数据
属性的MATLAB HTML UI组件对象的变化,然后访问数据
JavaScript的属性htmlComponent
对象。数据被编码为具有多个属性的JavaScript对象。访问这些属性以更新HTML组件的内容。使用一个
身体< >
标记来创建主要的HTML文档内容。
< !DOCTYPE html>
Item Price: Quantity:
在UI图中创建HTML组件。指定itemCard.html
作为HTML源和一个项目数据结构体
作为组件数据。
itemData = struct(“ItemName”,“苹果”,“价格”2,“数量”10);FIG = ufigure;C = uihtml(图,“HTMLSource”,“itemCard.html”,“数据”itemData);
输入参数
父
- - - - - -父容器
数字
对象(默认)|选项卡
对象|面板
对象|ButtonGroup
对象|GridLayout
对象
父容器,指定为数字
对象创建。uifigure
函数或它的子容器之一:选项卡
,面板
,ButtonGroup
,或GridLayout
.如果没有指定父容器,MATLAB将调用uifigure
函数创建一个新的数字
对象,该对象用作父容器。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:h = uihtml(ufigure,HTMLSource="C:\Work\expense .html");
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字
在报价。
例子:h = uihtml(ufigure,"HTMLSource","C:\Work\expenses.html");
请注意
这里列出的属性只是一个子集。有关完整列表,请参见HTML属性.
HTMLSource
- - - - - -HTML标记或文件
''
(默认)|特征向量|字符串标量
HTML标记或文件,指定为包含HTML标记或HTML文件路径的字符向量或字符串标量。所有HTML标记和文件必须格式良好。如果指定的字符向量或字符串标量以. html
,则假定它是HTML文件的路径。
在嵌入HTML标记时,不需要指定< html >
或身体< >
标签。控件创建的MATLAB图形所使用的Chromium浏览器中金宝app是否支持指定的标记uifigure
函数,然后它将呈现。如果您的代码需要更多的结构,那么可以考虑使用HTML文件。
如果你设置HTMLSource
属性设置为HTML文件的路径,则HTML文件必须位于本地文件系统可以访问的位置。如果使用支持文件,如JavaScr金宝appipt、CSS、库或图像,则将这些文件放在本地文件系统可以访问的位置,在HTML文件中引用它们,并设置HTMLSource
属性设置为HTML文件的路径。组件代码金宝app使用的任何支持文件都必须位于包含为HTMLSource
属性或该文件夹的子文件夹中。有关更多信息,请参见限制.
例子:h = uihtml('HTMLSource','CustomCharts.html')
指定HTML文件。
例子: This is red text.h = uihtml('HTMLSource','
指定的标记。
数据
- - - - - -MATLAB数据
任意MATLAB数据类型
MATLAB数据,指定为任何MATLAB数据类型。的值时使用此参数HTMLSource
是定义JavaScript对象的HTML文件的路径。然后,可以在MATLAB HTML UI组件和JavaScript对象之间同步这些数据。
同步数据
属性之间的MATLAB和第三方内容嵌入到你的应用程序,创建一个设置
函数,该函数连接JavaScript对象htmlComponent
到MATLAB中的HTML UI组件。然后,设置HTMLSource
属性值设置为文件的路径。
的值的变化数据
属性仅在一个方向上触发回调事件。具体地说,
当
数据
属性是在MATLAB中设置的数据
的属性htmlComponent
对象的JavaScript事件监听器也会更新和触发“DataChanged”
事件。当
htmlComponent。数据
在JavaScript中设置,则数据
属性的HTML UI组件在MATLAB中也更新和触发DataChangedFcn
回调。
如果您拥有嵌套单元格数组、结构数组或MATLAB表数组数据等数据,您可能需要更多关于如何在MATLAB和JavaScript之间转换数据的信息。当数据
属性的HTML UI组件在MATLAB中设置,数据转换使用jsonencode
函数,与JavaScript同步,解析使用JSON.parse (),最后设置为数据
的属性htmlComponent
JavaScript对象。转换发生在相反的方向,以及通过的方式JSON.stringify ()和jsondecode
函数。的数据
property是唯一与JavaScript同步的属性。
请参阅jsonencode
函数获取有关其支持的数据类型的更多信息。金宝app如果jsonencode
函数不支持您的数据类型,则使用数据类金宝app型转换函数,如num2str
,将数据转换为受支持的类型。金宝app然后,将其设置为数据
财产。
属性的属性,以获取有关如何编写启用数据同步的HTML文件的详细信息htmlComponent
JavaScript对象,请参见在应用中创建HTML内容.
DataChangedFcn
- - - - - -数据更改时的回调
''
(默认)|函数处理|单元阵列|特征向量
回调函数,指定为以下值之一:
函数处理。
单元格数组,其中第一个元素是函数句柄。单元格数组中的后续元素是传递给回调函数的参数。
包含有效MATLAB表达式的字符向量(不推荐)。MATLAB在基本工作空间中计算这个表达式。
时的值数据
属性的更改。htmlComponent
JavaScript对象,数据
属性的MATLAB HTML UI组件被更新,这个回调执行。
这个回调函数可以访问JavaScript对象中数据更改的特定信息。MATLAB在a中传递信息DataChangedData
对象作为回调函数的第二个参数。在App Designer中,这个参数被调用事件
.您可以查询DataChangedData
使用点表示法的对象属性。例如,事件。PreviousData
的前一个值数据
在最后一次更新或更改之前。的DataChangedData
对象对于指定为字符向量的回调函数不可用。
属性的属性DataChangedData
对象。
财产 | 描述 |
---|---|
数据 |
最近的数据来自于最后的DataChanged 事件 |
PreviousData |
最后一次数据DataChanged 事件 |
源 |
执行回调的MATLAB HTML UI组件 |
EventName |
“DataChanged” |
有关编写回调函数的详细信息,请参见应用程序设计器中的回调.
HTMLEventReceivedFcn
- - - - - -当事件从HTML源接收时回调
''
(默认)|函数处理|单元阵列|字符串标量|特征向量
自从R2023a
回调函数,当从HTML源接收到事件时,指定为以下值之一:
函数处理。
单元格数组,其中第一个元素是函数句柄。单元格数组中的后续元素是传递给回调函数的参数。
包含有效MATLAB表达式的字符串标量或字符向量(不推荐)。MATLAB在基本工作空间中计算这个表达式。
函数将事件从JavaScript发送到MATLAB时执行此回调sendEventToMATLAB
JavaScript上的函数htmlComponent
对象。使用此回调编写MATLAB代码以响应用户交互或HTML组件中的更改,例如单击按钮HTML元素。有关更多信息,请参见在应用中创建HTML内容.
这个回调函数可以访问JavaScript对象发送的事件的特定信息。MATLAB将信息传递到HTMLEventReceivedData
对象作为回调函数的第二个参数。在App Designer中,这个参数被调用事件
.查询HTMLEventReceivedData
使用点表示法的对象属性。例如,事件。超文本标记语言EventName
返回由JavaScript对象指定的事件名称。的HTMLEventReceivedData
对象对于指定为字符串标量或字符向量的回调函数不可用。
属性的属性HTMLEventReceivedData
对象。
财产 | 描述 |
---|---|
HTMLEventName |
属性指定的事件名称sendEventToMATLAB 函数在JavaScript代码中调用 |
HTMLEventData |
属性指定的事件数据sendEventToMATLAB 函数在JavaScript代码中调用 |
源 |
执行回调的MATLAB HTML UI组件 |
EventName |
“HTMLEventReceived” |
有关编写回调函数的详细信息,请参见为以编程方式创建的应用程序创建回调.
位置
- - - - - -HTML UI组件的位置和大小
[100 100 100 100]
(默认)|[左下宽高]
HTML UI组件相对于父容器的位置和大小,指定为表单的四个元素向量[左下宽高]
.该表描述了向量中的每个元素。
元素 | 描述 |
---|---|
左 |
从父容器的内左边缘到HTML UI组件的外左边缘的距离 |
底 |
从父容器的内底边到HTML UI组件的外底边的距离 |
宽度 |
HTML UI组件的左右外边缘之间的距离 |
高度 |
HTML UI组件顶部和底部外边缘之间的距离 |
的位置
值相对于可拉的区域父容器的。可绘制区域是容器边界内的区域,不包括菜单栏或标题等装饰所占用的区域。
所有的测量都以像素为单位。
限制
属性不能从外部网页链接到URL web资源或嵌入应用程序
uihtml
函数。属性指定的HTML文件
HTMLSource
属性不能通过内容分发网络(CDN)访问第三方JavaScript库。将库保存在本地文件系统可以访问的位置。的HTML文件中可以引用常见的web文件类型,如JavaScript和CSS
HTMLSource
属性,但可能不支持其他web文件类型。金宝app组件代码金宝app使用的任何支持文件都必须位于包含为
HTMLSource
属性或该文件夹的子文件夹中。内容不能超出HTML UI组件的边界。如果您正在创建动态内容,比如弹出窗口小部件,请使HTML UI组件的大小足够大,以便在弹出窗口处于打开状态时显示小部件。
在MATLAB桌面,某些HTML功能,如web插件和访问网络摄像头或麦克风,是不支持的。金宝app
您不能设置
HTMLSource
属性添加到一个HTML文件,该文件的文件名附加了查询参数。作为一种变通方法,请设置这些参数htmlComponent。数据
.超链接的
matlab:
不支持操作。金宝appUI图回调,例如
WindowButtonDownFcn
和WindowKeyPressFcn
当图中的HTML UI组件有焦点时,不执行。
更多关于
潜在的安全风险
请注意
这个列表并不是全面的。在与第三方库交互时,请咨询外部资源以了解额外的风险和安全注意事项。
与第三方JavaScript库交互的应用程序可能容易受到攻击数据或代码注入攻击。
MATLAB特性,比如
eval
功能会增加注射攻击的风险。作为对策,在MATLAB中使用不可信输入之前验证它。任何处理类似代码的输入(XML、JSON、SQL等)的MATLAB函数都可能容易受到代码注入的攻击。
使用MATLAB访问操作系统的应用程序
系统
,dos
,或unix
函数可能容易受到代码注入的攻击。
有关如何降低部署web应用程序的潜在风险的信息,请参见编写安全的Web应用程序(MATLAB编译器).
提示
如果你要创建一个HTML文件嵌入到你的应用程序中,首先要验证静态HTML在浏览器中是否正确呈现。有关更多信息,请参见在应用中创建HTML内容.
的值
HTMLSource
属性的原始值,使用此变通方法保存HTMLSource
到一个变量,重置HTMLSource
为空值并更新图形以清除其内容,最后设置HTMLSource
回到它原来的价值。oldValue = h.HTMLSource;h.HTMLSource ='';htmlsource = oldValue;
使用
uihtml
若要显示支持文件(如图像或视频)中的内容,请将该金宝app文件放在本地文件系统可以访问的位置,在包含本地内容的HTML文件中引用它,然后设置HTMLSource
属性添加到HTML文件。用MATLAB创建的图形
uifigure
函数使用Chromium浏览器,运行HTML5。新的Chromium版本经常发布,并且在不同的操作系统之间可能有所不同。咨询外部Chromium资源以获得受支持的特性和功能。金宝app如果你打算在不同的环境中共享你的应用或使用它,请考虑这个因素。检查外部资源,比如https://caniuse.com/,以了解跨不同桌面和网页浏览器支持的功能类型。金宝app
MathWorks®不推广任何第三方库。
版本历史
R2019b引入R2023a:发送事件MATLAB和JavaScript
当特定动作发生时,发送与HTML UI组件相关的事件,以便在MATLAB和JavaScript之间进行通信。
在MATLAB中,使用sendEventToHTMLSource
函数。响应来自JavaScript的事件HTMLEventReceivedFcn
财产。
在设置
函数在你的HTML源文件,发送事件到MATLAB使用JavaScriptsendEventToMATLAB
函数。使用JavaScript对MATLAB中的事件做出反应addEventListener
函数。
有关HTML UI组件事件的详细信息,请参见在应用中创建HTML内容.
Beispiel offnen
Sie haben eine geänderte版本dieses Beispiels。Möchten Sie dieses Beispiel mit Ihren Änderungen öffnen?
MATLAB-Befehl
你的身体和身体之间的联系MATLAB-Befehl
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。web浏览器unterstützen keine MATLAB-Befehle。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。