2010-05-28 10 views
1

Heres ce que je suis arrivé à ce jour:Je dois appeler une fonction VBScript à partir d'un fichier javascript externe :: fonction

Cette fonction n'est pas directement dans la page html, son dans un fichier externe, « principal. js '.

function createVBScript(){ 
var script=document.createElement('script'); 
script.type='text/vbscript'; 
script.src='vb/fldt.vbs'; 
document.getElementsByTagName('head')[0].appendChild(script); 
} 

le fichier vbs contient:

<!-- // Visual basic helper required to detect Flash Player ActiveX control version information 
Function VBGetSwfVer() 
    MsgBox "Hello there"  
End Function 
// --> 

c'est tout ce que je veux faire pour le moment. comment puis-je appeler VBGetSwfVer() à partir de main.js?

Répondre

1

Ceci est une mauvaise idée.
VBScript est uniquement pris en charge par IE; votre page va jamais travailler sur Firefox.

Dans Internet Explorer, vous devriez pouvoir appeler la fonction comme n'importe quelle autre fonction.
Cependant, vous devriez porter la fonction à Javascript à la place.

1

Toutes les fonctions seront disponibles dans la portée globale et vous pourrez donc les appeler comme vous le feriez avec une méthode javascript classique.

Une autre méthode pour inclure le vbscript est à l'aide execScript

window.execScript('Class NixProxy\n' + 
' Private m_parent, m_child, m_Auth\n' + 
'\n' + 
' Public Sub SetParent(obj, auth)\n' + 
'  If isEmpty(m_Auth) Then m_Auth = auth\n' + 
'  SET m_parent = obj\n' + 
' End Sub\n' + 
' Public Sub SetChild(obj)\n' + 
'  SET m_child = obj\n' + 
'  m_parent.ready()\n' + 
' End Sub\n' + 
'\n' + 
' Public Sub SendToParent(data, auth)\n' + 
'  If m_Auth = auth Then m_parent.send(CStr(data))\n' + 
' End Sub\n' + 
' Public Sub SendToChild(data, auth)\n' + 
'  If m_Auth = auth Then m_child.send(CStr(data))\n' + 
' End Sub\n' + 
'End Class\n' + 
'Function GetNixProxy()\n' + 
' Set GetNixProxy = New NixProxy\n' + 
'End Function\n', 'vbscript'); 
1

@slaks, avant que le vbsript obtient jamais appelé je l'ai déjà déterminé l'agent utilisateur. donc oui ça ne marcherait jamais dans firefox, mais ça ne devrait même pas être tenté si l'utilisateur final a autre chose que ça.

@sean, c'est intéressant, je vais en faire référence.

ma solution était:

inclure dans l'en-tête du index.html

<script type="text/javascript" src="js/main.js"></script> 
<script type="text/vbscript" src="vb/fldt.vbs"></script> 

puis, toujours dans l'en-tête index.html, écrire une petite ligne javascript fonction de soutien,

<!--[if !IE]>--> 
<script languge="javascript"> 
    function jsCallToVB(i) { 
      var val = VBGetSwfVer(i); 
    return val; 
    } 
</script> 
<!--<![endif]--> 

puis dans mon fichier externe, main.js, j'appelle jsCallToVB(i);