一般的な考えに反して、IEはアクセサを割り当てることができますが、一部のタスクには十分なVBのみです。
<script language= "vbscript" >
' ,
Class Accessor
Public Property Let hook(val) ' hook Accessor
MsgBox val
End Property
End Class
Dim access ' VB
Set access = New Accessor ' Accessor
</script>
<script language= "jscript" >
// .. VB JS , access
access.hook = 'ololo' ;
</script>
* This source code was highlighted with Source Code Highlighter .
つまり、VBにはアクセサーがあり、VBはすべてのIEにあり、名前空間VBとJSは共通であり、それを使用できます。
このラッパーは私のタスクに十分でした:
<script>
// VB, language IE VB
</script>
<script language= "vbscript" >
Class Accessor
Public Property Let hook(val)
propset val ' hook propset
End Property
End Class
Dim access
Set access = New Accessor
</script>
<script>
function propset(val) { //
alert(val);
}
if ( /*@cc_on!@*/ true ) { // Accessor javascript
access = {};
access.__defineSetter__( 'hook' , function (val) {propset(val)})
}
access.hook = 'hi' ; //
</script>
* This source code was highlighted with Source Code Highlighter .
残念ながら、軟膏にハエがないわけではなく、割り当てられた値はスカラーのみであり、オブジェクトはエラーになります:
access.hook = {}; // :
* This source code was highlighted with Source Code Highlighter .
一般に、VBとその実装の複雑さを熟知していないため、おそらくこの問題はどうにかして回避できますか?
UPD:このアクセサは次のように宣言する必要があるため、割り当てられた値はスカラーだけでなく、 keksnのおかげです。
Class Accessor
Public Property Let hook(val)
propset val
End Property
Public Property Set hook(val)
propset val
End Property
End Class
Dim access
Set access = New Accessor
* This source code was highlighted with Source Code Highlighter .