Jmail接收邮件
Jmail接收邮件
已有410 次阅读2010-8-18 12:49 |关键词:Jmail 邮件
前段时间弄了下Jmail接收邮件的问题,发现不太理想,没有成熟的代码。只是收集了该控件的相关属性,贴出来供大家参考(所需DLL到网上自行下载,4.5版好像不能用?)。Form1:
Option Explicit
Dim i&, Attachment&
Dim att As Object
Dim EmailMsg As Object
Dim atts As Object
Dim JMail As Object
Dim EmailList$, Subject$, EmailID&
Dim X$()
Private Sub Command1_Click()
Dim J#
Set JMail = CreateObject("JMail.POP3")
JMail.Connect "***@https://www.360docs.net/doc/8718887680.html,", "***", "https://www.360docs.net/doc/8718887680.html,", "110" 'JMail.Connect "邮箱名", "密码", "服务器" [,"端口号"]
' Debug.Print "你有" & JMail.Count & "封邮件" '邮件数量
For i = 1 To JMail.Count
' EmailID = JMail.GetMessageUID(I) '邮件唯一ID标识
Set EmailMsg = JMail.Messages.Item(i) '取得一条邮件信息
'-----------------------------------------------------------------------------取得附件数量并下载Set atts = EmailMsg.Attachments '附件集合
Attachment = atts.Count '附件的数量
If Attachment > 0 Then
For J = 0 To Attachment - 1
Set att = atts(J)
If Dir(App.Path & "\" & https://www.360docs.net/doc/8718887680.html,) = "" Then 'https://www.360docs.net/doc/8718887680.html,附件的名称,如果存在同名文件而不加判断则会出错
att.SaveToFile App.Path & "\" & https://www.360docs.net/doc/8718887680.html,
End If
Next J
End If
'------------------------------------------------------------------------------以下为各种参数设置
' EmailMsg.Charset = "gb2312" '编码方式
' EmailMsg.ContentTransferEncoding = "base64"'解码方式
' EmailMsg.Encoding = "base64"
' EmailMsg.ContentType = "multipart/mixed" '发送邮件时
' EmailMsg.ContentType = "text/html" '接收邮件时
' EmailMsg.ISOEncodeHeaders = False'True '功能不清?
'-----------------------------------------------------------------------------可以取得的各元素
' MsgBox EmailMsg.Priority '邮件的优先级,1-5,1最高,正常情况为3。
' MsgBox EmailMsg.From '邮件的发送人的信箱地址
' MsgBox EmailMsg.FromName '邮件的发送人
' MsgBox EmailMsg.Date '邮件日期
' MsgBox EmailMsg.Body '邮件内容
' MsgBox EmailMsg.Size '邮件大小
'----------------------------------------------------------------------------
Subject = EmailMsg.Headers.GetHeader("Subject") '邮件标题,可正常解码,但UTF-8格式的标题取不全
X = Split(EmailMsg.Headers.GetHeader("Subject"), "?")
If X(1) = "UTF-8" Then
Subject = Utf8ToUnicode(StrToBytes(X(3)))
Else
Subject = Base64Decode(X(3))
End If
' Subject = EmailMsg.Headers.GetHeader("From") '发件人,可解码
' Subject = EmailMsg.Headers.GetHeader("FromName")
EmailList = EmailList & CStr(i) & "、" & Subject & vbCrLf
DoEvents
Next
Text1.Text = EmailList
End Sub
Base64.bas:
Option Explicit
Public Const cstBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Public arrBase64() As String
Public Function Base64Encode(strSource As String) As String '编码
On Error Resume Next
If UBound(arrBase64) = -1 Then
arrBase64 = Split(StrConv(cstBase64, vbUnicode), vbNullChar)
End If
Dim arrB() As Byte, bTmp(2) As Byte, bT As Byte
Dim i As Long, J As Long
arrB = StrConv(strSource, vbFromUnicode)
J = UBound(arrB)
For i = 0 To J Step 3
Erase bTmp
bTmp(0) = arrB(i + 0)
bTmp(1) = arrB(i + 1)
bTmp(2) = arrB(i + 2)
bT = (bTmp(0) And 252) / 4
Base64Encode = Base64Encode & arrBase64(bT)
bT = (bTmp(0) And 3) * 16
bT = bT + bTmp(1) \ 16
Base64Encode = Base64Encode & arrBase64(bT)
bT = (bTmp(1) And 15) * 4
bT = bT + bTmp(2) \ 64
If i + 1 <= J Then
Base64Encode = Base64Encode & arrBase64(bT)
Else
Base64Encode = Base64Encode & "="
End If
bT = bTmp(2) And 63
If i + 2 <= J Then
Base64Encode = Base64Encode & arrBase64(bT)
Else
Base64Encode = Base64Encode & "="
End If
Next
End Function
Public Function Base64Decode(strEncoded As String) As String '解码On Error Resume Next
Dim arrB() As Byte, bTmp(3) As Byte, bT As Long, bRet() As Byte
Dim i As Long, J As Long
arrB = StrConv(strEncoded, vbFromUnicode)
J = InStr(strEncoded & "=", "=") - 2
ReDim bRet(J - J \ 4 - 1)
For i = 0 To J Step 4
Erase bTmp
bTmp(0) = (InStr(cstBase64, Chr(arrB(i))) - 1) And 63
bTmp(1) = (InStr(cstBase64, Chr(arrB(i + 1))) - 1) And 63
bTmp(2) = (InStr(cstBase64, Chr(arrB(i + 2))) - 1) And 63
bTmp(3) = (InStr(cstBase64, Chr(arrB(i + 3))) - 1) And 63
bT = bTmp(0) * 2 ^ 18 + bTmp(1) * 2 ^ 12 + bTmp(2) * 2 ^ 6 + bTmp(3)
bRet((i \ 4) * 3) = bT \ 65536
bRet((i \ 4) * 3 + 1) = (bT And 65280) \ 256
bRet((i \ 4) * 3 + 2) = bT And 255
Next
Base64Decode = StrConv(bRet, vbUnicode)
End Function
BaseToUtfToUnicode.bas(注:这是本论坛仙版(仙剑魔)提供的代码,在此感谢!)
Option Explicit
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
Private Const CP_ACP = 0 ' default to ANSI code page
Private Const CP_UTF8 = 65001 ' default to UTF-8 code page
Function StrToBytes(ByVal Source As String) As Byte()
Dim bB64Str() As Byte
bB64Str = StrConv(Source, vbFromUnicode)
Dim lB64Len As Long
lB64Len = InStrB(bB64Str, ChrB$(Asc("="))) - 1
Dim lLenPad As Long
lLenPad = (4 - lB64Len Mod 4) Mod 4
Dim lLen As Long
lLen = ((lB64Len + lLenPad) \ 4) * 3
Dim bStr() As Byte
ReDim bStr(lLen - 1)
lLen = lLen - lLenPad
Dim i As Long
Dim lBuffer As Long
For i = 0 To lB64Len - 1 Step 4
lBuffer = DeB64CodeA(bB64Str(i + 0)) * &H40000 Or DeB64CodeA(bB64Str(i + 1)) * &H1000& _
Or DeB64CodeA(bB64Str(i + 2)) * &H40& Or DeB64CodeA(bB64Str(i + 3)) bStr((i \ 4) * 3 + 2) = lBuffer And &HFF&
lBuffer = lBuffer \ &H100&
bStr((i \ 4) * 3 + 1) = lBuffer And &HFF&
lBuffer = lBuffer \ &H100&
bStr((i \ 4) * 3 + 0) = lBuffer And &HFF&
lBuffer = lBuffer \ &H100&
Next
ReDim Preserve bStr(lLen - 1)
StrToBytes = bStr
End Function
Private Function DeB64CodeA(ByVal Char As Byte) As Byte
Select Case Char
Case Asc("A") To Asc("Z"): DeB64CodeA = Char - Asc("A")
Case Asc("a") To Asc("z"): DeB64CodeA = Char - Asc("a") + 26
Case Asc("0") To Asc("9"): DeB64CodeA = Char - Asc("0") + 52
Case Asc("+"): DeB64CodeA = 62
Case Asc("/"): DeB64CodeA = 63
Case Asc("="): DeB64CodeA = 64
End Select
End Function
Function Utf8ToUnicode(ByRef Utf() As Byte) As String
Dim lRet As Long
Dim lLength As Long
Dim lBufferSize As Long
lLength = UBound(Utf) - LBound(Utf) + 1
If lLength <= 0 Then Exit Function
lBufferSize = lLength * 2
Utf8ToUnicode = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(0)), lLength, StrPtr(Utf8ToUnicode), lBufferSize)
If lRet <> 0 Then
Utf8ToUnicode = Left(Utf8ToUnicode, lRet)
End If
End Function
原生JavaScript对于DOM的操作总结
一、DOM创建** DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性。DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: 1:Element,元素 2:Attribute,属性 3:Text,文本 DOM节点创建最常用的便是document.createElement和document.createTextNode方法: var node1 = document.createElement('div'); var node2 = document.createTextNode('hello world!'); **二、DOM查询** // 返回当前文档中第一个类名为"myclass" 的元素 var el = document.querySelector(".myclass"); // 返回一个文档中所有的class为"note"或者"alert"的div元素 var els = document.querySelectorAll("div.note, div.alert"); // 获取元素 var el = document.getElementById('xxx'); var els = document.getElementsByClassName('highlight'); var els = document.getElementsByTagName('td'); Element也提供了很多相对于元素的DOM导航方法: // 获取父元素、父节点 var parent = ele.parentElement; var parent = ele.parentNode;//只读,没有兼容性问题 var offsetParent=ele.offsetParent;//只读,找到最近的有定位的父节点。//没有定位父级时,默认是body;但在IE7以下,如果当前元素没有定位属性,返回body,如果有,返回HTML;//如果当前元素某个父级触发了haslayout,则返回触发了haslayout这个元素。 // 获取子节点,子节点可以是任何一种节点,可以通过nodeType来判断 var nodes = ele.children;//标准下、非标准下都只含元素类型,但对待非法嵌套的子节点,处理方式与childNodes一致。 var nodes = ele.childNodes;//非标准下:只包含元素类型,不会包含非法嵌套的子节点。 //标准下:包含元素和文本类型,会包含非法嵌套的子节点。 //获取元素属性列表 var attr = ele.attributes;
LabVIEW 属性节点初级课程
可以选择真时继续()。 计数接线端:表示已经完成的循环次数,该计数从0开始。在本例中,如果当产生的第13个点值超过0.9时,计数器值为12。 结构隧道: 当需要将循环中的数据传入或者传出时,我们使用隧道的方式(这一点将在后面详细介绍)。 2. For 循环 For 循环常用于已知代码循环次数的情况,比如数组的操作。下面是For 循环的流程图: 2.1 For 循环的流程图 我们通过以下的例子来具体介绍以下For 循环: 如图 2.2,使用For 循环产生一个3×4的二维随机数组。(该程序见附件Generate array.vi ) 图2.2 For 循环产生3×4的二维随机数组 属性节点初级课程 控件的大部分属性都可以通过属性对话框ā行设置,对于未包括的属性则需要通过属性节点来编程操作了。属性节点用于访问对象的属性。在某些应用程序中,可能需要通过编程使前面板对象对特定的输入作出响应,使其显示不同的外观。 例如,当用户输入一个无效的密码时,红色指示灯开始闪烁。 又如,改变图表上线条的颜色, 当数据点高于某一特定的值时,希望显示的线条是红色而不是绿色。 使用属性节点可通过编程来完成这些修改。 也可使用属性节点通过编程来调整前面板对象的大小、隐藏前面板的部分内容、向图形中添加光标等。 LabVIEW 的属性节点功能强大、用途多样,不同控件对象有不同的属性。 本课程将介绍一些特别的属性的范例,这些属性可用于改变前面板对象的外观和功能。 关于属性节点的更多信息见LabVIEW 帮助。1. 创建属性节点 右键单击前面板对象,从快捷菜单中选择创建? 属性节点,再从弹出的菜单中选择一个属性,这样就创建了该前面板对象的一个属性节点。同时,LabVIEW 会在程序框图上创建一个与该前面板对象隐含链接的属性节点。 如果对象自带标签,属性节点将有同样的标签。 创建节点之后可以修改该标签。 同一个对象可以创建多个属性节点。2. 使用属性节点 属性节点创建后,节点最初有一个代表某个属性的接线端,您可以通过对其进行修改来更改对应的前面板对象的属性。 属性节点上的这个接线端既可用于设置(写入)属性,也可用于获取(读取)该属性的当前状态。(某些属性节点是只读/只写的除外)。 例如,如果为一个数字数值控件创建了属性节点,则该节点将在程序框图上显示,其可见属性默认为选中。 接线端右侧出现的小箭头表示正在读取属性值。右键单击接线端并从快捷菜单中选择转换为写入则改为写入操作。 将布尔假值连接到可见属性接线端,则属性节点接受数据时前面板上不出现该数值控件。将布尔真值连 接到可见属性接线端,则前面板上将出现该控件。见图1:
HTML DOM简要教程
第一部分HTML DOM简介 1 DOM简介 HTML文档对象模型 HTML文档对象模型(Document Object Model)定义了访问和处理 HTML 文档的标准方法。HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。 什么是 DOM? 通过JavaScript,您可以重构整个HTML文档。您可以添加、移除、改变或重排页面上的项目。 要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所有元素进行访问的入口。这个入口,连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。 DOM 被分为不同的部分(核心、XML及HTML)和级别(DOM Level 1/2/3) DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档。 ?Core DOM 定义了一套标准的针对任何结构化文档的对象 ?XML DOM定义了一套标准的针对XML 文档的对象 ?HTML DOM定义了一套标准的针对HTML 文档的对象 2 DOM节点 节点 根据 DOM,HTML 文档中的每个成分都是一个节点。
DOM 是这样规定的: ?整个文档是一个文档节点 ?每个HTML 标签是一个元素节点 ?包含在HTML 元素中的文本是文本节点 ?每一个HTML 属性是一个属性节点 ?注释属于注释节点 Node层次 节点彼此都有等级关系。 HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。 下面这个图片表示一个文档树(节点树): 3 DOM节点树 文档树(节点数)
DOMDocument属性与方法
最近发现DOMDocument对象很重要,还有XMLHTTP也很重要 注意大小写一定不能弄错. 属性: 1Attributes 存储节点的属性列表(只读) 2childNodes 存储节点的子节点列表(只读) 3dataType 返回此节点的数据类型 4Definition 以DTD或XML模式给出的节点的定义(只读) 5Doctype 指定文档类型节点(只读) 6documentElement 返回文档的根元素(可读写) 7firstChild 返回当前节点的第一个子节点(只读) 8Implementation 返回XMLDOMImplementation对象 9lastChild 返回当前节点最后一个子节点(只读) 10nextSibling 返回当前节点的下一个兄弟节点(只读) 11nodeName 返回节点的名字(只读) 12nodeType 返回节点的类型(只读) 13nodeTypedV alue 存储节点值(可读写) 14nodeV alue 返回节点的文本(可读写) 15ownerDocument 返回包含此节点的根文档(只读) 16parentNode 返回父节点(只读) 17Parsed 返回此节点及其子节点是否已经被解析(只读) 18Prefix 返回名称空间前缀(只读) 19preserveWhiteSpace 指定是否保留空白(可读写) 20previousSibling 返回此节点的前一个兄弟节点(只读) 21Text 返回此节点及其后代的文本内容(可读写) 22url 返回最近载入的XML文档的URL(只读) 23Xml 返回节点及其后代的XML表示(只读) 方法: 1appendChild 为当前节点添加一个新的子节点,放在最后的子节点后2cloneNode 返回当前节点的拷贝 3createAttribute 创建新的属性 4create视频教程'>cdA TASection 创建包括给定数据的CDA TA段 5createComment 创建一个注释节点 6createDocumentFragment 创建DocumentFragment对象 7createElement 创建一个元素节点 8createEntityReference 创建EntityReference对象 9createNode 创建给定类型,名字和命名空间的节点 10createPorcessingInstruction 创建操作指令节点 11createTextNode 创建包括给定数据的文本节点 12getElementsByTagName 返回指定名字的元素集合
javascript获取指定节点父节点、子节点的方法
用javascript获取指定节点父节点、子节点的方法 我们在实际的开发当中经常要获取页面中某个html元素,动态的更新该元素的样式、内容属性等。 那么如何获取要更新的这些元素呢?用JavaScript获取这些节点的方法有很多种,下面是总结的一些方法. 1. 通过document节点获取: (1)document.getElementById(elementId):该方法通过节点的ID,可以准确获得需要的元素,是比较简单快捷的方法。如果页面上含有多个相同id的节点,那么只返回第一个节点。如今,已经出现了如prototype、Mootools等多个JavaScript库,它们提供了更简便的方法:$(id),参数仍然是节点的id。这个方法可以看作是document.getElementById()的另外一种写法,不过$()的功能更为强大,具体用法可以参考它们各自的API文档。 (2)document.getElementsByName(elementName):该方法是通过节点的name获取节点,从名字可以看出,这个方法返回的不是一个节点元素,而是具有同样名称的节点数组。然后,我们可以通过要获取节点的某个属性来循环判断是否为需要的节点。 例如:在HTML中checkbox和radio都是通过相同的name属性值,来标识一个组内的元素。如果我们现在要获取被选中的元素,首先获取改组元素,然后循环判断是节点的checked属性值是否为true即可。 (3)document.getElementsByTagName(tagName):该方法是通过节点的Tag获取节点,同样该方法也是返回一个数组,例如:document.getElementsByTagName('A')将会返回页面上所有超链接节点。在获取节点之前,一般都是知道节点的类型的,所以使用该方法比较简单。但是缺点也是显而易见,那就是返回的数组可能十分庞大,这样就会浪费很多时间。那么,这个方法是不是就没有用处了呢?当然不是,这个方法和上面的两个不同,它不是document 节点的专有方法,还可以应用其他的节点,下面将会提到。 2、通过父节点获取: (1)parentObj.firstChild:如果节点为已知节点(parentObj)的第一个子节点就可以使用这个方法。这个属性是可以递归使用的,也就是支持parentObj.firstChild.firstChild.firstChild...的形式,如此就可以获得更深层次的节点。 (2)https://www.360docs.net/doc/8718887680.html,stChild:很显然,这个属性是获取已知节点(parentObj)的最后一个子节点。与firstChild一样,它也可以递归使用。 在使用中,如果我们把二者结合起来,那么将会达到更加令人兴奋的效果,即:https://www.360docs.net/doc/8718887680.html,stChild... (3)parentObj.childNodes:获取已知节点的子节点数组,然后可以通过循环或者索引找到需要的节点。 注意:经测试发现,在IE7上获取的是直接子节点的数组,而在Firefox2.0.0.11上获取的是所有子节点即包括子节点的子节点。 (4)parentObj.children:获取已知节点的直接子节点数组。 注意:经测试,在IE7上,和childNodes效果一样,而Firefox2.0.0.11不支持。这也是为什么我要使用和其他方法不同样式的原因。因此不建议使用。 (5)parentObj.getElementsByTagName(tagName):使用方法不再赘述,它返回已知节点的所有子节点中类型为指定值的子节点数组。例如:parentObj.getElementsByTagName('A')返回已知的子节点中的所有超链接。
labview属性节点
很多朋友对于属性节点的使用表示有些不明白,但是其作用又是相当强大的,所以必须明白怎么使用属性节点以及如何调用的问题,下面就来为大家解迷。 在获得对象的reference之后,就可以使用属性节点(Property Node)和调用节点(Invoke Node)来设定对象属性和调用对象提供的固有方法(Method)。 属性节点的一般形式如图1所示: 图1 属性节点 属性节点的最上面有两个输入参数和两个输出参数,输入参数reference用于接入对象的reference,输入的reference参数在被复制之后从reference out输出,可以再接入下一个使用reference作为输入参数的节点或函数。其他两个输入、输出参数用于错误处理。当接入某一个reference后,在class的位置会出现与该reference对应对象类别名称,比如App(Application)表示接入的是应用程序的reference,VI表示接入的是VI的reference等。reference输入参数一般有默认值,例如当类别(class)为Application时,其默认值为当前运行的应用程序的reference;当类别为VI时,其默认值为节点所在VI的reference。name1,name2等端子为属性端子,name1和name2代表属性名。 在属性端子上单击鼠标右键会弹出快捷菜单,在这个菜单里含有名为Properties的属性列表子菜单,在同样的快捷菜单里Change to Read和Change to Write选项将把端口在写端口和读端口之间转换,各个端子之间的读写状态互不影响。某些属性只能读不能写。在默认情况下类型名class和属性名name 1等采用的是“短名称”的表示方法,在属性节点上弹出右键快捷菜单,选择Name Format->Long Names将打开“长名称”的显示方式。如图2 所示: 图2 新放置的属性节点 作为一个例子,为第一个端子选择Operation https://www.360docs.net/doc/8718887680.html,属性,该属性表示运行程序的操作系统名称。运行程序后,在字符串指示器里返回所选择属性的值Windows NT,如图3所示。Operation https://www.360docs.net/doc/8718887680.html,为只读属性。reference参数使用了默认值,即当前运行的应用程序的reference,这同使用空的machine name参数调用Open Application Reference 参数返回的结果完全相同。
DOM获取节点的三种常用方法
Dom对象的常用方法: (1)getElementById() 查询给定ID属性值的元素,返回该元素的元素节点 1、查询给定ID属性值的元素,返回该元素的元素节点。也称为元素对象。 2、因为在一个html页面中id的值是唯一的,所以返回值也是唯一的。所以方法的名称为getElementById()而不是getElementsById() 3、该方法只能用于document对象,类似与java的static关键字。 (2)getElementsByName()查找给定name属性的所有元素,这个方法将返回一个节点集合,也可以称为对象集合 1、查找给定name属性的所有元素,这个方法将返回一个节点集合,也可以称为对象集合。 2、这个集合可以作为数组来对待,length属性的值表示集合的个数。 3、因为在html页面中,name不能唯一确定一个元素,所以方法的名称为getElementsByName而不是getElementByName (3)getElementsByTagName()查询给定标签名的所有元素 1、查询给定标签名的所有元素 2、因为在html页面中,标签名不是唯一的,所以返回值为节点的集合。 3、这个集合可以当做数组来处理,length属性为集合里所有元素的个数 4、可以有两种形式来执行这个方法: 1、var elements =document.getElementsByTagName(tagName); 2、var elements = element.getElementsByTagName(tagName); 5、从这两种方法可以看出持有这个方法的对象并不一定是整个文档对象(document).也可以是某一个元素节点。 (4)hasChildNodes()该方法用来判断一个元素是否有子节点,返回值为true或者false 1、该方法用来判断一个元素是否有子节点 2、返回值为true或者false 3、文本节点和属性节点不可能再包含子节点,所以对于这两类节点使用ChildNodes()方法返回值永远为false. 4、如果hasChildNodes()返回值为false,则childNodes,firstChild,lastChild 将为空数组或者空字符串。 (5)nodeName 1.如果节点是元素节点,nodeName返回元素的名称 2.如果给定节点为属性节点,nodeName返回属性的名称 3.如果给定节点为文本节点,nodeName返回为#text的字符串 (6)nodeType 1、元素节点类型值为1 2、属性节点类型值为2
ACAA 认证前端工程师参考样题
ACAA认证前端工程师参考样题 1)构成一个网页的两个最基本的元素? 1.文字和图片 2.音乐和链接 3.图片和链接 4.动画和音乐 参考答案:1 2)下列哪个是区段标签: 1.
2.
3.
- 4. 参考答案:1,2 3)下列哪项可以作为a标签中target属性的值: 1._content 2._valign 3._blank 4._self 参考答案:3,4 4)