×î»ù´¡µÄºËÐŦÄÜ ÈçÔËËã·û(+-*/µÈ) ¿ØÖÆÁ÷³ÌÓï¾ä(if,for,whileµÈ) µÈµÈÎҾͲ»ËµÁË. ÕâÊÇ×î×î»ù±¾µÄ֪ʶ.
BOM֪ʶ
BOM Browser Object Model ä¯ÀÀÆ÷¶ÔÏóÄ£ÐÍ.
window¶ÔÏóÊÇBOM×îÖØÒªµÄ¶ÔÏó. ÎÒÃÇ¿ÉÒÔ¼òµ¥µÄ°ÑÒ»¸öIE´°¿ÚÀí½âΪһ¸öwindow¶ÔÏó.
window.location
window.history
window.screen
window.document
Õâ¸öÊÇÎÒÃÇ×î³£ÓõÄ
ʼþ
Æäʵͦ¼òµ¥µÄ,µ«Òª¼ÇסʼþµÄÇý¶¯ÓÐÁ½Ä£Ê½, "ðÅÝ"Óë"²¶»ñ"
ðÅÝ: ¼¤»î˳ÐòÊÇʼþ´ÓËü(ʼþ)´¥·¢µã¿ªÊ¼ÏòÉϲãÖð¼¶Ã°ÅÝ(´¥»î)Ö±ÖÁdocument(ÉÏÃæËù˵µÄwindow.document)Ϊֹ.
²¶»ñ: ¼¤»î˳ÐòÓëðÅÝÏà·´,ʲ®´ÓµÚÒ»²ã(document)Öð¼¶ÏòÏÂÖ±Ö¹ÕÒµ½×îÖÕµÄʼþ¼¤»îÄ¿±ê.
ÉÏÃæÁ½¸ö¸ÅÄî¿´¹ýÈ¥ÊÇÂé·³,ÎÒÃÇÖ»Òª¼Çסһ°ã¶¼ÓÃ"ðÅÝ"¾Í¿ÉÒÔÁË.
DOM
DOM Document Object Model Îĵµ¶ÔÏóÄ£ÐÍ.
Îҷdz£Ï²»¶Õâ¸ö¹¦ÄÜ(Ä£ÐÍ), ÒòΪËýʵÏÖÁËWEB½çÃæµÄǧ±äÍò»¯.(¸öÈËÏë·¨)
window.document ¾ÍÊÇ ......
/**
* ±í¸ñÅÅÐò(µ¥¸ö±í¸ñ£¬½µÐò)
* @example
* <code>
* <table is_sort="1">
* <tr>
* <th><a href="javascript:void(0)" mce_href="javascript:void(0)" onclick="table_sort(0, 0)">field1</a></th>
* <th><a href="javascript:void(0)" mce_href="javascript:void(0)" onclick="table_sort(1, 1, 1)">field2</a></th>
* </tr>
*
* <!-- ´Ëtr²»»á²ÎÓëÅÅÐò -->
* <tr>
* <th>...</th>
* <td>...</td>
* </tr>
*
* <!-- ´Ëtr²ÎÓëÅÅÐò is_sortÊôÐÔ sort_valÊôÐÔ -->
* <tr is_sort="1">
* <th sort_val="val1">...</th>
* <th sort_val="val2">...</th>
* </tr>
* ...
* </table>
* </code>
* @param int index ÐèÒªÅÅÐòµÄÁУ¨´Ó0¿ªÊ¼£©
* @param int is_desc ÊÇ·ñ½µÐò
* @param int is_int ÊÇ·ñÐèÒª½«ÅÅÐòֵת»»³ÉintÀàÐÍ
* @return void
*/
function table_sort(index, is_desc, is_int)
{
$('table[is_sort=1] ......
·½°¸Ò»£º
// html & JavaScript
...
<button value="Click me"
onclick="window.navigate('app:command&arg1=1&arg2=2')" />
...
// C++: ÏìÓ¦ µÄÏûÏ¢º¯ÊýOnBeforeNavigat2
virtual void OnBeforeNavigate2( LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName,
CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel );
// C++ code goes here
CXXXDlg::OnBeforeNavigate2( LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName,
CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel )
{
CString strUrl = lpszURL;
if(strUrl.Left(4) == _T("app:"))
{
// cancel the common url navigate and call your c++ code here
*pbCancel = TURE;
// call other c++ function here or parse the argument in the strUrl
}
// go common url navigate here
}
·½°¸¶þ£º
// html & javaScript
...
function CallCpp()
{
alert('start to call cpp here');
window.external.JavaScriptCallC ......
·½°¸Ò»£º
// html & JavaScript
...
<button value="Click me"
onclick="window.navigate('app:command&arg1=1&arg2=2')" />
...
// C++: ÏìÓ¦ µÄÏûÏ¢º¯ÊýOnBeforeNavigat2
virtual void OnBeforeNavigate2( LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName,
CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel );
// C++ code goes here
CXXXDlg::OnBeforeNavigate2( LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName,
CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel )
{
CString strUrl = lpszURL;
if(strUrl.Left(4) == _T("app:"))
{
// cancel the common url navigate and call your c++ code here
*pbCancel = TURE;
// call other c++ function here or parse the argument in the strUrl
}
// go common url navigate here
}
·½°¸¶þ£º
// html & javaScript
...
function CallCpp()
{
alert('start to call cpp here');
window.external.JavaScriptCallC ......
1¡¢¶ÔÏóµÄ·Ö¼¶Ìåϵ
¡¡¡¡Ã¿¸öHTMLÎĵµ±»×°Èëä¯ÀÀÆ÷ÖÐʱä¯ÀÀÆ÷¾Í´´½¨ÁËһϵÁзּ¶µÄ¶ÔÏóÌåϵ£¬´ËÌåϵ·´Ó³ÁËHTMLÎĵµµÄÊôÐÔ.
¡¡¡¡ÔÚÿһ¸öHTMLÒ³Öк¬ÓÐÏÂÃæµÄ¶ÔÏó£º
¡¡¡¡navigator£ºº¬ÓÐÕýÔÚʹÓõÄNavigatorµÄÃû³Æ¡¢°æ±¾ÊôÐÔ£¬¿Í»§¶ËÖ§³ÖµÄMIMEÀàÐÍÊôÐÔ£¬¿Í»§¶Ë°²×°µÄ"²å¼þ"ÀàÐÍ¡£
¡¡¡¡window£º×î¸ßµÈ¼¶µÄ¶ÔÏó£¬ÓµÓÐÕû¸ö´°¿ÚµÄÊôÐÔ;ÔÚÿһ¸öFrameÖеÄ"×Ó´°¿Ú"Ò²ÓÐÏàÓ¦µÄwindow¶ÔÏó¡£
¡¡¡¡document£º°üº¬»ùÓÚÎĵµÄÚÈݵÄÊôÐÔ£¬Èçtitle¡¢backgroundcolor¡¢linksºÍformµÈ¡£
¡¡¡¡location£ºº¬ÓлùÓÚµ±Ç°µÄURLµÄÊôÐÔ¡£
¡¡¡¡history£º°üº¬¿Í»§»úÏÈǰÒѾÇëÇó¹ýµÄURL¡£
¡¡¡¡ÔÚÒýÓÃÊôÐÔʱ£¬±ØÐëÖ¸¶¨ÊôÐÔµÄËùÓÐ׿ÏÈ¡£ÀýÈ磬ÒýÓÃ±íµ¥MyFormÖеÄText1µÄValue£¬±ØÐëд³É£º
¡¡¡¡document.MyForm.Text1.Value
¡¡¡¡2¡¢¹Ø¼üµÄä¯ÀÀÆ÷¶ÔÏó
¡¡¡¡ÔÚHTMLÒ³ÖУ¬×îÓÐÓõÄJavaScript¶ÔÏóÓУºwindow¡¢Frame¡¢document¡¢Form¡¢location¡¢historyºÍnavigator¶ÔÏó¡£ÔÚÕâÀï·Ö±ð½²Ò»½²ÕâЩ¶ÔÏó¡£
¡¡¡¡windowºÍFrame¶ÔÏó
¡¡¡¡window¶ÔÏóÊÇHTMLÎĵµµÄËùÓÐÆäËû¶ÔÏóµÄ׿ÏȶÔÏó£¬ÊÇä¯ÀÀÆ÷µÄ´°¿ÚºÍ´°¿ÚÊôÐԵļ¯ºÏ¡£µ±ÔÚÒ»¸öWEBÒ³ÖÐÓÃFRAMEºÍ FRAMESET¶¨ÒåÁ˶à¸öèåºó£¬Ã¿¸öèå¶ÔÓ¦Ò»¸öFrame¶ÔÏó¡£Frame¶ÔÏóº ......
ÔÚÏß±à¼ÄÚÈݵÄʱºò£¬ÄÇЩ»ùÓÚ JavaScript µÄ±à¼Æ÷°ïÁËÎÒÃÇ´óæ£¬ÕâЩËù¼û¼´ËùµÃ£¨WYSIWYG£©±à¼Æ÷£¬¸øÎÒÃÇÌṩÁËÀàËÆ Office µÄ²Ù×÷ÌåÑé¡£Èç½ñ£¬ÈκÎÍøÕ¾ÄÚÈݹÜÀíϵͳ£¨CMS£©ºÍ²©¿Íϵͳ¶¼ÐèÒªÒ»¸öÕâÑùµÄ±à¼Æ÷¡£±¾Îľ«Ñ¡ÁË10¸ö»ùÓÚ JavaScript µÄ±à¼Æ÷£¬ËüÃÇÓеÄÊÇ»ùÓÚ jQuery ¿ò¼Ü£¬ÓеãÔò²»ÊÇ¡£
MarkitUp - jQuery
Official Website
| Demo
¹¦Äܲ»ÊǺܶ࣬µ«ºÜÇáÁ¿£¬ºÜÁé»î¡£´ò°üºóÖ»ÓÐ6.5K´óС¡£
jWYSIWYG - jQuery
Official Website
| Demo
·Ç³£»ù±¾µÄ±à¼Æ÷£¬¼òµ¥Îª±¾¡£´ò°üºóÖ»ÓÐ7K¡£
Lightweight RTE- jQuery
Official Website
| Demo
¼òµ¥µ½²»ÄÜÔÙ¼òµ¥£¬ºÜÈÝÒ××Ô¼ºÐ޸ġ£
HTMLBox - jQuery
Official Website
| Demo
¿çä¯ÀÀÆ÷£¬¿ªÔ´£¬»ùÓÚ jQuery¡£¿ÉÒÔºÜÈÝÒ×ͬ¸÷ÖÖ CMS£¬ÂÛ̳£¬ÁôÑÔ±¾£¬²©¿ÍµÈϵͳ¼¯³É¡£
D Small Rich Text Editor - jQuery
Official Website
| Demo
»ùÓÚ iframe ¶ÔÏó¡£
WYMEditor - jQuery
Official Website
| Demo
TinyMCE - non-jQuery
Official Website
| Demo
×î¾µäµÄ»ùÓÚ JavaScript µÄ±à¼Æ÷£¬COMSHARP CMS ĬÈÏµÄ±à¼Æ÷¾ÍÊÇÕâ¸ö¡£
fckeditor - Non-jQuery
Official Website
| Demo
¹¦Äܷdz£Ç¿´ó¡ ......
///
<summary>
///
һЩ³£ÓõÄJavascript·½·¨
///
</summary>
public
static
class
Jscript
{
///
<summary>
///
µ¯³öÌáʾ¿ò
///
</summary>
public
static
void
Alert(Page page,
string
msg)
{
string
js
=
@"
alert('
"
+
msg
+
"
')
"
;
if
(
!
page.ClientScript.IsStartupScriptRegistered(page.GetType(),
"
Alert
"
))
page.ClientScript.RegisterStartupScript(page.GetType(),
"
Alert
"
, js,
true
);
}
///
<summary>
///
µ¯³öÌáʾ¿ò²¢Ìø×ªµ½Ö¸¶¨Ò³Ãæ
///
</summary>
public
static
void
AlertAndRedirect(Page page,
string
msg,
string
ToURL)
{
string
js
=
@"
alert('{0}');window.location.replace('{1}');
"
;
......