问题
I'm working on a custom DotNetNuke module which requires the use of Lightbox. What's the best way to add the javascript necessary for Lightbox to a DNN module?
Nearly all the solutions I've seen involve adding the javascript references to the skin file. Is there another way to accomplish this? I'd hate to have those javascript files being loaded even for modules which don't need them.
=====================================================================
Thanks to spinon's help, here's the solution I'm using:
Dim csMgr As ClientScriptManager = Page.ClientScript
Dim Name As String = "prototype.js"
Dim ScriptPath As String = "http://dnn/js/prototype.js"
Dim Type As Type = Me.GetType
'check if script is already registered
If Not csMgr.IsClientScriptBlockRegistered(Type, Name) Then
Dim scriptText As New StringBuilder
scriptText.AppendLine()
scriptText.Append("<script src=""")
scriptText.Append(ScriptPath)
scriptText.Append(""" type=""text/javascript""></script>")
scriptText.AppendLine()
'register script
csMgr.RegisterClientScriptBlock(Me.GetType, Name, scriptText.ToString())
End If
回答1:
Well you can always just include them right into your module if it is only for certain modules. The resulting HTML will not be pretty but that is one solution.
Or from the .net code access the .net script manager. I forget the class name right now but you can have that load the scripts.
Either way both solutions would avoid loading the js for all pages, which is what would happen if you put it in the skin.
EDIT: Here is the class information:
Page.ClientScript.RegisterClientScriptBlock(....);
http://msdn2.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerclientscriptblock.aspx
来源:https://stackoverflow.com/questions/3339356/how-to-add-a-lightbox-to-a-custom-dotnetnuke-module