aboutsummaryrefslogtreecommitdiff
path: root/files/zh-tw
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-tw')
-rw-r--r--files/zh-tw/_wikihistory.json9180
-rw-r--r--files/zh-tw/archive/add-ons/developing_add-ons/index.html50
-rw-r--r--files/zh-tw/archive/add-ons/index.html8
-rw-r--r--files/zh-tw/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html51
-rw-r--r--files/zh-tw/archive/add-ons/working_with_multiprocess_firefox/index.html235
-rw-r--r--files/zh-tw/archive/apps/advanced_topics/index.html76
-rw-r--r--files/zh-tw/archive/apps/index.html8
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/contacts/index.html71
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/device_storage/index.html111
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/geolocation/index.html20
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/index.html90
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/web_activity/index.html116
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/封包式_(packaged)_app/index.html70
-rw-r--r--files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/托管更新作業_(hosting_updates)_/index.html78
-rw-r--r--files/zh-tw/archive/b2g_os/add-ons/index.html282
-rw-r--r--files/zh-tw/archive/b2g_os/api/fmradio/index.html110
-rw-r--r--files/zh-tw/archive/b2g_os/api/index.html156
-rw-r--r--files/zh-tw/archive/b2g_os/apps/index.html45
-rw-r--r--files/zh-tw/archive/b2g_os/apps/writing_a_web_app_for_b2g/index.html25
-rw-r--r--files/zh-tw/archive/b2g_os/architecture/index.html717
-rw-r--r--files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html111
-rw-r--r--files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/index.html69
-rw-r--r--files/zh-tw/archive/b2g_os/automated_testing/index.html77
-rw-r--r--files/zh-tw/archive/b2g_os/building/index.html124
-rw-r--r--files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html108
-rw-r--r--files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/index.html65
-rw-r--r--files/zh-tw/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html59
-rw-r--r--files/zh-tw/archive/b2g_os/debugging/index.html21
-rw-r--r--files/zh-tw/archive/b2g_os/firefox_os_build_prerequisites/index.html606
-rw-r--r--files/zh-tw/archive/b2g_os/index.html222
-rw-r--r--files/zh-tw/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html53
-rw-r--r--files/zh-tw/archive/b2g_os/introduction/index.html86
-rw-r--r--files/zh-tw/archive/b2g_os/phone_guide/flame/index.html50
-rw-r--r--files/zh-tw/archive/b2g_os/phone_guide/index.html6
-rw-r--r--files/zh-tw/archive/b2g_os/phone_guide/zte_open/index.html287
-rw-r--r--files/zh-tw/archive/b2g_os/platform/apps_architecture/index.html24
-rw-r--r--files/zh-tw/archive/b2g_os/platform/gaia/gaia_apps/index.html78
-rw-r--r--files/zh-tw/archive/b2g_os/platform/gaia/index.html68
-rw-r--r--files/zh-tw/archive/b2g_os/platform/gaia/introduction_to_gaia/index.html13
-rw-r--r--files/zh-tw/archive/b2g_os/platform/gonk/index.html22
-rw-r--r--files/zh-tw/archive/b2g_os/platform/index.html75
-rw-r--r--files/zh-tw/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html53
-rw-r--r--files/zh-tw/archive/b2g_os/preparing_for_your_first_b2g_build/index.html138
-rw-r--r--files/zh-tw/archive/b2g_os/quickstart/app_tools/index.html28
-rw-r--r--files/zh-tw/archive/b2g_os/quickstart/index.html51
-rw-r--r--files/zh-tw/archive/b2g_os/quickstart/your_first_app/index.html265
-rw-r--r--files/zh-tw/archive/b2g_os/releases/1.2/index.html465
-rw-r--r--files/zh-tw/archive/b2g_os/releases/index.html24
-rw-r--r--files/zh-tw/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html43
-rw-r--r--files/zh-tw/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html208
-rw-r--r--files/zh-tw/archive/b2g_os/security/application_security/index.html124
-rw-r--r--files/zh-tw/archive/b2g_os/security/index.html70
-rw-r--r--files/zh-tw/archive/b2g_os/security/security_model/index.html299
-rw-r--r--files/zh-tw/archive/b2g_os/security/system_security/index.html376
-rw-r--r--files/zh-tw/archive/b2g_os/simulator/index.html90
-rw-r--r--files/zh-tw/archive/b2g_os/simulator/simulator_walkthrough/index.html268
-rw-r--r--files/zh-tw/archive/b2g_os/using_the_app_manager/index.html259
-rw-r--r--files/zh-tw/archive/b2g_os/using_the_b2g_desktop_client/index.html180
-rw-r--r--files/zh-tw/archive/b2g_os/using_the_b2g_emulators/index.html69
-rw-r--r--files/zh-tw/archive/b2g_os/web_telephony_api/index.html25
-rw-r--r--files/zh-tw/archive/b2g_os/writing_apps_for_boot_to_gecko/index.html12
-rw-r--r--files/zh-tw/archive/css3/index.html584
-rw-r--r--files/zh-tw/archive/index.html21
-rw-r--r--files/zh-tw/archive/mdn/index.html18
-rw-r--r--files/zh-tw/archive/mdn/persona_sign-ins/index.html28
-rw-r--r--files/zh-tw/archive/meta_docs/custom_classes/index.html189
-rw-r--r--files/zh-tw/archive/meta_docs/index.html12
-rw-r--r--files/zh-tw/archive/misc_top_level/creating_a_web_based_tone_generator/index.html91
-rw-r--r--files/zh-tw/archive/misc_top_level/index.html8
-rw-r--r--files/zh-tw/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html18
-rw-r--r--files/zh-tw/archive/mozilla/creating_a_microsummary/index.html214
-rw-r--r--files/zh-tw/archive/mozilla/drag_and_drop/index.html142
-rw-r--r--files/zh-tw/archive/mozilla/firefox/index.html8
-rw-r--r--files/zh-tw/archive/mozilla/firefox/using_microformats/index.html78
-rw-r--r--files/zh-tw/archive/mozilla/index.html10
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/apis/index.html36
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/faq/index.html154
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/index.html159
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html69
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html48
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html3698
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html332
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/index.html80
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html77
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html30
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html95
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html132
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html69
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html40
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html22
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/index.html9
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html87
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html66
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html80
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html75
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html10
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html39
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html57
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html61
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html26
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html28
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html145
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html72
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html129
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html10
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html134
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html16
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html128
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html52
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html27
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/submission/index.html9
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html80
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html36
-rw-r--r--files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html117
-rw-r--r--files/zh-tw/archive/mozilla/migrate_apps_from_internet_explorer_to_mozilla/index.html1070
-rw-r--r--files/zh-tw/archive/mozilla/persona/branding/index.html42
-rw-r--r--files/zh-tw/archive/mozilla/persona/index.html125
-rw-r--r--files/zh-tw/archive/mozilla/persona/internationalization/index.html51
-rw-r--r--files/zh-tw/archive/mozilla/persona/quick_setup/index.html137
-rw-r--r--files/zh-tw/archive/mozilla/persona/remote_verification_api/index.html171
-rw-r--r--files/zh-tw/archive/mozilla/persona/why_persona/index.html30
-rw-r--r--files/zh-tw/archive/mozilla/xpinstall/index.html65
-rw-r--r--files/zh-tw/archive/mozilla/xpinstall/scripting_by_example/index.html244
-rw-r--r--files/zh-tw/archive/mozilla/xul/index.html99
-rw-r--r--files/zh-tw/archive/mozilla/xul/template_guide/index.html5
-rw-r--r--files/zh-tw/archive/mozilla/xul/the_joy_of_xul/index.html49
-rw-r--r--files/zh-tw/archive/mozilla/xul/xul_reference/index.html344
-rw-r--r--files/zh-tw/archive/mozilla/xulrunner/index.html88
-rw-r--r--files/zh-tw/archive/mozilla/xulrunner/xulrunner_tips/index.html213
-rw-r--r--files/zh-tw/archive/themes/index.html11
-rw-r--r--files/zh-tw/archive/web/e4x/index.html6
-rw-r--r--files/zh-tw/archive/web/e4x/processing_xml_with_e4x/index.html229
-rw-r--r--files/zh-tw/archive/web/index.html12
-rw-r--r--files/zh-tw/archive/web_standards/index.html76
-rw-r--r--files/zh-tw/archive/web_standards/rdf_in_fifty_words_or_less/index.html85
-rw-r--r--files/zh-tw/code_snippets/index.html190
-rw-r--r--files/zh-tw/code_snippets/tabbed_browser/index.html398
-rw-r--r--files/zh-tw/extensions/index.html9
-rw-r--r--files/zh-tw/extensions/using_the_dom_file_api_in_chrome_code/index.html49
-rw-r--r--files/zh-tw/firefox_2_佈景主題之更動/index.html884
-rw-r--r--files/zh-tw/firefox_3_animated_png_support/index.html39
-rw-r--r--files/zh-tw/firefox_3_drag_and_drop_events/index.html33
-rw-r--r--files/zh-tw/gecko_dom_參考/tcpsocket/index.html140
-rw-r--r--files/zh-tw/introducing_the_audio_api_extension/index.html181
-rw-r--r--files/zh-tw/localization_quick_start_guide/index.html32
-rw-r--r--files/zh-tw/localization_quick_start_guide/initial_setup/index.html95
-rw-r--r--files/zh-tw/mercurial/index.html22
-rw-r--r--files/zh-tw/mozilla/add-ons/add-on_debugger/index.html78
-rw-r--r--files/zh-tw/mozilla/add-ons/add-on_guidelines/index.html117
-rw-r--r--files/zh-tw/mozilla/add-ons/amo/index.html9
-rw-r--r--files/zh-tw/mozilla/add-ons/amo/policy/index.html21
-rw-r--r--files/zh-tw/mozilla/add-ons/amo/policy/聯絡資訊/index.html24
-rw-r--r--files/zh-tw/mozilla/add-ons/firefox_for_android/api/index.html30
-rw-r--r--files/zh-tw/mozilla/add-ons/firefox_for_android/index.html70
-rw-r--r--files/zh-tw/mozilla/add-ons/sdk/builder/index.html13
-rw-r--r--files/zh-tw/mozilla/add-ons/sdk/guides/index.html115
-rw-r--r--files/zh-tw/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html588
-rw-r--r--files/zh-tw/mozilla/add-ons/sdk/high-level_apis/index.html10
-rw-r--r--files/zh-tw/mozilla/add-ons/sdk/index.html82
-rw-r--r--files/zh-tw/mozilla/add-ons/sdk/low-level_apis/index.html20
-rw-r--r--files/zh-tw/mozilla/add-ons/themes/obsolete/index.html10
-rw-r--r--files/zh-tw/mozilla/adding_phishing_protection_data_providers/index.html66
-rw-r--r--files/zh-tw/mozilla/chrome_registration/index.html348
-rw-r--r--files/zh-tw/mozilla/connect/index.html126
-rw-r--r--files/zh-tw/mozilla/creating_mozsearch_plugins/index.html56
-rw-r--r--files/zh-tw/mozilla/firefox/developer_edition/index.html56
-rw-r--r--files/zh-tw/mozilla/firefox/developer_edition/reverting/index.html25
-rw-r--r--files/zh-tw/mozilla/firefox/multiprocess_firefox/index.html80
-rw-r--r--files/zh-tw/mozilla/firefox/privacy/index.html9
-rw-r--r--files/zh-tw/mozilla/firefox/privacy/tracking_protection/index.html74
-rw-r--r--files/zh-tw/mozilla/firefox/releases/3/firefox_3_css_improvement/index.html30
-rw-r--r--files/zh-tw/mozilla/gecko/chrome/api/browser_api/index.html158
-rw-r--r--files/zh-tw/mozilla/gecko/chrome/api/index.html14
-rw-r--r--files/zh-tw/mozilla/gecko/chrome/index.html15
-rw-r--r--files/zh-tw/mozilla/gecko/index.html65
-rw-r--r--files/zh-tw/mozilla/infallible_memory_allocation/index.html84
-rw-r--r--files/zh-tw/mozilla/introduction_to_layout_in_mozilla/index.html358
-rw-r--r--files/zh-tw/mozilla/javascript_code_modules/index.html102
-rw-r--r--files/zh-tw/mozilla/javascript_code_modules/promise.jsm/index.html144
-rw-r--r--files/zh-tw/mozilla/javascript_code_modules/promise.jsm/promise/index.html215
-rw-r--r--files/zh-tw/mozilla/js-ctypes/index.html97
-rw-r--r--files/zh-tw/mozilla/localization/index.html25
-rw-r--r--files/zh-tw/mozilla/localization/localizing_with_pontoon/index.html135
-rw-r--r--files/zh-tw/mozilla/mathml_project/index.html60
-rw-r--r--files/zh-tw/mozilla/mathml_project/screenshots/index.html14
-rw-r--r--files/zh-tw/mozilla/mathml_project/開頭/index.html91
-rw-r--r--files/zh-tw/mozilla/performance/about_colon_memory/index.html188
-rw-r--r--files/zh-tw/mozilla/performance/index.html130
-rw-r--r--files/zh-tw/mozilla/preferences/index.html48
-rw-r--r--files/zh-tw/mozilla/preferences/preferences_system/index.html40
-rw-r--r--files/zh-tw/mozilla/preferences/preferences_system/new_attributes/index.html55
-rw-r--r--files/zh-tw/mozilla/projects/index.html14
-rw-r--r--files/zh-tw/mozilla/projects/nss/getting_started_with_nss/index.html58
-rw-r--r--files/zh-tw/mozilla/projects/nss/index.html180
-rw-r--r--files/zh-tw/mozilla/projects/rhino/index.html27
-rw-r--r--files/zh-tw/mozilla/projects/rhino/license/index.html47
-rw-r--r--files/zh-tw/mozilla/qa/bug_writing_guidelines/index.html246
-rw-r--r--files/zh-tw/mozilla/qa/index.html251
-rw-r--r--files/zh-tw/mozilla/rust/index.html40
-rw-r--r--files/zh-tw/mozilla/tech/index.html14
-rw-r--r--files/zh-tw/mozilla/tech/xpcom/reference/index.html27
-rw-r--r--files/zh-tw/mozilla/tech/xpcom/reference/interface/index.html19
-rw-r--r--files/zh-tw/mozilla/tech/xpcom/reference/interface/nsicontentpolicy/index.html491
-rw-r--r--files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/howto/index.html199
-rw-r--r--files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/index.html10
-rw-r--r--files/zh-tw/mozilla/thunderbird/autoconfiguration/index.html113
-rw-r--r--files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html26
-rw-r--r--files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/upgrading_thunderbird_in_the_enterprise/index.html260
-rw-r--r--files/zh-tw/mozilla/thunderbird/index.html79
-rw-r--r--files/zh-tw/mozilla/thunderbird/thunderbird_extensions/index.html135
-rw-r--r--files/zh-tw/mozilla/thunderbird/thunderbird_extensions/theme_packaging/index.html105
-rw-r--r--files/zh-tw/prism/index.html89
-rw-r--r--files/zh-tw/prism/主視窗/index.html21
-rw-r--r--files/zh-tw/prism/安裝程式/index.html11
-rw-r--r--files/zh-tw/profile_manager/index.html110
-rw-r--r--files/zh-tw/sandbox/index.html180
-rw-r--r--files/zh-tw/tools/scratchpad/index.html109
-rw-r--r--files/zh-tw/tools/webide/index.html290
-rw-r--r--files/zh-tw/tools/webide/troubleshooting/index.html46
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.1/index.html71
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.2/index.html89
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.3/index.html138
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.4/index.html25
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.5/index.html37
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.6/index.html87
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.7/index.html600
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.8.1/index.html41
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.8.5/index.html132
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/1.8/index.html125
-rw-r--r--files/zh-tw/web/javascript/new_in_javascript/index.html71
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/index.html25
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/liveconnect_類別的使用/index.html105
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/javascript_向_java_的通訊/index.html87
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/包裝器的運用/index.html13
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/index.html15
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_java_到_javascript_的轉換/index.html18
-rw-r--r--files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_javascript_到_java_的轉換/index.html50
-rw-r--r--files/zh-tw/web/javascript/reference/global_objects/object/watch/index.html191
-rw-r--r--files/zh-tw/webapi/alarm/index.html196
-rw-r--r--files/zh-tw/webapi/camera/index.html20
-rw-r--r--files/zh-tw/webapi/contacts/index.html197
-rw-r--r--files/zh-tw/webapi/device_storage/index.html228
-rw-r--r--files/zh-tw/webapi/idle/index.html61
-rw-r--r--files/zh-tw/webapi/network_stats/index.html86
-rw-r--r--files/zh-tw/webapi/power_management/index.html102
-rw-r--r--files/zh-tw/webapi/settings/index.html69
-rw-r--r--files/zh-tw/webapi/simple_push/index.html115
-rw-r--r--files/zh-tw/webapi/tcp_socket/index.html69
-rw-r--r--files/zh-tw/webapi/time_and_clock/index.html30
-rw-r--r--files/zh-tw/webapi/web_activities/index.html415
-rw-r--r--files/zh-tw/webapi/webfm_api/index.html130
-rw-r--r--files/zh-tw/webapi/websms/index.html130
-rw-r--r--files/zh-tw/xpcom/index.html47
-rw-r--r--files/zh-tw/xul_教學/index.html136
-rw-r--r--files/zh-tw/zones/index.html53
-rw-r--r--files/zh-tw/以_windows_登錄碼安裝擴充套件/index.html32
-rw-r--r--files/zh-tw/佈景主題/background/index.html102
-rw-r--r--files/zh-tw/佈景主題/index.html97
-rw-r--r--files/zh-tw/擴充套件/index.html23
-rw-r--r--files/zh-tw/製作_firefox_佈景主題/contents.rdf/index.html48
-rw-r--r--files/zh-tw/製作_firefox_佈景主題/index.html38
-rw-r--r--files/zh-tw/製作_firefox_佈景主題/install.rdf/index.html47
-rw-r--r--files/zh-tw/製作_firefox_佈景主題/uuid/index.html16
-rw-r--r--files/zh-tw/製作_firefox_佈景主題/上手篇/index.html117
264 files changed, 0 insertions, 41765 deletions
diff --git a/files/zh-tw/_wikihistory.json b/files/zh-tw/_wikihistory.json
deleted file mode 100644
index 4febc0f7d2..0000000000
--- a/files/zh-tw/_wikihistory.json
+++ /dev/null
@@ -1,9180 +0,0 @@
-{
- "Core_JavaScript_1.5_正規表達式的建立": {
- "modified": "2019-03-24T00:00:58.216Z",
- "contributors": [
- "wbamberg",
- "happysadman"
- ]
- },
- "Cross-site_XMLHttpRequest": {
- "modified": "2019-01-16T15:28:10.716Z",
- "contributors": [
- "Mgjbot",
- "BobChao",
- "Coolcd"
- ]
- },
- "DOM_觀察器": {
- "modified": "2019-01-16T13:41:41.852Z",
- "contributors": [
- "273K"
- ]
- },
- "DragDrop": {
- "modified": "2019-01-16T13:26:51.358Z",
- "contributors": [
- "sailplaneTW"
- ]
- },
- "Firefox_3.5_技術文件": {
- "modified": "2019-03-23T23:59:44.778Z",
- "contributors": [
- "irvinfly",
- "RJ_Hsiao",
- "teoli",
- "Littlebtc",
- "BobChao"
- ]
- },
- "Firefox_中的離線資源": {
- "modified": "2019-03-24T00:13:31.494Z",
- "contributors": [
- "sailplaneTW"
- ]
- },
- "Games": {
- "modified": "2019-09-09T15:35:53.246Z",
- "contributors": [
- "SphinxKnight",
- "wbamberg",
- "iigmir",
- "fscholz",
- "MashKao"
- ]
- },
- "Games/Introduction": {
- "modified": "2019-01-16T19:41:58.412Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "RishYang",
- "MashKao"
- ]
- },
- "Games/Techniques": {
- "modified": "2019-01-17T01:09:15.300Z",
- "contributors": [
- "wbamberg",
- "chrisdavidmills"
- ]
- },
- "Games/Tutorials": {
- "modified": "2019-03-23T22:47:44.453Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "chrisdavidmills"
- ]
- },
- "Games/Tutorials/2D_Breakout_game_pure_JavaScript": {
- "modified": "2019-03-23T22:47:44.181Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "MashKao",
- "weihanglo",
- "benjaminchen",
- "RishYang"
- ]
- },
- "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls": {
- "modified": "2019-03-23T22:42:23.279Z",
- "contributors": [
- "wbamberg",
- "RishYang",
- "jackblackevo",
- "tomchang1",
- "feiye1",
- "Jamin",
- "EasonWang01"
- ]
- },
- "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it": {
- "modified": "2019-07-06T06:25:00.544Z",
- "contributors": [
- "SLMT",
- "wbamberg",
- "jackblackevo",
- "RishYang"
- ]
- },
- "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball": {
- "modified": "2019-03-23T22:45:54.347Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "Randy_Chen",
- "weihanglo",
- "Jamin",
- "RishYang"
- ]
- },
- "Glossary": {
- "modified": "2020-10-07T11:15:41.747Z",
- "contributors": [
- "peterbe",
- "SphinxKnight",
- "wbamberg",
- "Chou-Chun-Yu",
- "iigmir",
- "marktwtn",
- "jackblackevo",
- "Jeremie"
- ]
- },
- "Glossary/404": {
- "modified": "2019-03-23T22:23:29.116Z",
- "contributors": [
- "iigmir",
- "marktwtn"
- ]
- },
- "Glossary/502": {
- "modified": "2019-03-18T21:44:50.733Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/AJAX": {
- "modified": "2019-03-23T22:28:09.468Z",
- "contributors": [
- "Rocker",
- "iigmir"
- ]
- },
- "Glossary/API": {
- "modified": "2019-03-18T21:45:17.379Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/ARIA": {
- "modified": "2019-03-18T21:44:55.861Z",
- "contributors": [
- "iigmir",
- "Rocker"
- ]
- },
- "Glossary/ARPA": {
- "modified": "2019-03-18T21:42:24.969Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/ASCII": {
- "modified": "2019-03-18T21:42:57.788Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/ATAG": {
- "modified": "2019-03-18T21:44:30.079Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Abstraction": {
- "modified": "2019-03-23T22:04:33.213Z",
- "contributors": [
- "serinahsu",
- "jackblackevo"
- ]
- },
- "Glossary/Accessibility": {
- "modified": "2019-08-12T14:53:15.273Z",
- "contributors": [
- "ayugioh2003",
- "LNDDYL",
- "willynpi",
- "Rocker"
- ]
- },
- "Glossary/Adobe_Flash": {
- "modified": "2020-05-23T16:50:31.350Z",
- "contributors": [
- "iigmir",
- "Rocker"
- ]
- },
- "Glossary/Algorithm": {
- "modified": "2019-01-17T00:19:24.512Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Apple_Safari": {
- "modified": "2019-03-18T21:44:37.542Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Argument": {
- "modified": "2019-04-23T04:30:03.619Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "Rocker"
- ]
- },
- "Glossary/Arpanet": {
- "modified": "2019-03-18T21:41:50.711Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Asynchronous": {
- "modified": "2019-08-12T14:24:28.607Z",
- "contributors": [
- "ayugioh2003",
- "petercpg",
- "iigmir"
- ]
- },
- "Glossary/Attribute": {
- "modified": "2019-03-23T22:31:19.472Z",
- "contributors": [
- "Rocker",
- "iigmir",
- "jackblackevo"
- ]
- },
- "Glossary/Bandwidth": {
- "modified": "2019-03-18T21:44:58.394Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Blink": {
- "modified": "2019-03-23T22:26:07.848Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/Block": {
- "modified": "2019-03-18T21:44:30.568Z",
- "contributors": [
- "Sheppy"
- ]
- },
- "Glossary/Block/CSS": {
- "modified": "2019-03-18T21:44:30.419Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Boolean": {
- "modified": "2019-03-23T22:11:57.041Z",
- "contributors": [
- "jackblackevo",
- "vintif"
- ]
- },
- "Glossary/Bootstrap": {
- "modified": "2020-05-23T17:07:57.268Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Browser": {
- "modified": "2019-03-23T22:54:30.687Z",
- "contributors": [
- "iigmir",
- "irvinfly"
- ]
- },
- "Glossary/Browsing_context": {
- "modified": "2019-03-18T21:45:10.444Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/CMS": {
- "modified": "2020-01-08T23:11:50.383Z",
- "contributors": [
- "jjyaung",
- "iigmir"
- ]
- },
- "Glossary/CORS": {
- "modified": "2019-03-23T22:20:31.350Z",
- "contributors": [
- "Rocker",
- "jackblackevo",
- "iigmir",
- "afutseng"
- ]
- },
- "Glossary/CRUD": {
- "modified": "2019-12-13T00:20:11.698Z",
- "contributors": [
- "AlanSyue"
- ]
- },
- "Glossary/CSP": {
- "modified": "2019-03-18T21:42:06.219Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/CSRF": {
- "modified": "2020-06-01T13:34:09.077Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/CSS": {
- "modified": "2020-01-29T11:39:11.856Z",
- "contributors": [
- "jjyaung",
- "Chou-Chun-Yu",
- "iigmir"
- ]
- },
- "Glossary/CSSOM": {
- "modified": "2019-12-09T06:15:08.221Z",
- "contributors": [
- "afutseng"
- ]
- },
- "Glossary/CSS_Selector": {
- "modified": "2020-01-08T23:14:25.094Z",
- "contributors": [
- "jjyaung",
- "iigmir"
- ]
- },
- "Glossary/CSS_pixel": {
- "modified": "2019-12-10T23:33:41.801Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/CSS_preprocessor": {
- "modified": "2020-05-23T15:15:52.045Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Cache": {
- "modified": "2020-01-07T20:19:13.685Z",
- "contributors": [
- "jjyaung",
- "iigmir"
- ]
- },
- "Glossary/Callback_function": {
- "modified": "2019-03-18T21:45:30.183Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Canvas": {
- "modified": "2019-03-23T22:12:33.666Z",
- "contributors": [
- "vintif"
- ]
- },
- "Glossary/Character": {
- "modified": "2019-03-23T22:15:30.036Z",
- "contributors": [
- "jackblackevo",
- "AfricanxAdmiral"
- ]
- },
- "Glossary/Chrome": {
- "modified": "2019-03-23T22:49:53.479Z",
- "contributors": [
- "leVirve"
- ]
- },
- "Glossary/Cipher_suite": {
- "modified": "2019-03-18T21:44:16.996Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Ciphertext": {
- "modified": "2019-03-18T21:44:24.122Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Class": {
- "modified": "2019-08-12T15:30:11.761Z",
- "contributors": [
- "ayugioh2003",
- "Rocker"
- ]
- },
- "Glossary/Closure": {
- "modified": "2019-03-18T21:44:42.611Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Compile": {
- "modified": "2019-03-18T21:44:17.421Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Compile_time": {
- "modified": "2019-03-18T21:43:32.243Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Computer_Programming": {
- "modified": "2020-06-01T13:22:38.424Z",
- "contributors": [
- "iigmir",
- "Rocker"
- ]
- },
- "Glossary/Constructor": {
- "modified": "2019-03-23T22:16:57.732Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Continuous_Media": {
- "modified": "2020-02-25T03:18:35.922Z",
- "contributors": [
- "JamesGoler"
- ]
- },
- "Glossary/Cookie": {
- "modified": "2019-03-18T21:44:06.722Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Crawler": {
- "modified": "2019-03-23T22:07:26.742Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Cryptography": {
- "modified": "2019-03-18T21:44:26.909Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/DHTML": {
- "modified": "2019-03-23T23:05:14.683Z",
- "contributors": [
- "wildsky"
- ]
- },
- "Glossary/DNS": {
- "modified": "2019-03-18T21:42:20.975Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/DOM": {
- "modified": "2019-03-18T21:44:43.965Z",
- "contributors": [
- "abler0122"
- ]
- },
- "Glossary/DOS_attack": {
- "modified": "2019-03-18T21:43:00.216Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Data_structure": {
- "modified": "2019-03-23T22:12:01.136Z",
- "contributors": [
- "jackblackevo",
- "vintif"
- ]
- },
- "Glossary/Developer_Tools": {
- "modified": "2019-03-18T21:42:38.696Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Doctype": {
- "modified": "2019-03-23T22:37:58.936Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Document_directive": {
- "modified": "2019-03-18T21:41:10.612Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Domain": {
- "modified": "2019-03-18T21:44:05.100Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Domain_name": {
- "modified": "2019-04-11T07:41:10.867Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/ECMA": {
- "modified": "2019-03-23T22:26:14.045Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/ECMAScript": {
- "modified": "2019-08-12T15:22:21.776Z",
- "contributors": [
- "ayugioh2003"
- ]
- },
- "Glossary/Element": {
- "modified": "2019-08-12T15:14:24.188Z",
- "contributors": [
- "ayugioh2003"
- ]
- },
- "Glossary/Empty_element": {
- "modified": "2019-03-18T21:41:26.001Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Engine": {
- "modified": "2019-03-18T21:41:31.602Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/FTP": {
- "modified": "2019-03-18T21:42:31.337Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Firefox_OS": {
- "modified": "2019-03-18T21:44:10.196Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/First-class_Function": {
- "modified": "2020-04-26T05:17:55.398Z",
- "contributors": [
- "nighet",
- "Arisu"
- ]
- },
- "Glossary/First_CPU_idle": {
- "modified": "2019-12-09T05:44:22.503Z",
- "contributors": [
- "afutseng"
- ]
- },
- "Glossary/First_contentful_paint": {
- "modified": "2019-12-09T05:35:40.356Z",
- "contributors": [
- "afutseng"
- ]
- },
- "Glossary/First_input_delay": {
- "modified": "2019-12-09T05:57:35.745Z",
- "contributors": [
- "afutseng"
- ]
- },
- "Glossary/Git": {
- "modified": "2019-03-23T22:20:30.755Z",
- "contributors": [
- "iigmir",
- "afutseng"
- ]
- },
- "Glossary/Grid": {
- "modified": "2019-03-18T21:15:33.503Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/HTML": {
- "modified": "2019-12-23T12:34:17.059Z",
- "contributors": [
- "Uemmra3",
- "iigmir"
- ]
- },
- "Glossary/HTML5": {
- "modified": "2019-03-18T21:43:07.468Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/HTTP": {
- "modified": "2019-03-23T22:22:08.807Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Head": {
- "modified": "2019-03-18T21:42:17.897Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Hoisting": {
- "modified": "2019-03-23T22:15:30.480Z",
- "contributors": [
- "iigmir",
- "Julia-H",
- "jsgao0",
- "Daisord"
- ]
- },
- "Glossary/Host": {
- "modified": "2020-04-07T10:31:06.895Z",
- "contributors": [
- "iigmir",
- "slivenred",
- "Rocker"
- ]
- },
- "Glossary/IIFE": {
- "modified": "2019-03-18T21:40:45.117Z",
- "contributors": [
- "PeterTing",
- "othree"
- ]
- },
- "Glossary/IP_Address": {
- "modified": "2019-03-23T22:26:11.146Z",
- "contributors": [
- "LNDDYL",
- "petercpg"
- ]
- },
- "Glossary/Identifier": {
- "modified": "2019-03-18T21:42:10.774Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Immutable": {
- "modified": "2019-03-23T22:14:17.839Z",
- "contributors": [
- "jsgao0"
- ]
- },
- "Glossary/IndexedDB": {
- "modified": "2019-03-23T22:27:22.105Z",
- "contributors": [
- "petercpg",
- "ddtet"
- ]
- },
- "Glossary/JSON": {
- "modified": "2019-03-23T22:07:09.680Z",
- "contributors": [
- "jmlntw"
- ]
- },
- "Glossary/Jank": {
- "modified": "2019-01-17T02:24:07.422Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Java": {
- "modified": "2020-05-23T17:24:41.278Z",
- "contributors": [
- "iigmir",
- "Rocker"
- ]
- },
- "Glossary/JavaScript": {
- "modified": "2019-03-23T22:21:44.170Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Key": {
- "modified": "2019-03-18T21:41:03.451Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Keyword": {
- "modified": "2019-03-18T21:43:25.817Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Ligature": {
- "modified": "2019-03-18T21:42:40.057Z",
- "contributors": [
- "MashKao"
- ]
- },
- "Glossary/Localization": {
- "modified": "2019-03-23T23:41:05.296Z",
- "contributors": [
- "LNDDYL",
- "jackblackevo",
- "teoli",
- "Mgjbot",
- "Josesun"
- ]
- },
- "Glossary/MIME_type": {
- "modified": "2020-02-27T00:22:42.482Z",
- "contributors": [
- "iigmir",
- "Rocker"
- ]
- },
- "Glossary/MVC": {
- "modified": "2019-03-23T22:06:52.468Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/MathML": {
- "modified": "2019-03-18T21:43:04.439Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Node.js": {
- "modified": "2019-03-23T22:31:42.758Z",
- "contributors": [
- "MashKao",
- "iigmir"
- ]
- },
- "Glossary/Null": {
- "modified": "2019-03-18T21:41:44.373Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Number": {
- "modified": "2019-03-18T21:43:06.067Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/OOP": {
- "modified": "2019-03-23T22:25:27.137Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "mhlin"
- ]
- },
- "Glossary/Object": {
- "modified": "2019-03-23T22:20:26.457Z",
- "contributors": [
- "iigmir",
- "stdio2017"
- ]
- },
- "Glossary/Opera_Browser": {
- "modified": "2019-03-23T22:26:09.236Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/PHP": {
- "modified": "2019-12-10T23:51:32.813Z",
- "contributors": [
- "iigmir",
- "wildsky"
- ]
- },
- "Glossary/PNG": {
- "modified": "2019-03-18T21:43:45.458Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/POP": {
- "modified": "2019-04-11T07:11:52.215Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Parameter": {
- "modified": "2020-11-15T10:35:16.374Z",
- "contributors": [
- "realspirit2017"
- ]
- },
- "Glossary/Port": {
- "modified": "2019-03-23T22:26:13.956Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/Presto": {
- "modified": "2019-03-23T22:26:12.268Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/Progressive_Enhancement": {
- "modified": "2019-03-23T22:22:17.291Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Protocol": {
- "modified": "2019-03-23T22:26:12.061Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/Prototype": {
- "modified": "2019-03-18T21:44:16.275Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Pseudo-element": {
- "modified": "2019-03-23T22:04:36.224Z",
- "contributors": [
- "serinahsu",
- "jackblackevo"
- ]
- },
- "Glossary/Python": {
- "modified": "2020-02-27T00:05:00.804Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/REST": {
- "modified": "2019-03-18T21:43:34.013Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Recursion": {
- "modified": "2019-03-23T22:24:39.190Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Reflow": {
- "modified": "2019-03-23T22:14:40.596Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Glossary/Regular_expression": {
- "modified": "2019-03-23T22:31:40.731Z",
- "contributors": [
- "petercpg",
- "iigmir"
- ]
- },
- "Glossary/Responsive_web_design": {
- "modified": "2020-02-27T00:27:23.047Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Ruby": {
- "modified": "2020-02-27T00:09:53.452Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/SEO": {
- "modified": "2019-10-17T06:29:26.247Z",
- "contributors": [
- "iigmir",
- "slivenred"
- ]
- },
- "Glossary/SGML": {
- "modified": "2019-03-23T22:26:12.834Z",
- "contributors": [
- "petercpg"
- ]
- },
- "Glossary/SPA": {
- "modified": "2020-06-01T13:03:21.776Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/SQL": {
- "modified": "2019-03-23T22:28:09.553Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/SQL_Injection": {
- "modified": "2019-03-23T22:31:49.084Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/SVG": {
- "modified": "2019-03-23T22:08:49.246Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/SVN": {
- "modified": "2019-03-18T21:40:39.931Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/Server": {
- "modified": "2019-03-23T22:11:10.326Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Synchronous": {
- "modified": "2019-03-18T21:45:24.621Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/Type": {
- "modified": "2019-03-23T22:18:38.339Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/URI": {
- "modified": "2020-11-15T10:56:07.712Z",
- "contributors": [
- "realspirit2017"
- ]
- },
- "Glossary/URL": {
- "modified": "2019-12-23T12:39:40.086Z",
- "contributors": [
- "Uemmra3",
- "Rocker"
- ]
- },
- "Glossary/Viewport": {
- "modified": "2019-10-05T05:58:15.650Z",
- "contributors": [
- "ayugioh2003"
- ]
- },
- "Glossary/W3C": {
- "modified": "2019-03-23T22:28:08.358Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/WebExtensions": {
- "modified": "2019-03-23T22:07:09.589Z",
- "contributors": [
- "jmlntw"
- ]
- },
- "Glossary/WebSockets": {
- "modified": "2019-03-18T21:31:09.770Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/array": {
- "modified": "2019-03-23T22:15:27.805Z",
- "contributors": [
- "iigmir",
- "jackblackevo",
- "vintif"
- ]
- },
- "Glossary/buffer": {
- "modified": "2019-03-18T21:44:30.702Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/cacheable": {
- "modified": "2019-03-18T21:43:19.964Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/character_encoding": {
- "modified": "2019-03-23T22:15:28.906Z",
- "contributors": [
- "jackblackevo",
- "AfricanxAdmiral"
- ]
- },
- "Glossary/character_set": {
- "modified": "2019-04-04T12:54:28.232Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/event": {
- "modified": "2019-03-18T21:43:22.669Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/firewall": {
- "modified": "2019-03-18T21:43:50.549Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/hash": {
- "modified": "2019-03-18T21:42:32.887Z",
- "contributors": [
- "Rocker"
- ]
- },
- "Glossary/jQuery": {
- "modified": "2020-05-23T15:08:04.982Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/jpeg": {
- "modified": "2019-03-18T21:44:36.385Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Glossary/property": {
- "modified": "2019-03-23T22:31:19.880Z",
- "contributors": [
- "iigmir",
- "MashKao",
- "Jeremie"
- ]
- },
- "Glossary/property/JavaScript": {
- "modified": "2019-03-23T22:31:19.578Z",
- "contributors": [
- "iigmir",
- "marktwtn",
- "jackblackevo"
- ]
- },
- "Glossary/routers": {
- "modified": "2020-02-27T00:38:00.019Z",
- "contributors": [
- "iigmir"
- ]
- },
- "HTML5_Cross_Browser_Polyfills": {
- "modified": "2019-01-16T13:58:45.342Z",
- "contributors": [
- "Kennyluck"
- ]
- },
- "Learn": {
- "modified": "2020-08-04T10:38:00.665Z",
- "contributors": [
- "did1335",
- "SphinxKnight",
- "ayugioh2003",
- "svarlamov",
- "xerviam",
- "iigmir",
- "SecondSpirit",
- "afutseng",
- "MashKao",
- "jackblackevo",
- "kscarfone"
- ]
- },
- "Learn/Accessibility": {
- "modified": "2020-07-16T22:40:01.949Z",
- "contributors": [
- "iigmir",
- "hadleyel"
- ]
- },
- "Learn/Accessibility/Mobile": {
- "modified": "2020-07-16T22:40:33.645Z",
- "contributors": [
- "sophie.wulala"
- ]
- },
- "Learn/Accessibility/WAI-ARIA_basics": {
- "modified": "2020-07-16T22:40:24.926Z",
- "contributors": [
- "iigmir",
- "li-liam"
- ]
- },
- "Learn/Accessibility/What_is_accessibility": {
- "modified": "2020-07-16T22:40:07.534Z",
- "contributors": [
- "ballfish",
- "iigmir"
- ]
- },
- "Learn/CSS": {
- "modified": "2020-09-05T00:19:05.982Z",
- "contributors": [
- "ddtet",
- "anniesnoopymd",
- "PtCt",
- "jackblackevo"
- ]
- },
- "Learn/CSS/CSS_layout": {
- "modified": "2020-07-16T22:26:35.040Z",
- "contributors": [
- "xuan0123",
- "xerviam",
- "Rocker",
- "jackblackevo",
- "georgelin422"
- ]
- },
- "Learn/CSS/First_steps": {
- "modified": "2020-10-04T12:16:14.514Z",
- "contributors": [
- "ddtet",
- "yungfen8911",
- "chrisdavidmills"
- ]
- },
- "Learn/CSS/First_steps/Getting_started": {
- "modified": "2020-11-15T11:55:24.776Z",
- "contributors": [
- "ssuhung",
- "ddtet"
- ]
- },
- "Learn/CSS/First_steps/How_CSS_works": {
- "modified": "2020-07-16T22:28:02.731Z",
- "contributors": [
- "JamesGoler"
- ]
- },
- "Learn/CSS/First_steps/What_is_CSS": {
- "modified": "2020-10-15T22:34:12.625Z",
- "contributors": [
- "ddtet"
- ]
- },
- "Learn/CSS/Styling_text": {
- "modified": "2020-07-16T22:26:01.676Z",
- "contributors": [
- "jackblackevo",
- "xuan0123"
- ]
- },
- "Learn/Common_questions": {
- "modified": "2020-07-16T22:35:28.440Z",
- "contributors": [
- "stephaniehobson"
- ]
- },
- "Learn/Common_questions/What_is_a_web_server": {
- "modified": "2020-07-16T22:35:32.438Z",
- "contributors": [
- "LanKuDot",
- "iigmir"
- ]
- },
- "Learn/Getting_started_with_the_web": {
- "modified": "2020-07-16T22:33:57.918Z",
- "contributors": [
- "egg734631",
- "jackblackevo",
- "chrisdavidmills",
- "2238",
- "SecondSpirit",
- "MashKao",
- "afutseng",
- "lynn456",
- "arbatskiy"
- ]
- },
- "Learn/Getting_started_with_the_web/CSS_basics": {
- "modified": "2020-08-01T04:32:20.530Z",
- "contributors": [
- "wslisam",
- "jpliu24",
- "seanhung-isu",
- "nighet",
- "Paul0302",
- "jjyaung",
- "thegaze77",
- "eric211924",
- "e7822501",
- "yuwei2s",
- "Ruiyuan34",
- "iigmir",
- "Chintears",
- "montagne3653",
- "freddy50806",
- "YuCheng",
- "ffturtle"
- ]
- },
- "Learn/Getting_started_with_the_web/Dealing_with_files": {
- "modified": "2020-07-16T22:34:39.964Z",
- "contributors": [
- "jackblackevo",
- "SecondSpirit"
- ]
- },
- "Learn/Getting_started_with_the_web/HTML_basics": {
- "modified": "2020-07-16T22:34:54.083Z",
- "contributors": [
- "nighet",
- "jackblackevo",
- "YuCheng",
- "iigmir",
- "weichi",
- "shinglyu"
- ]
- },
- "Learn/Getting_started_with_the_web/How_the_Web_works": {
- "modified": "2020-10-14T07:48:44.116Z",
- "contributors": [
- "RocketSH",
- "no249a002",
- "iigmir"
- ]
- },
- "Learn/Getting_started_with_the_web/Installing_basic_software": {
- "modified": "2020-07-16T22:34:12.856Z",
- "contributors": [
- "iigmir",
- "jackblackevo",
- "SecondSpirit",
- "MashKao"
- ]
- },
- "Learn/Getting_started_with_the_web/JavaScript_basics": {
- "modified": "2020-07-16T22:35:18.923Z",
- "contributors": [
- "rayainman",
- "jyzeng17",
- "Ice1187",
- "Jyo238",
- "Fangfeidenimen",
- "jackblackevo",
- "Chiahong",
- "YuCheng",
- "victor0801x",
- "VioletVivirand"
- ]
- },
- "Learn/Getting_started_with_the_web/Publishing_your_website": {
- "modified": "2020-07-16T22:34:30.592Z",
- "contributors": [
- "jyzeng17",
- "iigmir",
- "MLJ"
- ]
- },
- "Learn/Getting_started_with_the_web/What_will_your_website_look_like": {
- "modified": "2020-07-16T22:34:21.648Z",
- "contributors": [
- "jackblackevo",
- "iosos",
- "SecondSpirit",
- "MashKao"
- ]
- },
- "Learn/HTML": {
- "modified": "2020-11-08T04:39:50.729Z",
- "contributors": [
- "ssuhung",
- "NekoChan-2851",
- "nighet",
- "jjyaung",
- "ShengHaoLo",
- "sbeing",
- "BbsonLin",
- "jian5753",
- "chrisdavidmills"
- ]
- },
- "Learn/HTML/Forms": {
- "modified": "2020-07-16T22:21:03.096Z",
- "contributors": [
- "nighet",
- "chrisdavidmills",
- "iigmir",
- "Shiyou",
- "saka6333",
- "jcchang",
- "sjmiles"
- ]
- },
- "Learn/HTML/Forms/How_to_structure_an_HTML_form": {
- "modified": "2020-07-16T22:21:16.863Z",
- "contributors": [
- "iigmir",
- "anniesnoopymd",
- "chrisdavidmills",
- "Sheppy",
- "kitty-5420"
- ]
- },
- "Learn/HTML/Howto": {
- "modified": "2020-07-16T22:22:31.553Z",
- "contributors": [
- "fish0819",
- "iigmir",
- "abler0122"
- ]
- },
- "Learn/HTML/Introduction_to_HTML": {
- "modified": "2020-10-24T16:53:35.988Z",
- "contributors": [
- "NekoChan-2851",
- "JamesGoler",
- "pccisme",
- "jian5753",
- "JunliXiao",
- "yvonne6344",
- "jackblackevo",
- "akccakcctw",
- "SecondSpirit"
- ]
- },
- "Learn/HTML/Introduction_to_HTML/Advanced_text_formatting": {
- "modified": "2020-07-16T22:24:00.731Z",
- "contributors": [
- "RichKe"
- ]
- },
- "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks": {
- "modified": "2020-07-16T22:23:49.670Z",
- "contributors": [
- "JamesGoler"
- ]
- },
- "Learn/HTML/Introduction_to_HTML/Document_and_website_structure": {
- "modified": "2020-09-26T12:33:20.817Z",
- "contributors": [
- "CoderAmutu",
- "did1335"
- ]
- },
- "Learn/HTML/Introduction_to_HTML/Getting_started": {
- "modified": "2020-07-16T22:23:10.341Z",
- "contributors": [
- "JamesGoler",
- "Jkywang",
- "egg734631",
- "freddy50806",
- "MLJ",
- "jwhitlock"
- ]
- },
- "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": {
- "modified": "2020-07-16T22:23:41.134Z",
- "contributors": [
- "ReneeZhou",
- "iigmir",
- "alkalineW"
- ]
- },
- "Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": {
- "modified": "2020-07-16T22:23:27.064Z",
- "contributors": [
- "kutshaitsi",
- "JamesGoler",
- "andreswang26",
- "eric211924",
- "MLJ"
- ]
- },
- "Learn/HTML/Multimedia_and_embedding": {
- "modified": "2020-07-16T22:24:31.157Z",
- "contributors": [
- "zackjtl",
- "clamser0402",
- "CATITANK"
- ]
- },
- "Learn/HTML/Multimedia_and_embedding/HTML中的圖片": {
- "modified": "2020-07-20T05:13:25.235Z",
- "contributors": [
- "zackjtl",
- "LeonchanTW"
- ]
- },
- "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": {
- "modified": "2020-09-27T07:40:33.292Z",
- "contributors": [
- "mohammad92asghari"
- ]
- },
- "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content/Test_your_skills:_Multimedia_and_embedding": {
- "modified": "2020-09-27T08:06:04.019Z",
- "contributors": [
- "CoderAmutu"
- ]
- },
- "Learn/HTML/Multimedia_and_embedding/其他_嵌入_技術": {
- "modified": "2020-09-27T08:20:57.717Z",
- "contributors": [
- "CoderAmutu"
- ]
- },
- "Learn/HTML/Tables": {
- "modified": "2020-07-16T22:25:16.897Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Learn/HTML/Tables/基礎": {
- "modified": "2020-11-25T04:21:37.312Z",
- "contributors": [
- "123milkcat",
- "allchangechallenge"
- ]
- },
- "Learn/How_to_contribute": {
- "modified": "2020-07-16T22:33:48.192Z",
- "contributors": [
- "SphinxKnight",
- "willynpi",
- "iigmir"
- ]
- },
- "Learn/JavaScript": {
- "modified": "2020-07-30T05:29:53.810Z",
- "contributors": [
- "klareh",
- "nighet",
- "ddtet",
- "xerviam",
- "MashKao",
- "flyinglimao",
- "fredliu16",
- "chrisdavidmills"
- ]
- },
- "Learn/JavaScript/Building_blocks": {
- "modified": "2020-07-16T22:31:11.353Z",
- "contributors": [
- "AlbertTien",
- "mdasinc",
- "mubiesam",
- "metismini",
- "ArchieAtOrigins"
- ]
- },
- "Learn/JavaScript/Building_blocks/Build_your_own_function": {
- "modified": "2020-07-16T22:31:32.052Z",
- "contributors": [
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/Building_blocks/Functions": {
- "modified": "2020-07-16T22:31:27.864Z",
- "contributors": [
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/Building_blocks/Image_gallery": {
- "modified": "2020-07-16T22:31:45.353Z",
- "contributors": [
- "richblack"
- ]
- },
- "Learn/JavaScript/Building_blocks/Looping_code": {
- "modified": "2020-11-25T23:18:26.484Z",
- "contributors": [
- "aeolusg38",
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/Building_blocks/Return_values": {
- "modified": "2020-07-16T22:31:35.396Z",
- "contributors": [
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/Building_blocks/conditionals": {
- "modified": "2020-07-16T22:31:17.163Z",
- "contributors": [
- "alexmav04",
- "Sumendik",
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/Client-side_web_APIs": {
- "modified": "2020-07-16T22:32:43.326Z",
- "contributors": [
- "tangerine1202",
- "nykevinwong",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/Client-side_web_APIs/Manipulating_documents": {
- "modified": "2020-07-16T22:32:50.717Z",
- "contributors": [
- "BbsonLin"
- ]
- },
- "Learn/JavaScript/First_steps": {
- "modified": "2020-10-14T02:07:07.650Z",
- "contributors": [
- "RocketSH",
- "nighet",
- "ddtet",
- "BbsonLin",
- "Rocker",
- "lightyen",
- "michaellee8",
- "lele99123",
- "jackblackevo",
- "SoniaBeesee"
- ]
- },
- "Learn/JavaScript/First_steps/A_first_splash": {
- "modified": "2020-10-13T14:09:02.521Z",
- "contributors": [
- "RocketSH",
- "hmysjiang",
- "Hungyun",
- "SphinxKnight",
- "dorakao0408",
- "mhuang211",
- "lebniz",
- "RishYang",
- "egg734631",
- "mubiesam",
- "iron0336",
- "jackblackevo",
- "yuwei2s"
- ]
- },
- "Learn/JavaScript/First_steps/Arrays": {
- "modified": "2020-10-29T03:57:18.783Z",
- "contributors": [
- "Winston_Sung",
- "lebniz",
- "jackblackevo",
- "iigmir",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/First_steps/Math": {
- "modified": "2020-11-25T05:35:33.086Z",
- "contributors": [
- "123milkcat",
- "RocketSH",
- "hanson931101",
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/First_steps/Silly_story_generator": {
- "modified": "2020-10-12T07:22:32.955Z",
- "contributors": [
- "RocketSH",
- "jackblackevo",
- "tonyyoung3",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/First_steps/Strings": {
- "modified": "2020-11-23T07:01:24.301Z",
- "contributors": [
- "123milkcat",
- "Winston_Sung",
- "RocketSH",
- "alexmav04",
- "lebniz",
- "jackblackevo",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/First_steps/Useful_string_methods": {
- "modified": "2020-10-14T02:47:53.938Z",
- "contributors": [
- "RocketSH",
- "alexmav04",
- "tangerine1202",
- "jackblackevo",
- "JohnKeng",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/First_steps/Variables": {
- "modified": "2020-10-14T02:32:59.320Z",
- "contributors": [
- "RocketSH",
- "docrob0t",
- "SiderealArt",
- "Playpaper",
- "jackblackevo",
- "cyanchu",
- "mubiesam"
- ]
- },
- "Learn/JavaScript/First_steps/What_is_JavaScript": {
- "modified": "2020-11-24T13:14:38.112Z",
- "contributors": [
- "docrob0t",
- "RocketSH",
- "ddtet",
- "hmysjiang",
- "nighet",
- "bl1zz4rd",
- "jrvstw",
- "RishYang",
- "mhlemonh",
- "laichenghuan",
- "Rocker",
- "MLJ"
- ]
- },
- "Learn/JavaScript/First_steps/What_went_wrong": {
- "modified": "2020-10-16T09:05:43.185Z",
- "contributors": [
- "RocketSH",
- "hmysjiang",
- "lebniz",
- "tonyyoung3",
- "benjaminchen"
- ]
- },
- "Learn/JavaScript/Howto": {
- "modified": "2020-07-16T22:33:12.146Z",
- "contributors": [
- "jackblackevo",
- "DoJQuadArts"
- ]
- },
- "Learn/JavaScript/Objects": {
- "modified": "2020-07-16T22:31:54.909Z",
- "contributors": [
- "iigmir",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/Adding_bouncing_balls_features": {
- "modified": "2020-07-16T22:32:36.968Z",
- "contributors": [
- "BobChao",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/Basics": {
- "modified": "2020-07-16T22:32:03.311Z",
- "contributors": [
- "hunterflag",
- "tangerine1202",
- "sss63232",
- "richblack",
- "iigmir",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/Inheritance": {
- "modified": "2020-07-16T22:32:17.083Z",
- "contributors": [
- "tangerine1202",
- "Yang09701194",
- "roycrxtw",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/JSON": {
- "modified": "2020-07-16T22:32:30.018Z",
- "contributors": [
- "roycrxtw",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/Object-oriented_JS": {
- "modified": "2020-07-16T22:32:09.821Z",
- "contributors": [
- "DahisC",
- "tangerine1202",
- "iigmir",
- "cjchng",
- "roycrxtw",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/Object_building_practice": {
- "modified": "2020-07-16T22:32:33.523Z",
- "contributors": [
- "comicat",
- "roycrxtw",
- "MashKao"
- ]
- },
- "Learn/JavaScript/Objects/Object_prototypes": {
- "modified": "2020-07-16T22:32:23.310Z",
- "contributors": [
- "tangerine1202",
- "roycrxtw",
- "MashKao"
- ]
- },
- "Learn/Performance": {
- "modified": "2020-07-16T22:40:40.169Z",
- "contributors": [
- "estelle"
- ]
- },
- "Learn/Performance/多媒體": {
- "modified": "2020-07-16T22:40:44.626Z",
- "contributors": [
- "b84330808"
- ]
- },
- "Learn/Server-side": {
- "modified": "2020-07-16T22:36:04.016Z",
- "contributors": [
- "iigmir",
- "rsidorov"
- ]
- },
- "Learn/Server-side/Django": {
- "modified": "2020-07-16T22:36:37.414Z",
- "contributors": [
- "iigmir",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Admin_site": {
- "modified": "2020-07-16T22:37:06.543Z",
- "contributors": [
- "condal36",
- "Bong99",
- "Yuehua-Liu",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Authentication": {
- "modified": "2020-07-22T04:08:45.043Z",
- "contributors": [
- "zcecil",
- "condal36",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Deployment": {
- "modified": "2020-07-16T22:37:43.781Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Forms": {
- "modified": "2020-11-13T23:21:29.124Z",
- "contributors": [
- "joshra",
- "condal36",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Generic_views": {
- "modified": "2020-11-13T03:46:00.269Z",
- "contributors": [
- "joshra",
- "hsiaocy",
- "a27936343",
- "AlonChen",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Home_page": {
- "modified": "2020-07-16T22:37:12.554Z",
- "contributors": [
- "condal36",
- "zenuie",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Introduction": {
- "modified": "2020-07-16T22:36:42.822Z",
- "contributors": [
- "SphinxKnight",
- "tan800630",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Models": {
- "modified": "2020-10-03T02:04:47.327Z",
- "contributors": [
- "hsiaocy",
- "Yuehua-Liu",
- "Ajameomeo",
- "willynpi",
- "LeonH",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Sessions": {
- "modified": "2020-10-19T12:00:28.346Z",
- "contributors": [
- "hsiaocy",
- "condal36",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Testing": {
- "modified": "2020-07-16T22:37:39.988Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/Tutorial_local_library_website": {
- "modified": "2020-07-16T22:36:50.916Z",
- "contributors": [
- "willynpi",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/development_environment": {
- "modified": "2020-07-16T22:36:47.959Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/django_assessment_blog": {
- "modified": "2020-07-16T22:37:50.139Z",
- "contributors": [
- "willynpi",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/skeleton_website": {
- "modified": "2020-07-16T22:36:55.864Z",
- "contributors": [
- "Yuehua-Liu",
- "Ericchen159",
- "LeonH",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Django/web_application_security": {
- "modified": "2020-07-16T22:37:47.653Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs": {
- "modified": "2020-07-16T22:37:56.965Z",
- "contributors": [
- "iigmir",
- "tonyyoung3",
- "xxi511",
- "lol-russo"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data": {
- "modified": "2020-07-16T22:38:32.471Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Author_detail_page": {
- "modified": "2020-07-16T22:38:39.533Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page": {
- "modified": "2020-07-16T22:38:38.387Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge": {
- "modified": "2020-07-16T22:38:39.883Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": {
- "modified": "2020-07-16T22:38:37.189Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Book_detail_page": {
- "modified": "2020-07-16T22:38:39.240Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page": {
- "modified": "2020-07-16T22:38:36.489Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": {
- "modified": "2020-07-16T22:38:37.729Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": {
- "modified": "2020-07-16T22:38:38.850Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Home_page": {
- "modified": "2020-07-16T22:38:35.865Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": {
- "modified": "2020-07-16T22:38:35.227Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/Template_primer": {
- "modified": "2020-07-16T22:38:34.841Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async": {
- "modified": "2020-07-16T22:38:33.995Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Introduction": {
- "modified": "2020-09-27T06:14:07.664Z",
- "contributors": [
- "edward_hu",
- "edgar-chen",
- "xxi511"
- ]
- },
- "Learn/Server-side/Express_Nodejs/Tutorial_local_library_website": {
- "modified": "2020-07-16T22:38:17.846Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/deployment": {
- "modified": "2020-07-16T22:38:51.489Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/development_environment": {
- "modified": "2020-09-27T05:38:44.626Z",
- "contributors": [
- "chengzee",
- "edgar-chen",
- "xxi511"
- ]
- },
- "Learn/Server-side/Express_Nodejs/forms": {
- "modified": "2020-07-16T22:38:42.914Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/forms/Create_BookInstance_form": {
- "modified": "2020-07-16T22:38:46.419Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/forms/Create_author_form": {
- "modified": "2020-07-16T22:38:44.881Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/forms/Create_book_form": {
- "modified": "2020-07-16T22:38:45.325Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/forms/Create_genre_form": {
- "modified": "2020-07-16T22:38:44.086Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/forms/Delete_author_form": {
- "modified": "2020-07-16T22:38:46.873Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/mongoose": {
- "modified": "2020-09-28T05:01:32.342Z",
- "contributors": [
- "chengzee",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/routes": {
- "modified": "2020-07-16T22:38:29.382Z",
- "contributors": [
- "edgar-chen"
- ]
- },
- "Learn/Server-side/Express_Nodejs/skeleton_website": {
- "modified": "2020-09-28T00:50:58.875Z",
- "contributors": [
- "chengzee",
- "edgar-chen"
- ]
- },
- "Learn/Server-side/First_steps": {
- "modified": "2020-07-16T22:36:11.738Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Learn/Server-side/First_steps/介紹": {
- "modified": "2020-10-29T10:39:42.677Z",
- "contributors": [
- "JamesGoler",
- "Kun-Neng",
- "vivihenry",
- "frank030310"
- ]
- },
- "Learn/Tools_and_testing": {
- "modified": "2020-07-16T22:38:58.702Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Learn/Tools_and_testing/Client-side_JavaScript_frameworks": {
- "modified": "2020-07-16T22:39:34.178Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction": {
- "modified": "2020-11-18T23:19:28.135Z",
- "contributors": [
- "MerlinCute",
- "iigmir"
- ]
- },
- "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_todo_list_beginning": {
- "modified": "2020-11-10T07:16:31.083Z",
- "contributors": [
- "RocketSH"
- ]
- },
- "Learn/Tools_and_testing/Cross_browser_testing": {
- "modified": "2020-07-16T22:39:02.574Z",
- "contributors": [
- "wbamberg",
- "iigmir"
- ]
- },
- "Learn/Tools_and_testing/Cross_browser_testing/Automated_testing": {
- "modified": "2020-07-16T22:39:19.937Z",
- "contributors": [
- "wbamberg",
- "iigmir",
- "roycrxtw"
- ]
- },
- "MDN": {
- "modified": "2019-09-10T15:45:39.460Z",
- "contributors": [
- "SphinxKnight",
- "wbamberg",
- "jmlntw",
- "Jeremie",
- "SecondSpirit",
- "irvinfly",
- "Sheppy"
- ]
- },
- "MDN/About": {
- "modified": "2019-09-10T08:57:06.612Z",
- "contributors": [
- "SphinxKnight",
- "wbamberg",
- "jackblackevo",
- "Rocker",
- "jmlntw",
- "jswisher",
- "iigmir",
- "teoli",
- "young3578671",
- "irvinfly",
- "abs0986211642"
- ]
- },
- "MDN/Community": {
- "modified": "2020-05-24T00:35:19.952Z",
- "contributors": [
- "nighet",
- "wbamberg",
- "SecondSpirit",
- "ALiangLiang",
- "a0983891582",
- "king_5266"
- ]
- },
- "MDN/Community/論壇": {
- "modified": "2020-05-24T00:50:25.189Z",
- "contributors": [
- "nighet"
- ]
- },
- "MDN/Contribute": {
- "modified": "2019-01-16T19:25:51.462Z",
- "contributors": [
- "wbamberg",
- "iigmir",
- "irvinfly",
- "PHIDIAS",
- "emmanuelodenyire"
- ]
- },
- "MDN/Contribute/Getting_started": {
- "modified": "2020-09-30T17:17:21.724Z",
- "contributors": [
- "chrisdavidmills",
- "did1335",
- "ayugioh2003",
- "wbamberg",
- "Rocker",
- "iigmir",
- "jmlntw",
- "RichKe",
- "SecondSpirit",
- "ALiangLiang",
- "Seinlin",
- "BobChao",
- "anna.hp.huang",
- "zzzzpaul",
- "wildsky"
- ]
- },
- "MDN/Contribute/Howto": {
- "modified": "2019-01-16T20:46:52.062Z",
- "contributors": [
- "wbamberg",
- "ArvinH",
- "klez"
- ]
- },
- "MDN/Contribute/Howto/Create_an_MDN_account": {
- "modified": "2019-01-16T21:17:57.540Z",
- "contributors": [
- "wbamberg",
- "iigmir",
- "f19857466"
- ]
- },
- "MDN/Contribute/Howto/Create_and_edit_pages": {
- "modified": "2019-04-23T05:30:19.186Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "Shiyou",
- "Supaplex",
- "darksnidget",
- "SecondSpirit",
- "coby777"
- ]
- },
- "MDN/Contribute/Howto/Do_a_technical_review": {
- "modified": "2019-03-23T22:32:06.855Z",
- "contributors": [
- "wbamberg",
- "iigmir",
- "mgrn"
- ]
- },
- "MDN/Contribute/Howto/Do_an_editorial_review": {
- "modified": "2019-08-12T14:08:44.950Z",
- "contributors": [
- "ayugioh2003",
- "wbamberg",
- "jwhitlock",
- "flyinglimao"
- ]
- },
- "MDN/Contribute/Howto/Set_the_summary_for_a_page": {
- "modified": "2019-03-23T22:02:13.738Z",
- "contributors": [
- "wbamberg",
- "Astrid-GitHub",
- "RSyehann"
- ]
- },
- "MDN/Contribute/Howto/Tag": {
- "modified": "2019-03-23T22:54:12.092Z",
- "contributors": [
- "wbamberg",
- "yami"
- ]
- },
- "MDN/Contribute/Localize": {
- "modified": "2019-01-16T19:52:54.512Z",
- "contributors": [
- "wbamberg",
- "ballfish",
- "Sheppy"
- ]
- },
- "MDN/Contribute/Localize/Localization_projects": {
- "modified": "2019-03-18T21:23:31.576Z",
- "contributors": [
- "eyeccc"
- ]
- },
- "MDN/Contribute/Localize/Translating_pages": {
- "modified": "2019-09-03T06:12:45.102Z",
- "contributors": [
- "Lazine",
- "wbamberg",
- "iigmir",
- "irvinfly",
- "tai58585888@gmail.com",
- "bryanyou"
- ]
- },
- "MDN/Editor": {
- "modified": "2020-09-30T15:44:37.576Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "EatPizza311",
- "tpst1114",
- "jswisher"
- ]
- },
- "MDN/Editor/Basics": {
- "modified": "2020-09-30T15:44:37.917Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "tpst1114"
- ]
- },
- "MDN/Editor/Edit_box": {
- "modified": "2020-09-30T15:44:37.748Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "jackblackevo",
- "JoanneWu"
- ]
- },
- "MDN/Guidelines": {
- "modified": "2020-09-30T15:33:00.096Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "fscholz",
- "irvinfly",
- "Sheppy"
- ]
- },
- "MDN/Guidelines/Writing_style_guide": {
- "modified": "2020-09-30T15:33:00.614Z",
- "contributors": [
- "chrisdavidmills",
- "jswisher",
- "wbamberg",
- "flyinglimao",
- "iigmir",
- "fscholz",
- "BrianHuang",
- "irvinfly",
- "kiss007sky",
- "wildsky"
- ]
- },
- "MDN/Kuma": {
- "modified": "2019-09-06T03:30:44.825Z",
- "contributors": [
- "SphinxKnight",
- "wbamberg",
- "iigmir",
- "SecondSpirit",
- "a8040282",
- "Sheppy"
- ]
- },
- "MDN/Tools": {
- "modified": "2020-09-30T16:55:39.074Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "jackblackevo"
- ]
- },
- "MDN/Tools/KumaScript": {
- "modified": "2020-09-30T16:55:39.461Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "jackblackevo"
- ]
- },
- "MDN/Tools/KumaScript/Troubleshooting": {
- "modified": "2020-09-30T16:55:39.606Z",
- "contributors": [
- "chrisdavidmills",
- "wbamberg",
- "jackblackevo",
- "iigmir",
- "alk03073135"
- ]
- },
- "MDN_at_ten": {
- "modified": "2019-03-23T22:49:37.556Z",
- "contributors": [
- "alk03073135"
- ]
- },
- "Mozilla": {
- "modified": "2019-03-23T23:33:56.932Z",
- "contributors": [
- "iigmir",
- "ethertank"
- ]
- },
- "Mozilla/Add-ons": {
- "modified": "2019-03-18T21:08:19.815Z",
- "contributors": [
- "iigmir",
- "refrain4121",
- "a780201",
- "A520",
- "irvinfly",
- "softcup",
- "teoli",
- "petercpg",
- "wildsky",
- "Anomitro_Munshi"
- ]
- },
- "Mozilla/Add-ons/WebExtensions": {
- "modified": "2019-03-18T21:07:16.806Z",
- "contributors": [
- "jmlntw",
- "flyinglimao",
- "iigmir",
- "ALiangLiang",
- "wbamberg"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API": {
- "modified": "2019-11-26T22:20:23.005Z",
- "contributors": [
- "wbamberg",
- "Makyen"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/cookies": {
- "modified": "2020-10-15T21:56:17.735Z",
- "contributors": [
- "wbamberg",
- "BobChao"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/cookies/CookieStore": {
- "modified": "2020-10-15T21:56:17.810Z",
- "contributors": [
- "wbamberg",
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/cookies/OnChangedCause": {
- "modified": "2020-10-15T21:56:19.833Z",
- "contributors": [
- "wbamberg",
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/cookies/onChanged": {
- "modified": "2020-10-15T21:56:17.446Z",
- "contributors": [
- "wbamberg",
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/storage": {
- "modified": "2020-10-15T21:57:11.902Z",
- "contributors": [
- "wbamberg",
- "0711kps",
- "Makyen"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/storage/StorageArea": {
- "modified": "2020-10-15T22:02:56.746Z",
- "contributors": [
- "wbamberg",
- "chrisdavidmills"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get": {
- "modified": "2020-10-15T22:02:56.819Z",
- "contributors": [
- "wbamberg",
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/API/storage/local": {
- "modified": "2020-10-15T21:57:10.754Z",
- "contributors": [
- "wbamberg",
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension": {
- "modified": "2020-04-20T22:14:29.842Z",
- "contributors": [
- "eugene87222",
- "JamesGoler",
- "Dream_Rhythm",
- "a39705397",
- "start1119",
- "Kahiro"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/Content_scripts": {
- "modified": "2019-03-18T21:02:28.504Z",
- "contributors": [
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/Internationalization": {
- "modified": "2019-03-18T21:04:29.607Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/What_are_WebExtensions": {
- "modified": "2019-03-18T21:06:44.158Z",
- "contributors": [
- "honeymagico",
- "iigmir"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/Your_first_WebExtension": {
- "modified": "2019-03-18T21:06:51.398Z",
- "contributors": [
- "BobChao",
- "iigmir",
- "ALiangLiang"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/Your_second_WebExtension": {
- "modified": "2020-06-30T05:06:14.538Z",
- "contributors": [
- "LeonH",
- "eugene87222",
- "RishYang",
- "timmyshih",
- "Tamako"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/manifest.json": {
- "modified": "2020-10-15T22:06:23.531Z",
- "contributors": [
- "landylan",
- "wbamberg",
- "ExE-Boss"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/manifest.json/author": {
- "modified": "2020-10-15T22:06:20.756Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/manifest.json/background": {
- "modified": "2020-10-15T22:06:22.887Z",
- "contributors": [
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings": {
- "modified": "2020-10-15T22:06:22.269Z",
- "contributors": [
- "wbamberg",
- "ExE-Boss",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url": {
- "modified": "2020-10-15T22:06:22.588Z",
- "contributors": [
- "wbamberg",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/manifest.json/options_ui": {
- "modified": "2020-10-15T22:06:23.412Z",
- "contributors": [
- "wbamberg",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/user_interface": {
- "modified": "2019-04-23T05:01:36.148Z",
- "contributors": [
- "jackblackevo",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/user_interface/Browser_action": {
- "modified": "2019-04-23T05:01:57.057Z",
- "contributors": [
- "jackblackevo",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items": {
- "modified": "2019-04-23T05:04:17.208Z",
- "contributors": [
- "jackblackevo",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/user_interface/Sidebars": {
- "modified": "2019-04-23T05:02:36.826Z",
- "contributors": [
- "jackblackevo",
- "0711kps"
- ]
- },
- "Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels": {
- "modified": "2019-04-23T05:05:05.338Z",
- "contributors": [
- "jackblackevo",
- "0711kps"
- ]
- },
- "Mozilla/Developer_guide": {
- "modified": "2019-03-23T23:37:29.771Z",
- "contributors": [
- "jackblackevo",
- "pytseng",
- "tessarakt3"
- ]
- },
- "Mozilla/Developer_guide/Source_Code": {
- "modified": "2019-03-23T23:37:28.223Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "yehchge"
- ]
- },
- "Mozilla/Developer_guide/Source_Code/CVS": {
- "modified": "2019-04-21T11:31:24.705Z",
- "contributors": [
- "wangshi3"
- ]
- },
- "Mozilla/Firefox": {
- "modified": "2020-01-18T14:58:24.025Z",
- "contributors": [
- "leela52452",
- "SphinxKnight",
- "wbamberg",
- "wildsky",
- "RJ_Hsiao",
- "Flymok",
- "Prashanth"
- ]
- },
- "Mozilla/Firefox/Releases": {
- "modified": "2019-01-16T17:46:20.383Z",
- "contributors": [
- "wbamberg",
- "RJ_Hsiao",
- "ziyunfei"
- ]
- },
- "Mozilla/Firefox/Releases/1.5": {
- "modified": "2019-03-23T23:06:56.466Z",
- "contributors": [
- "wbamberg",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/10": {
- "modified": "2019-03-18T21:09:01.391Z",
- "contributors": [
- "fscholz",
- "wbamberg",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/11": {
- "modified": "2019-03-23T23:07:01.282Z",
- "contributors": [
- "wbamberg",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/2": {
- "modified": "2019-04-23T05:37:52.313Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "Josesun",
- "BobChao"
- ]
- },
- "Mozilla/Firefox/Releases/2/Adding_feed_readers_to_Firefox": {
- "modified": "2019-04-23T05:38:36.737Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "BobChao"
- ]
- },
- "Mozilla/Firefox/Releases/2/Security_changes": {
- "modified": "2019-04-23T05:38:12.921Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "SphinxKnight",
- "Sheppy",
- "Tobbytw",
- "BobChao"
- ]
- },
- "Mozilla/Firefox/Releases/3": {
- "modified": "2019-04-23T05:36:15.221Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "RJ_Hsiao",
- "teoli",
- "Mgjbot",
- "BobChao",
- "Coolcd"
- ]
- },
- "Mozilla/Firefox/Releases/3.6": {
- "modified": "2019-12-13T20:33:24.338Z",
- "contributors": [
- "wbamberg",
- "SphinxKnight",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/3/DOM_improvements": {
- "modified": "2019-04-23T05:36:36.182Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "teoli",
- "Coolcd"
- ]
- },
- "Mozilla/Firefox/Releases/35": {
- "modified": "2019-12-13T20:33:34.355Z",
- "contributors": [
- "wbamberg",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/4": {
- "modified": "2019-04-23T03:28:51.373Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "SphinxKnight",
- "Kennyluck",
- "BobChao"
- ]
- },
- "Mozilla/Firefox/Releases/4/Firefox_4_開發者新功能概覽": {
- "modified": "2019-04-23T03:28:52.095Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "SphinxKnight",
- "irvinfly",
- "teoli",
- "BobChao"
- ]
- },
- "Mozilla/Firefox/Releases/5": {
- "modified": "2019-03-23T23:06:59.171Z",
- "contributors": [
- "fscholz",
- "wbamberg",
- "iigmir",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/6": {
- "modified": "2019-11-21T00:43:15.848Z",
- "contributors": [
- "wbamberg",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/61": {
- "modified": "2019-01-17T03:05:55.327Z",
- "contributors": [
- "wbamberg",
- "BobChao"
- ]
- },
- "Mozilla/Firefox/Releases/68": {
- "modified": "2020-05-02T05:45:42.258Z",
- "contributors": [
- "abc52090241"
- ]
- },
- "Mozilla/Firefox/Releases/7": {
- "modified": "2019-04-23T05:35:00.727Z",
- "contributors": [
- "jackblackevo",
- "wbamberg",
- "RJ_Hsiao",
- "ethertank",
- "Sheppy"
- ]
- },
- "Mozilla/Firefox/Releases/8": {
- "modified": "2019-11-21T00:43:09.976Z",
- "contributors": [
- "wbamberg",
- "Sebastianz",
- "RJ_Hsiao"
- ]
- },
- "Mozilla/Firefox/Releases/9": {
- "modified": "2019-12-13T20:33:11.984Z",
- "contributors": [
- "wbamberg",
- "fscholz",
- "RJ_Hsiao"
- ]
- },
- "Python": {
- "modified": "2019-03-23T23:33:19.493Z",
- "contributors": [
- "garylai1990"
- ]
- },
- "SVG/Tutorial/Basic_Shapes": {
- "modified": "2019-04-23T03:35:52.184Z",
- "contributors": [
- "jackblackevo",
- "ethertank",
- "Dx.Yang"
- ]
- },
- "Tools": {
- "modified": "2020-07-16T22:44:20.103Z",
- "contributors": [
- "SphinxKnight",
- "wbamberg",
- "iigmir",
- "irvinfly",
- "Weicheng",
- "a0983891582",
- "kingt_tsai",
- "RJ_Hsiao",
- "iinnttoo",
- "yangshiqiangzy",
- "Somnlent",
- "benson.peng",
- "dinoop.p1"
- ]
- },
- "Tools/3D_View": {
- "modified": "2020-07-16T22:34:25.840Z",
- "contributors": [
- "Sean64",
- "Seafox"
- ]
- },
- "Tools/Browser_Toolbox": {
- "modified": "2020-07-16T22:35:56.020Z",
- "contributors": [
- "grapherd",
- "a0983891582",
- "jan730921"
- ]
- },
- "Tools/Debugger": {
- "modified": "2020-07-16T22:35:06.897Z",
- "contributors": [
- "iigmir",
- "wbamberg",
- "stephaniehobson",
- "yurenju",
- "MashKao"
- ]
- },
- "Tools/Debugger/How_to": {
- "modified": "2020-07-16T22:35:08.733Z",
- "contributors": [
- "wbamberg"
- ]
- },
- "Tools/Debugger/How_to/Open_the_debugger": {
- "modified": "2020-07-16T22:35:09.582Z",
- "contributors": [
- "marcus7777777"
- ]
- },
- "Tools/Debugger/How_to/Set_a_breakpoint": {
- "modified": "2020-07-16T22:35:10.325Z",
- "contributors": [
- "Kevinwuu"
- ]
- },
- "Tools/Firefox_OS_1.1_Simulator": {
- "modified": "2020-07-16T22:35:58.639Z",
- "contributors": [
- "MashKao"
- ]
- },
- "Tools/Network_Monitor": {
- "modified": "2020-07-16T22:35:32.529Z",
- "contributors": [
- "Fashaun"
- ]
- },
- "Tools/Page_Inspector": {
- "modified": "2020-07-16T22:34:30.099Z",
- "contributors": [
- "Fashaun",
- "iigmir",
- "jsx",
- "zmh_w",
- "RJ_Hsiao"
- ]
- },
- "Tools/Page_Inspector/How_to": {
- "modified": "2020-07-16T22:34:32.460Z",
- "contributors": [
- "iigmir",
- "sidgan"
- ]
- },
- "Tools/Page_Inspector/How_to/Examine_grid_layouts": {
- "modified": "2020-07-16T22:34:47.546Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Performance": {
- "modified": "2020-07-16T22:36:14.144Z",
- "contributors": [
- "irvinfly"
- ]
- },
- "Tools/Performance/Allocations": {
- "modified": "2020-07-16T22:36:22.457Z",
- "contributors": [
- "johnny801018"
- ]
- },
- "Tools/Performance/Frame_rate": {
- "modified": "2020-07-16T22:36:19.429Z",
- "contributors": [
- "black80887"
- ]
- },
- "Tools/Remote_Debugging": {
- "modified": "2020-07-16T22:35:38.579Z",
- "contributors": [
- "Keung162",
- "yhn5525"
- ]
- },
- "Tools/Remote_Debugging/Firefox_for_Android": {
- "modified": "2020-07-16T22:35:39.658Z",
- "contributors": [
- "king620707"
- ]
- },
- "Tools/Responsive_Design_Mode": {
- "modified": "2020-07-16T22:35:22.603Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Settings": {
- "modified": "2020-07-16T22:36:35.954Z",
- "contributors": [
- "abc52090241"
- ]
- },
- "Tools/Style_Editor": {
- "modified": "2020-07-16T22:35:02.268Z",
- "contributors": [
- "Kashashi",
- "bassam",
- "RJ_Hsiao"
- ]
- },
- "Tools/Web_Audio_Editor": {
- "modified": "2020-07-16T22:36:09.045Z",
- "contributors": [
- "Seafox"
- ]
- },
- "Tools/Web_Console": {
- "modified": "2020-07-16T22:34:10.824Z",
- "contributors": [
- "iigmir",
- "maybe",
- "bassam",
- "king_5266"
- ]
- },
- "Tools/Web_Console/Console_messages": {
- "modified": "2020-07-16T22:34:16.848Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Web_Console/Keyboard_shortcuts": {
- "modified": "2020-07-16T22:34:24.444Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Web_Console/Opening_the_Web_Console": {
- "modified": "2020-07-16T22:34:17.831Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Web_Console/Rich_output": {
- "modified": "2020-07-16T22:34:20.675Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Web_Console/Split_console": {
- "modified": "2020-07-16T22:34:21.659Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Tools/Web_Console/The_command_line_interpreter": {
- "modified": "2020-07-16T22:34:19.994Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web": {
- "modified": "2020-04-05T02:12:59.455Z",
- "contributors": [
- "nighet",
- "santoschenwbu",
- "ppdada",
- "Honesty1997",
- "xerviam",
- "willynpi",
- "sos418",
- "Luke.Liu",
- "tigercosmos",
- "iigmir",
- "irvinfly",
- "togorepqddj",
- "sailplaneTW",
- "Sheppy"
- ]
- },
- "Web/API": {
- "modified": "2019-03-23T23:28:12.241Z",
- "contributors": [
- "xerviam",
- "Demi_Yu",
- "jackblackevo",
- "iigmir",
- "teoli",
- "zhangmingyu",
- "Shiyou",
- "saka6333",
- "ethertank"
- ]
- },
- "Web/API/AbortController": {
- "modified": "2020-10-15T22:21:29.412Z",
- "contributors": [
- "Zhusee",
- "lixingnan200"
- ]
- },
- "Web/API/Ambient_Light_Events": {
- "modified": "2019-03-23T23:27:04.119Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "MashKao"
- ]
- },
- "Web/API/AnalyserNode": {
- "modified": "2019-03-23T22:40:29.435Z",
- "contributors": [
- "Sebastianz"
- ]
- },
- "Web/API/AnalyserNode/getByteFrequencyData": {
- "modified": "2019-03-23T22:40:34.425Z",
- "contributors": [
- "ALiangLiang",
- "wildsky"
- ]
- },
- "Web/API/AnimationEvent": {
- "modified": "2019-03-23T22:58:51.711Z",
- "contributors": [
- "iigmir",
- "saka6333",
- "fscholz"
- ]
- },
- "Web/API/AnimationEvent/initAnimationEvent": {
- "modified": "2019-03-23T22:58:50.823Z",
- "contributors": [
- "teoli",
- "cs047899"
- ]
- },
- "Web/API/Battery_Status_API": {
- "modified": "2019-03-23T23:27:02.640Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/Blob": {
- "modified": "2020-10-15T21:38:13.856Z",
- "contributors": [
- "jackblackevo",
- "flyinglimao",
- "changbenny",
- "alk03073135"
- ]
- },
- "Web/API/Blob/Blob": {
- "modified": "2019-03-23T22:31:20.533Z",
- "contributors": [
- "flyinglimao",
- "jackblackevo"
- ]
- },
- "Web/API/Blob/size": {
- "modified": "2019-03-23T22:05:46.891Z",
- "contributors": [
- "flyinglimao"
- ]
- },
- "Web/API/Blob/type": {
- "modified": "2019-03-23T22:05:38.897Z",
- "contributors": [
- "flyinglimao"
- ]
- },
- "Web/API/Body": {
- "modified": "2020-10-15T22:10:19.507Z",
- "contributors": [
- "RickBrown"
- ]
- },
- "Web/API/Body/json": {
- "modified": "2020-10-15T22:10:18.425Z",
- "contributors": [
- "xstar",
- "eyeccc"
- ]
- },
- "Web/API/CSSStyleDeclaration": {
- "modified": "2019-03-23T22:30:39.103Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/CSSStyleSheet": {
- "modified": "2019-03-23T22:04:52.980Z",
- "contributors": [
- "jpmedley"
- ]
- },
- "Web/API/CSSStyleSheet/insertRule": {
- "modified": "2019-03-23T22:04:53.326Z",
- "contributors": [
- "oooooo"
- ]
- },
- "Web/API/CSS_Object_Model": {
- "modified": "2019-03-23T22:48:37.625Z",
- "contributors": [
- "jackblackevo",
- "fscholz"
- ]
- },
- "Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements": {
- "modified": "2019-03-18T20:58:55.989Z",
- "contributors": [
- "SphinxKnight",
- "iigmir",
- "alk03073135"
- ]
- },
- "Web/API/CSS_Object_Model/Managing_screen_orientation": {
- "modified": "2019-03-23T23:25:59.570Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/CSS_Object_Model/Using_dynamic_styling_information": {
- "modified": "2019-03-23T22:20:10.346Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/CanvasRenderingContext2D": {
- "modified": "2019-03-23T22:19:40.312Z",
- "contributors": [
- "jsgao0",
- "jackblackevo"
- ]
- },
- "Web/API/CanvasRenderingContext2D/clearRect": {
- "modified": "2019-03-23T22:19:19.507Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Canvas_API": {
- "modified": "2019-03-24T00:16:12.599Z",
- "contributors": [
- "pig3629",
- "jackblackevo",
- "fscholz",
- "teoli",
- "elin",
- "ethertank",
- "dextra",
- "Kennyluck",
- "happysadman"
- ]
- },
- "Web/API/Canvas_API/Drawing_graphics_with_canvas": {
- "modified": "2019-03-23T23:13:40.314Z",
- "contributors": [
- "fscholz",
- "sailplaneTW"
- ]
- },
- "Web/API/Canvas_API/Tutorial": {
- "modified": "2019-03-18T20:36:19.502Z",
- "contributors": [
- "sheng-tai",
- "jackblackevo",
- "fscholz",
- "elin",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Advanced_animations": {
- "modified": "2019-03-23T22:03:12.070Z",
- "contributors": [
- "pig3629"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Applying_styles_and_colors": {
- "modified": "2019-10-10T16:48:11.045Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "Sebastianz",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Basic_animations": {
- "modified": "2019-03-23T23:26:07.752Z",
- "contributors": [
- "jackblackevo",
- "Lambert",
- "fscholz",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Basic_usage": {
- "modified": "2019-06-14T06:57:52.611Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Compositing": {
- "modified": "2019-03-23T23:14:05.379Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "elin",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Drawing_shapes": {
- "modified": "2019-03-23T23:27:29.654Z",
- "contributors": [
- "Snailpool",
- "jackblackevo",
- "fscholz",
- "foxbrush",
- "elin"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Drawing_text": {
- "modified": "2019-03-23T23:38:19.546Z",
- "contributors": [
- "jackblackevo",
- "sssdx"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Optimizing_canvas": {
- "modified": "2019-03-23T23:26:06.214Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas": {
- "modified": "2019-09-28T03:43:09.354Z",
- "contributors": [
- "pig3629"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Transformations": {
- "modified": "2019-10-10T16:48:13.377Z",
- "contributors": [
- "Chi-Hsin",
- "jackblackevo",
- "fscholz",
- "foxbrush"
- ]
- },
- "Web/API/Canvas_API/Tutorial/Using_images": {
- "modified": "2019-03-23T23:12:00.146Z",
- "contributors": [
- "aver803bath5",
- "jackblackevo",
- "fscholz",
- "foxbrush"
- ]
- },
- "Web/API/Channel_Messaging_API": {
- "modified": "2019-03-23T22:49:07.205Z",
- "contributors": [
- "foxbrush"
- ]
- },
- "Web/API/CharacterData": {
- "modified": "2019-03-23T22:30:36.282Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/ChildNode": {
- "modified": "2019-03-23T22:30:29.724Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Clients": {
- "modified": "2019-03-23T22:41:01.027Z",
- "contributors": [
- "xiantank"
- ]
- },
- "Web/API/ClipboardEvent": {
- "modified": "2019-03-23T22:31:08.942Z",
- "contributors": [
- "fscholz",
- "jackblackevo"
- ]
- },
- "Web/API/Console": {
- "modified": "2020-10-15T22:03:31.329Z",
- "contributors": [
- "Syihoy",
- "porfirion"
- ]
- },
- "Web/API/CustomEvent": {
- "modified": "2020-10-15T21:38:37.754Z",
- "contributors": [
- "fscholz",
- "jackblackevo",
- "Shiyou"
- ]
- },
- "Web/API/CustomEvent/CustomEvent": {
- "modified": "2020-10-15T21:38:44.505Z",
- "contributors": [
- "fscholz",
- "Shiyou"
- ]
- },
- "Web/API/DOMParser": {
- "modified": "2019-03-23T22:32:53.615Z",
- "contributors": [
- "kenttsai"
- ]
- },
- "Web/API/DOMString": {
- "modified": "2019-03-23T22:48:01.923Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/API/DOMTokenList": {
- "modified": "2019-03-23T22:30:39.565Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/DataTransfer": {
- "modified": "2019-03-23T22:31:19.371Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Detecting_device_orientation": {
- "modified": "2019-03-23T23:27:03.486Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/DeviceMotionEvent": {
- "modified": "2019-03-23T22:19:09.256Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/DeviceOrientationEvent": {
- "modified": "2019-03-23T22:19:19.032Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Document": {
- "modified": "2019-12-24T11:58:47.714Z",
- "contributors": [
- "ianchen0119",
- "jackblackevo",
- "Sheppy"
- ]
- },
- "Web/API/Document/body": {
- "modified": "2019-03-23T22:12:47.911Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Document/createDocumentFragment": {
- "modified": "2019-03-23T22:05:41.694Z",
- "contributors": [
- "tigercosmos"
- ]
- },
- "Web/API/Document/createElement": {
- "modified": "2019-06-17T10:27:41.514Z",
- "contributors": [
- "lebniz",
- "jackblackevo"
- ]
- },
- "Web/API/Document/createRange": {
- "modified": "2019-03-23T22:26:49.785Z",
- "contributors": [
- "jackblackevo",
- "bblurock"
- ]
- },
- "Web/API/Document/createTextNode": {
- "modified": "2019-03-23T22:30:00.695Z",
- "contributors": [
- "jackblackevo",
- "rikrik527"
- ]
- },
- "Web/API/Document/defaultView": {
- "modified": "2019-03-23T22:30:50.854Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Document/designMode": {
- "modified": "2019-03-23T22:04:59.325Z",
- "contributors": [
- "jmlntw"
- ]
- },
- "Web/API/Document/documentElement": {
- "modified": "2019-03-23T22:12:40.763Z",
- "contributors": [
- "Snailpool",
- "jackblackevo"
- ]
- },
- "Web/API/Document/execCommand": {
- "modified": "2020-10-15T21:57:17.621Z",
- "contributors": [
- "t7yang",
- "grain0217",
- "Mrscrystal",
- "tpst1114"
- ]
- },
- "Web/API/Document/forms": {
- "modified": "2019-03-23T22:31:24.583Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Document/getElementsByClassName": {
- "modified": "2019-03-23T22:49:19.402Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/API/Document/head": {
- "modified": "2019-03-23T22:48:02.502Z",
- "contributors": [
- "jackblackevo",
- "Shiyou"
- ]
- },
- "Web/API/Document/keyup_event": {
- "modified": "2019-04-18T03:52:12.531Z",
- "contributors": [
- "irenesmith",
- "fscholz",
- "JoanneWu"
- ]
- },
- "Web/API/Document/querySelector": {
- "modified": "2019-03-23T23:28:13.625Z",
- "contributors": [
- "jackblackevo",
- "jsx",
- "AshfaqHossain",
- "carl_tw"
- ]
- },
- "Web/API/Document/readyState": {
- "modified": "2019-06-11T20:31:50.296Z",
- "contributors": [
- "StanleyDing",
- "jackblackevo",
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/API/Document/registerElement": {
- "modified": "2019-03-18T21:37:29.505Z",
- "contributors": [
- "Chang-jui-hsuan"
- ]
- },
- "Web/API/Document/scroll_event": {
- "modified": "2019-04-08T09:05:58.589Z",
- "contributors": [
- "irenesmith",
- "fscholz",
- "dwatow"
- ]
- },
- "Web/API/Document/width": {
- "modified": "2019-03-23T22:21:01.741Z",
- "contributors": [
- "jackblackevo",
- "ginszme"
- ]
- },
- "Web/API/DocumentFragment": {
- "modified": "2019-03-23T22:30:16.185Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/DocumentType": {
- "modified": "2019-03-23T22:31:03.437Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Document_Object_Model": {
- "modified": "2019-03-24T00:03:11.264Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "irvinfly",
- "shyangs"
- ]
- },
- "Web/API/Document_Object_Model/Examples": {
- "modified": "2019-04-22T07:31:11.966Z",
- "contributors": [
- "jackblackevo",
- "PJCHENder"
- ]
- },
- "Web/API/Document_Object_Model/How_to_create_a_DOM_tree": {
- "modified": "2019-03-23T22:13:19.887Z",
- "contributors": [
- "seantw"
- ]
- },
- "Web/API/Document_Object_Model/Whitespace": {
- "modified": "2020-01-30T13:21:14.453Z",
- "contributors": [
- "chrisdavidmills",
- "jackblackevo",
- "ethertank",
- "Mgjbot",
- "BobChao"
- ]
- },
- "Web/API/Document_Object_Model/事件": {
- "modified": "2019-03-23T22:27:33.501Z",
- "contributors": [
- "H-W-Chang"
- ]
- },
- "Web/API/DragEvent": {
- "modified": "2020-02-27T01:36:51.610Z",
- "contributors": [
- "moojitsai",
- "hunterflag",
- "jackblackevo"
- ]
- },
- "Web/API/DragEvent/dataTransfer": {
- "modified": "2019-03-23T22:31:17.568Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Element": {
- "modified": "2019-03-18T21:08:56.279Z",
- "contributors": [
- "fscholz",
- "jackblackevo",
- "arhoads"
- ]
- },
- "Web/API/Element/attributes": {
- "modified": "2020-10-15T22:14:29.910Z",
- "contributors": [
- "WangHsuan"
- ]
- },
- "Web/API/Element/classList": {
- "modified": "2019-03-23T22:30:27.664Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Element/click_event": {
- "modified": "2019-03-18T20:47:28.188Z",
- "contributors": [
- "irenesmith",
- "fscholz",
- "Shiyou"
- ]
- },
- "Web/API/Element/clientHeight": {
- "modified": "2019-03-18T20:58:47.478Z",
- "contributors": [
- "SphinxKnight",
- "iigmir",
- "alk03073135"
- ]
- },
- "Web/API/Element/getAttribute": {
- "modified": "2019-03-23T22:25:57.546Z",
- "contributors": [
- "pdexx"
- ]
- },
- "Web/API/Element/innerHTML": {
- "modified": "2020-10-15T22:21:46.093Z",
- "contributors": [
- "itsems",
- "dayknchung"
- ]
- },
- "Web/API/Element/insertAdjacentHTML": {
- "modified": "2019-03-18T21:29:09.618Z",
- "contributors": [
- "akccakcctw",
- "NoobTW"
- ]
- },
- "Web/API/Element/querySelectorAll": {
- "modified": "2020-10-15T21:51:24.241Z",
- "contributors": [
- "wbamberg",
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/API/Element/scrollHeight": {
- "modified": "2019-03-18T20:59:06.982Z",
- "contributors": [
- "SphinxKnight",
- "iigmir",
- "alk03073135"
- ]
- },
- "Web/API/Element/scrollTop": {
- "modified": "2019-03-23T22:48:35.906Z",
- "contributors": [
- "iigmir",
- "alk03073135"
- ]
- },
- "Web/API/Element/touchcancel_event": {
- "modified": "2019-04-30T14:15:58.983Z",
- "contributors": [
- "wbamberg",
- "irenesmith",
- "fscholz",
- "jackblackevo",
- "james_yang"
- ]
- },
- "Web/API/ErrorEvent": {
- "modified": "2019-03-23T22:48:04.106Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/API/Event": {
- "modified": "2020-10-15T21:38:26.088Z",
- "contributors": [
- "jackblackevo",
- "Shiyou",
- "Sheppy"
- ]
- },
- "Web/API/Event/Comparison_of_Event_Targets": {
- "modified": "2019-03-23T22:31:03.921Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Event/Event": {
- "modified": "2020-10-15T21:38:36.713Z",
- "contributors": [
- "fscholz",
- "jackblackevo",
- "Shiyou"
- ]
- },
- "Web/API/Event/bubbles": {
- "modified": "2019-03-23T22:31:08.554Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Event/createEvent": {
- "modified": "2019-03-23T22:46:58.596Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/API/Event/currentTarget": {
- "modified": "2020-10-15T21:47:11.367Z",
- "contributors": [
- "iigmir",
- "jackblackevo"
- ]
- },
- "Web/API/Event/defaultPrevented": {
- "modified": "2019-03-23T22:31:01.738Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Event/eventPhase": {
- "modified": "2019-03-23T22:31:04.871Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Event/isTrusted": {
- "modified": "2019-03-23T22:31:07.261Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Event/preventDefault": {
- "modified": "2019-03-23T22:31:19.138Z",
- "contributors": [
- "SphinxKnight",
- "peter611122",
- "jackblackevo"
- ]
- },
- "Web/API/Event/stopImmediatePropagation": {
- "modified": "2019-03-23T22:48:43.662Z",
- "contributors": [
- "jackblackevo",
- "alk03073135"
- ]
- },
- "Web/API/Event/stopPropagation": {
- "modified": "2020-10-15T21:47:06.947Z",
- "contributors": [
- "jackblackevo",
- "iigmir"
- ]
- },
- "Web/API/Event/target": {
- "modified": "2019-03-23T22:30:57.189Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Event/timeStamp": {
- "modified": "2019-03-23T22:47:41.207Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/API/Event/type": {
- "modified": "2019-03-23T22:31:05.836Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/EventListener": {
- "modified": "2020-10-15T21:47:11.807Z",
- "contributors": [
- "t7yang",
- "tigercosmos",
- "jackblackevo"
- ]
- },
- "Web/API/EventTarget": {
- "modified": "2019-03-23T22:55:39.329Z",
- "contributors": [
- "jackblackevo",
- "Shiyou",
- "alk03073135",
- "teoli"
- ]
- },
- "Web/API/EventTarget/dispatchEvent": {
- "modified": "2019-03-23T22:48:01.449Z",
- "contributors": [
- "jackblackevo",
- "Shiyou"
- ]
- },
- "Web/API/EventTarget/removeEventListener": {
- "modified": "2019-03-23T22:31:15.037Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Fetch_API": {
- "modified": "2020-10-15T21:51:00.689Z",
- "contributors": [
- "Zhusee",
- "iigmir",
- "guAnsunyata",
- "jackblackevo"
- ]
- },
- "Web/API/Fetch_API/Using_Fetch": {
- "modified": "2020-10-15T22:05:15.481Z",
- "contributors": [
- "MollyHuang",
- "JamesGoler",
- "LeonClancy",
- "cakeant",
- "hms5232",
- "Tamako",
- "MOSapeizer"
- ]
- },
- "Web/API/File": {
- "modified": "2020-10-15T21:47:08.052Z",
- "contributors": [
- "pan93412",
- "jackblackevo"
- ]
- },
- "Web/API/File/File": {
- "modified": "2019-03-23T22:06:05.257Z",
- "contributors": [
- "Freeeeze",
- "lynn456"
- ]
- },
- "Web/API/File/Using_files_from_web_applications": {
- "modified": "2019-03-24T00:11:30.210Z",
- "contributors": [
- "chrisdavidmills",
- "PtCt",
- "y7t2ffff",
- "Shiyou",
- "alk03073135",
- "irvinfly",
- "Vdragon",
- "orinx"
- ]
- },
- "Web/API/File/fileName": {
- "modified": "2019-03-23T22:06:22.686Z",
- "contributors": [
- "lynn456"
- ]
- },
- "Web/API/FileList": {
- "modified": "2019-03-23T22:31:11.090Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/FileReader": {
- "modified": "2019-03-23T22:31:25.177Z",
- "contributors": [
- "jackblackevo",
- "iigmir"
- ]
- },
- "Web/API/FileReader/error": {
- "modified": "2019-03-23T22:06:18.177Z",
- "contributors": [
- "lynn456"
- ]
- },
- "Web/API/FileReader/readyState": {
- "modified": "2019-03-23T22:06:21.825Z",
- "contributors": [
- "lynn456"
- ]
- },
- "Web/API/FileSystem": {
- "modified": "2019-03-23T22:12:37.390Z",
- "contributors": [
- "abc225666"
- ]
- },
- "Web/API/File_Handle_API": {
- "modified": "2019-03-23T23:28:50.291Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/FormData": {
- "modified": "2019-03-23T23:35:14.599Z",
- "contributors": [
- "lowtan",
- "jackblackevo",
- "teoli",
- "Shiyou",
- "ziyunfei"
- ]
- },
- "Web/API/FormData/Using_FormData_Objects": {
- "modified": "2019-03-23T22:18:54.087Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/FormData/get": {
- "modified": "2019-03-23T22:25:04.671Z",
- "contributors": [
- "Snailpool"
- ]
- },
- "Web/API/Fullscreen_API": {
- "modified": "2019-03-23T22:49:47.826Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "lee011",
- "alk03073135"
- ]
- },
- "Web/API/GainNode": {
- "modified": "2019-03-23T22:20:28.411Z",
- "contributors": [
- "stdio2017"
- ]
- },
- "Web/API/GainNode/gain": {
- "modified": "2019-03-23T22:20:30.391Z",
- "contributors": [
- "stdio2017"
- ]
- },
- "Web/API/Geolocation": {
- "modified": "2019-03-23T22:36:12.802Z",
- "contributors": [
- "yachiehwu",
- "fscholz"
- ]
- },
- "Web/API/Geolocation/Using_geolocation": {
- "modified": "2019-12-15T11:33:42.173Z",
- "contributors": [
- "ayugioh2003",
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/Geolocation/clearWatch": {
- "modified": "2019-03-23T22:36:15.036Z",
- "contributors": [
- "yachiehwu"
- ]
- },
- "Web/API/Geolocation/getCurrentPosition": {
- "modified": "2019-03-23T22:36:11.405Z",
- "contributors": [
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/Geolocation/watchPosition": {
- "modified": "2019-03-23T22:36:17.405Z",
- "contributors": [
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates": {
- "modified": "2019-12-10T09:36:01.136Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu",
- "alphan_chen"
- ]
- },
- "Web/API/GeolocationCoordinates/accuracy": {
- "modified": "2019-12-10T09:36:00.979Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates/altitude": {
- "modified": "2019-12-10T09:36:00.968Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates/altitudeAccuracy": {
- "modified": "2019-12-10T09:36:01.111Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates/heading": {
- "modified": "2019-12-10T09:36:01.669Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates/latitude": {
- "modified": "2019-12-10T09:36:01.243Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates/longitude": {
- "modified": "2019-12-10T09:36:01.384Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationCoordinates/speed": {
- "modified": "2019-12-10T09:36:01.521Z",
- "contributors": [
- "chrisdavidmills",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationPosition": {
- "modified": "2019-12-10T11:05:17.271Z",
- "contributors": [
- "chrisdavidmills",
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationPosition/coords": {
- "modified": "2019-12-10T11:05:17.441Z",
- "contributors": [
- "chrisdavidmills",
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationPosition/timestamp": {
- "modified": "2019-12-10T11:05:17.586Z",
- "contributors": [
- "chrisdavidmills",
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationPositionError": {
- "modified": "2019-12-10T10:46:55.263Z",
- "contributors": [
- "chrisdavidmills",
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationPositionError/code": {
- "modified": "2019-12-10T10:46:55.437Z",
- "contributors": [
- "chrisdavidmills",
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/GeolocationPositionError/message": {
- "modified": "2019-12-10T10:46:55.457Z",
- "contributors": [
- "chrisdavidmills",
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/GlobalEventHandlers": {
- "modified": "2019-03-23T22:31:11.882Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/GlobalEventHandlers/onclick": {
- "modified": "2019-08-27T10:57:49.300Z",
- "contributors": [
- "StanleyDing"
- ]
- },
- "Web/API/GlobalEventHandlers/onclose": {
- "modified": "2019-03-23T22:13:45.424Z",
- "contributors": [
- "StanleyDing"
- ]
- },
- "Web/API/HTMLCanvasElement": {
- "modified": "2019-03-23T22:48:19.691Z",
- "contributors": [
- "jackblackevo",
- "alk03073135",
- "teoli"
- ]
- },
- "Web/API/HTMLCanvasElement/toDataURL": {
- "modified": "2019-03-23T22:48:22.609Z",
- "contributors": [
- "Ethan",
- "alk03073135"
- ]
- },
- "Web/API/HTMLCollection": {
- "modified": "2019-03-23T22:30:38.649Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLDataElement": {
- "modified": "2020-10-15T22:09:39.473Z",
- "contributors": [
- "qwer5656"
- ]
- },
- "Web/API/HTMLDocument": {
- "modified": "2019-03-23T22:30:43.077Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLElement": {
- "modified": "2019-03-23T22:30:28.594Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLElement/click": {
- "modified": "2019-03-23T22:19:07.322Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLElement/dataset": {
- "modified": "2019-03-18T21:38:45.005Z",
- "contributors": [
- "willynpi"
- ]
- },
- "Web/API/HTMLElement/lang": {
- "modified": "2019-03-23T22:12:53.096Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLElement/style": {
- "modified": "2019-03-23T22:20:07.015Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLFormElement": {
- "modified": "2019-03-23T22:18:52.812Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLFormElement/submit_event": {
- "modified": "2019-04-12T00:17:26.826Z",
- "contributors": [
- "estelle",
- "fscholz",
- "Shiyou"
- ]
- },
- "Web/API/HTMLImageElement": {
- "modified": "2019-03-23T22:18:52.559Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLInputElement": {
- "modified": "2019-03-23T22:30:03.357Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLMediaElement": {
- "modified": "2020-10-15T22:01:39.859Z",
- "contributors": [
- "fscholz",
- "jsgao0"
- ]
- },
- "Web/API/HTMLMediaElement/ratechange_event": {
- "modified": "2019-03-18T20:49:27.842Z",
- "contributors": [
- "estelle",
- "EvenC"
- ]
- },
- "Web/API/HTMLMediaElement/readyState": {
- "modified": "2020-10-15T22:07:42.605Z",
- "contributors": [
- "NoobTW"
- ]
- },
- "Web/API/HTMLSelectElement": {
- "modified": "2019-03-23T22:18:47.753Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLSelectElement/checkValidity": {
- "modified": "2019-03-23T22:10:09.837Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/HTMLSelectElement/setCustomValidity": {
- "modified": "2020-10-15T21:54:50.657Z",
- "contributors": [
- "iigmir",
- "jackblackevo"
- ]
- },
- "Web/API/HTML_Drag_and_Drop_API": {
- "modified": "2019-03-23T23:10:47.648Z",
- "contributors": [
- "ayhaadam",
- "iigmir",
- "jackblackevo",
- "teoli",
- "foxbrush"
- ]
- },
- "Web/API/HTML_Drag_and_Drop_API/Drag_operations": {
- "modified": "2019-03-23T23:10:36.835Z",
- "contributors": [
- "oooooo",
- "jackblackevo",
- "foxbrush"
- ]
- },
- "Web/API/History": {
- "modified": "2019-03-23T22:06:32.333Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/History_API": {
- "modified": "2019-05-23T03:21:29.855Z",
- "contributors": [
- "SphinxKnight",
- "KatsuragiCSL",
- "jackblackevo",
- "changbenny",
- "rexct",
- "irvinfly",
- "Klern",
- "Sheppy",
- "ChiLiJung"
- ]
- },
- "Web/API/IDBDatabase": {
- "modified": "2019-03-23T22:39:46.666Z",
- "contributors": [
- "ALiangLiang"
- ]
- },
- "Web/API/IndexedDB_API": {
- "modified": "2019-03-23T23:34:48.559Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "foxbrush",
- "MashKao",
- "ethertank",
- "princetoad@gmail.com"
- ]
- },
- "Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB": {
- "modified": "2019-03-18T20:39:41.131Z",
- "contributors": [
- "choznerol",
- "jackblackevo",
- "birdca",
- "foxbrush",
- "thomaschen"
- ]
- },
- "Web/API/IndexedDB_API/Using_IndexedDB": {
- "modified": "2019-06-26T04:56:24.502Z",
- "contributors": [
- "jackblackevo",
- "foxbrush"
- ]
- },
- "Web/API/KeyboardEvent": {
- "modified": "2019-03-18T21:09:08.334Z",
- "contributors": [
- "fscholz",
- "wbamberg",
- "Shiyou"
- ]
- },
- "Web/API/KeyboardEvent/KeyboardEvent": {
- "modified": "2019-03-23T22:47:21.168Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/API/MediaQueryList": {
- "modified": "2019-03-23T22:56:00.808Z",
- "contributors": [
- "foxbrush"
- ]
- },
- "Web/API/MediaSource": {
- "modified": "2020-10-15T21:52:20.197Z",
- "contributors": [
- "aChinKaiWu"
- ]
- },
- "Web/API/MediaSource/MediaSource": {
- "modified": "2019-03-23T22:17:49.071Z",
- "contributors": [
- "aChinKaiWu"
- ]
- },
- "Web/API/MediaSource/activeSourceBuffers": {
- "modified": "2019-03-23T22:17:50.588Z",
- "contributors": [
- "aChinKaiWu"
- ]
- },
- "Web/API/MediaSource/duration": {
- "modified": "2019-03-23T22:17:52.088Z",
- "contributors": [
- "aChinKaiWu"
- ]
- },
- "Web/API/MediaSource/readyState": {
- "modified": "2019-03-23T22:17:05.691Z",
- "contributors": [
- "aChinKaiWu"
- ]
- },
- "Web/API/Media_Streams_API": {
- "modified": "2020-11-05T04:25:49.611Z",
- "contributors": [
- "SphinxKnight",
- "yckevin1130"
- ]
- },
- "Web/API/MouseEvent": {
- "modified": "2019-03-23T22:19:36.683Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/MutationObserver": {
- "modified": "2019-03-23T22:39:23.098Z",
- "contributors": [
- "Petingo",
- "ALiangLiang"
- ]
- },
- "Web/API/NamedNodeMap": {
- "modified": "2019-03-23T22:30:37.384Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Navigator": {
- "modified": "2019-03-23T22:36:11.927Z",
- "contributors": [
- "iigmir",
- "jackblackevo",
- "teoli"
- ]
- },
- "Web/API/Navigator/geolocation": {
- "modified": "2019-03-23T22:36:10.122Z",
- "contributors": [
- "yachiehwu",
- "alphan_chen"
- ]
- },
- "Web/API/Navigator/registerProtocolHandler": {
- "modified": "2019-03-23T22:01:47.891Z",
- "contributors": [
- "chrisdavidmills"
- ]
- },
- "Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers": {
- "modified": "2019-03-23T23:51:06.175Z",
- "contributors": [
- "chrisdavidmills",
- "teoli",
- "Coolcd"
- ]
- },
- "Web/API/NavigatorOnLine": {
- "modified": "2019-03-23T22:02:07.853Z",
- "contributors": [
- "chrisdavidmills"
- ]
- },
- "Web/API/NavigatorOnLine/Online_and_offline_events": {
- "modified": "2019-03-23T23:51:04.713Z",
- "contributors": [
- "chrisdavidmills",
- "teoli",
- "Coolcd"
- ]
- },
- "Web/API/Network_Information_API": {
- "modified": "2019-03-23T23:26:00.923Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/Node": {
- "modified": "2019-03-23T22:31:01.035Z",
- "contributors": [
- "jackblackevo",
- "Sebastianz"
- ]
- },
- "Web/API/Node/childNodes": {
- "modified": "2019-03-23T22:12:04.783Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Node/cloneNode": {
- "modified": "2019-03-23T22:18:53.920Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Node/innerText": {
- "modified": "2019-03-23T22:12:44.697Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Node/insertBefore": {
- "modified": "2020-10-15T22:10:04.295Z",
- "contributors": [
- "willynpi"
- ]
- },
- "Web/API/Node/nodeName": {
- "modified": "2019-03-23T22:12:43.285Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Node/nodeType": {
- "modified": "2019-03-23T22:30:58.367Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Node/ownerDocument": {
- "modified": "2019-03-23T22:30:38.954Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Node/removeChild": {
- "modified": "2020-10-15T22:20:11.215Z",
- "contributors": [
- "ginszme",
- "lebniz"
- ]
- },
- "Web/API/Node/textContent": {
- "modified": "2019-03-23T22:30:14.613Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/NodeList": {
- "modified": "2019-03-23T22:30:29.129Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/NonDocumentTypeChildNode": {
- "modified": "2019-03-23T22:30:38.352Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Notifications_API": {
- "modified": "2020-04-21T06:01:14.944Z",
- "contributors": [
- "kinlish",
- "jackblackevo"
- ]
- },
- "Web/API/Notifications_API/Using_the_Notifications_API": {
- "modified": "2019-03-23T23:25:54.456Z",
- "contributors": [
- "SiderealArt",
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/ParentNode": {
- "modified": "2019-12-24T08:07:24.128Z",
- "contributors": [
- "ianchen0119",
- "jackblackevo"
- ]
- },
- "Web/API/ParentNode/children": {
- "modified": "2019-03-23T22:12:04.488Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/ParentNode/firstElementChild": {
- "modified": "2020-10-15T22:25:38.862Z",
- "contributors": [
- "ianchen0119"
- ]
- },
- "Web/API/PaymentRequest": {
- "modified": "2020-10-15T22:13:15.817Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/API/Payment_Request_API": {
- "modified": "2020-10-15T22:17:10.641Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/API/Performance": {
- "modified": "2020-10-15T22:10:19.285Z",
- "contributors": [
- "fscholz",
- "jasonslyvia"
- ]
- },
- "Web/API/Performance.timing": {
- "modified": "2020-10-15T21:29:18.100Z",
- "contributors": [
- "fscholz",
- "BobChao"
- ]
- },
- "Web/API/Pointer_Lock_API": {
- "modified": "2019-03-23T23:21:42.932Z",
- "contributors": [
- "fscholz",
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/PositionOptions": {
- "modified": "2019-03-23T22:36:10.505Z",
- "contributors": [
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/PositionOptions/enableHighAccuracy": {
- "modified": "2019-03-23T22:36:14.585Z",
- "contributors": [
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/PositionOptions/maximumAge": {
- "modified": "2019-03-23T22:36:18.389Z",
- "contributors": [
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/PositionOptions/timeout": {
- "modified": "2019-03-23T22:36:20.985Z",
- "contributors": [
- "alphan_chen",
- "yachiehwu"
- ]
- },
- "Web/API/ProgressEvent": {
- "modified": "2019-03-23T22:23:49.095Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Proximity_Events": {
- "modified": "2019-03-23T23:26:18.756Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "MashKao"
- ]
- },
- "Web/API/Range": {
- "modified": "2019-03-23T22:11:39.715Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Response": {
- "modified": "2020-10-15T22:20:33.291Z",
- "contributors": [
- "Snailpool"
- ]
- },
- "Web/API/Screen": {
- "modified": "2019-03-23T22:19:37.677Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Screen/orientation": {
- "modified": "2019-03-23T22:19:12.880Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Server-sent_events": {
- "modified": "2019-03-23T22:48:59.519Z",
- "contributors": [
- "alk03073135"
- ]
- },
- "Web/API/Server-sent_events/Using_server-sent_events": {
- "modified": "2020-10-15T21:38:16.488Z",
- "contributors": [
- "t7yang",
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/API/Storage": {
- "modified": "2020-10-15T22:18:31.680Z",
- "contributors": [
- "Snailpool"
- ]
- },
- "Web/API/Touch": {
- "modified": "2019-03-23T22:19:42.184Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/TouchEvent": {
- "modified": "2019-03-23T22:19:43.288Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/TouchList": {
- "modified": "2019-03-23T22:19:16.026Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Touch_events": {
- "modified": "2019-03-23T22:19:45.724Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/UIEvent": {
- "modified": "2019-03-23T22:47:07.957Z",
- "contributors": [
- "jackblackevo",
- "Shiyou"
- ]
- },
- "Web/API/UIEvent/UIEvent": {
- "modified": "2019-03-23T22:47:00.620Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/API/URL": {
- "modified": "2019-03-23T22:45:27.784Z",
- "contributors": [
- "jackblackevo",
- "Sebastianz"
- ]
- },
- "Web/API/URL/createObjectURL": {
- "modified": "2019-03-23T22:45:24.757Z",
- "contributors": [
- "mike-su"
- ]
- },
- "Web/API/ValidityState": {
- "modified": "2019-03-23T22:10:00.790Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Vibration_API": {
- "modified": "2019-03-23T23:26:11.215Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/WebGL_API": {
- "modified": "2019-03-23T23:05:10.310Z",
- "contributors": [
- "oberonfrog",
- "JamsYC.Huang",
- "fscholz",
- "bassam",
- "wildsky"
- ]
- },
- "Web/API/WebGL_API/Tutorial": {
- "modified": "2019-03-23T22:28:04.854Z",
- "contributors": [
- "oberonfrog",
- "leannechen",
- "fscholz"
- ]
- },
- "Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context": {
- "modified": "2019-03-23T22:05:33.181Z",
- "contributors": [
- "oberonfrog"
- ]
- },
- "Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL": {
- "modified": "2019-03-23T22:05:08.179Z",
- "contributors": [
- "oberonfrog"
- ]
- },
- "Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL": {
- "modified": "2019-03-23T22:28:11.788Z",
- "contributors": [
- "Milkker",
- "jackblackevo",
- "mmis1000",
- "oberonfrog",
- "iamlockon"
- ]
- },
- "Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL": {
- "modified": "2019-03-23T22:05:32.507Z",
- "contributors": [
- "oberonfrog"
- ]
- },
- "Web/API/WebRTC_API": {
- "modified": "2020-03-24T21:28:22.800Z",
- "contributors": [
- "LeonH",
- "VirtualDruid",
- "jackblackevo"
- ]
- },
- "Web/API/WebVR_API": {
- "modified": "2019-03-23T22:05:10.343Z",
- "contributors": [
- "oberonfrog"
- ]
- },
- "Web/API/Web_Audio_API": {
- "modified": "2019-04-23T04:18:05.778Z",
- "contributors": [
- "jackblackevo",
- "MashKao"
- ]
- },
- "Web/API/Web_Video_Text_Tracks_Format": {
- "modified": "2019-03-23T23:11:00.411Z",
- "contributors": [
- "wbamberg",
- "BobChao"
- ]
- },
- "Web/API/Web_Workers_API": {
- "modified": "2019-03-23T22:31:22.820Z",
- "contributors": [
- "teoli"
- ]
- },
- "Web/API/Web_Workers_API/Using_web_workers": {
- "modified": "2019-03-23T23:27:47.429Z",
- "contributors": [
- "t7yang",
- "teoli",
- "jackblackevo",
- "foxbrush",
- "walkingice"
- ]
- },
- "Web/API/WheelEvent": {
- "modified": "2019-03-18T21:36:10.655Z",
- "contributors": [
- "Zhang-Junzhi"
- ]
- },
- "Web/API/Window": {
- "modified": "2019-03-23T22:30:42.242Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Window.history": {
- "modified": "2019-03-23T23:27:30.087Z",
- "contributors": [
- "jackblackevo",
- "jsx",
- "ChiLiJung"
- ]
- },
- "Web/API/Window.onpopstate": {
- "modified": "2019-03-23T23:27:28.070Z",
- "contributors": [
- "irvinfly",
- "khalid32",
- "ChiLiJung"
- ]
- },
- "Web/API/Window.requestAnimationFrame": {
- "modified": "2020-10-15T21:24:54.235Z",
- "contributors": [
- "t7yang",
- "Ekanan",
- "North",
- "foxbrush"
- ]
- },
- "Web/API/Window/getComputedStyle": {
- "modified": "2019-03-23T22:10:08.484Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Window/localStorage": {
- "modified": "2020-10-15T22:24:50.356Z",
- "contributors": [
- "chrischi0922s",
- "alkalineW"
- ]
- },
- "Web/API/Window/location": {
- "modified": "2019-04-23T03:35:06.433Z",
- "contributors": [
- "jackblackevo",
- "khalid32",
- "appleboy"
- ]
- },
- "Web/API/Window/navigator": {
- "modified": "2019-07-25T17:42:57.501Z",
- "contributors": [
- "lixingnan200",
- "jackblackevo"
- ]
- },
- "Web/API/Window/opener": {
- "modified": "2019-03-23T22:06:26.845Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/Window/orientationchange_event": {
- "modified": "2020-10-15T22:05:03.774Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "BwayCer"
- ]
- },
- "Web/API/Window/print": {
- "modified": "2019-03-18T21:45:25.421Z",
- "contributors": [
- "laneser"
- ]
- },
- "Web/API/Window/requestIdleCallback": {
- "modified": "2019-03-23T22:08:40.506Z",
- "contributors": [
- "zonr"
- ]
- },
- "Web/API/Window/sessionStorage": {
- "modified": "2020-10-15T21:58:23.409Z",
- "contributors": [
- "iigmir",
- "EyiLee",
- "EricPing"
- ]
- },
- "Web/API/Window/sidebar": {
- "modified": "2019-03-23T22:03:03.633Z",
- "contributors": [
- "IsaacSchemm"
- ]
- },
- "Web/API/Window/sidebar/Adding_search_engines_from_Web_pages": {
- "modified": "2019-01-16T15:28:04.055Z",
- "contributors": [
- "jackblackevo",
- "Mgjbot",
- "BobChao"
- ]
- },
- "Web/API/WindowBase64": {
- "modified": "2019-03-23T22:30:45.308Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/WindowEventHandlers": {
- "modified": "2019-03-23T22:30:52.273Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/WindowEventHandlers/onbeforeunload": {
- "modified": "2019-03-23T22:27:46.116Z",
- "contributors": [
- "hstarorg"
- ]
- },
- "Web/API/WindowOrWorkerGlobalScope": {
- "modified": "2020-10-15T22:29:08.795Z",
- "contributors": [
- "mfuji09"
- ]
- },
- "Web/API/WindowOrWorkerGlobalScope/btoa": {
- "modified": "2020-10-15T22:35:15.820Z",
- "contributors": [
- "evo938evo938"
- ]
- },
- "Web/API/WindowOrWorkerGlobalScope/setInterval": {
- "modified": "2020-10-15T22:29:07.467Z",
- "contributors": [
- "chrischi0922s"
- ]
- },
- "Web/API/WindowTimers": {
- "modified": "2019-03-18T21:16:54.761Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/XMLHttpRequest": {
- "modified": "2020-10-15T21:21:13.079Z",
- "contributors": [
- "ginszme",
- "fscholz",
- "willynpi",
- "jackblackevo",
- "teoli",
- "foxbrush",
- "natevw"
- ]
- },
- "Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests": {
- "modified": "2019-03-23T22:55:39.839Z",
- "contributors": [
- "blackbingo",
- "teoli",
- "alk03073135"
- ]
- },
- "Web/API/XMLHttpRequest/Using_XMLHttpRequest": {
- "modified": "2019-03-23T23:25:28.545Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "foxbrush"
- ]
- },
- "Web/API/XMLHttpRequest/XMLHttpRequest": {
- "modified": "2020-04-01T05:25:46.906Z",
- "contributors": [
- "ginszme"
- ]
- },
- "Web/API/XMLHttpRequest/onreadystatechange": {
- "modified": "2019-03-23T22:16:06.897Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/XMLHttpRequest/readyState": {
- "modified": "2019-03-23T22:16:03.865Z",
- "contributors": [
- "jWorker",
- "jackblackevo",
- "ginszme"
- ]
- },
- "Web/API/XMLHttpRequest/setRequestHeader": {
- "modified": "2020-10-15T22:28:44.084Z",
- "contributors": [
- "ginszme"
- ]
- },
- "Web/API/XMLHttpRequest/status": {
- "modified": "2019-03-23T22:12:50.172Z",
- "contributors": [
- "ginszme"
- ]
- },
- "Web/API/XMLHttpRequest/withCredentials": {
- "modified": "2020-10-15T22:17:19.013Z",
- "contributors": [
- "willh"
- ]
- },
- "Web/API/XMLHttpRequestEventTarget": {
- "modified": "2019-03-23T22:12:26.382Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/API/console/assert": {
- "modified": "2020-10-15T22:03:27.482Z",
- "contributors": [
- "lin826",
- "iigmir"
- ]
- },
- "Web/API/document.createTreeWalker": {
- "modified": "2019-03-23T23:14:12.386Z",
- "contributors": [
- "jsx",
- "shyangs"
- ]
- },
- "Web/API/notification": {
- "modified": "2020-04-21T05:58:29.795Z",
- "contributors": [
- "kinlish",
- "bros0215",
- "SphinxKnight",
- "Shiyou"
- ]
- },
- "Web/Accessibility": {
- "modified": "2019-09-11T08:39:45.699Z",
- "contributors": [
- "SphinxKnight",
- "iigmir",
- "boa0332"
- ]
- },
- "Web/Accessibility/ARIA": {
- "modified": "2019-03-23T22:50:56.989Z",
- "contributors": [
- "teoli"
- ]
- },
- "Web/Accessibility/ARIA/ARIA_Techniques": {
- "modified": "2019-03-18T21:39:54.388Z",
- "contributors": [
- "oooooo"
- ]
- },
- "Web/Accessibility/ARIA/forms": {
- "modified": "2019-06-27T12:10:30.271Z",
- "contributors": [
- "FredericChang",
- "Sheppy"
- ]
- },
- "Web/Accessibility/ARIA/forms/Basic_form_hints": {
- "modified": "2019-03-23T22:50:58.911Z",
- "contributors": [
- "PatrickTaiwan",
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/Accessibility/Mobile_accessibility_checklist": {
- "modified": "2019-03-18T21:32:14.782Z",
- "contributors": [
- "li-liam"
- ]
- },
- "Web/CSS": {
- "modified": "2019-09-11T03:42:04.510Z",
- "contributors": [
- "SphinxKnight",
- "jjyaung",
- "xuan0123",
- "jackblackevo",
- "iigmir",
- "flyinglimao",
- "thomasaria",
- "irvinfly",
- "teoli",
- "ethertank",
- "sailplaneTW",
- "Mgjbot",
- "BobChao"
- ]
- },
- "Web/CSS/::first-letter": {
- "modified": "2019-03-23T22:31:14.643Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/CSS/:first-child": {
- "modified": "2019-03-23T22:28:52.270Z",
- "contributors": [
- "mgrn"
- ]
- },
- "Web/CSS/:first-of-type": {
- "modified": "2019-03-23T22:10:08.926Z",
- "contributors": [
- "nyngwang"
- ]
- },
- "Web/CSS/:lang": {
- "modified": "2020-10-15T22:13:50.122Z",
- "contributors": [
- "oooooo"
- ]
- },
- "Web/CSS/:target": {
- "modified": "2019-03-23T22:49:40.294Z",
- "contributors": [
- "alk03073135"
- ]
- },
- "Web/CSS/@font-face": {
- "modified": "2019-03-23T23:28:16.382Z",
- "contributors": [
- "fscholz",
- "teoli",
- "carl_tw"
- ]
- },
- "Web/CSS/@media": {
- "modified": "2019-03-23T22:21:19.252Z",
- "contributors": [
- "iigmir",
- "xim"
- ]
- },
- "Web/CSS/@media/height": {
- "modified": "2019-03-23T22:21:21.278Z",
- "contributors": [
- "MashKao",
- "yvonne6344"
- ]
- },
- "Web/CSS/@viewport": {
- "modified": "2019-03-18T21:16:53.558Z",
- "contributors": [
- "cvrebert"
- ]
- },
- "Web/CSS/@viewport/height": {
- "modified": "2019-10-22T02:02:49.952Z",
- "contributors": [
- "Zhang-Junzhi",
- "yvonne6344"
- ]
- },
- "Web/CSS/CSS_Animations": {
- "modified": "2019-03-23T22:43:48.571Z",
- "contributors": [
- "teoli"
- ]
- },
- "Web/CSS/CSS_Animations/Using_CSS_animations": {
- "modified": "2019-03-24T00:13:58.706Z",
- "contributors": [
- "SphinxKnight",
- "teoli",
- "ethertank",
- "sailplaneTW"
- ]
- },
- "Web/CSS/CSS_Background_and_Borders": {
- "modified": "2019-03-23T22:44:17.591Z",
- "contributors": [
- "teoli"
- ]
- },
- "Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds": {
- "modified": "2019-03-23T22:48:53.708Z",
- "contributors": [
- "sss63232",
- "Shiyou",
- "teoli",
- "alk03073135"
- ]
- },
- "Web/CSS/CSS_Box_Model": {
- "modified": "2019-03-23T22:24:07.076Z",
- "contributors": [
- "Sebastianz"
- ]
- },
- "Web/CSS/CSS_Box_Model/Mastering_margin_collapsing": {
- "modified": "2020-08-17T06:43:18.638Z",
- "contributors": [
- "osk2",
- "lilychen1388",
- "jackblackevo",
- "MOSapeizer"
- ]
- },
- "Web/CSS/CSS_Colors": {
- "modified": "2019-03-23T22:44:44.114Z",
- "contributors": [
- "Sebastianz",
- "teoli"
- ]
- },
- "Web/CSS/CSS_Colors/Color_picker_tool": {
- "modified": "2019-03-23T22:44:42.147Z",
- "contributors": [
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/CSS/CSS_Flexible_Box_Layout": {
- "modified": "2020-07-30T05:18:51.473Z",
- "contributors": [
- "klareh",
- "iigmir",
- "1986slayer",
- "WynnChen"
- ]
- },
- "Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes": {
- "modified": "2020-05-11T23:59:37.780Z",
- "contributors": [
- "wildsky",
- "iigmir",
- "1986slayer"
- ]
- },
- "Web/CSS/CSS_Grid_Layout": {
- "modified": "2020-02-01T05:41:13.615Z",
- "contributors": [
- "SvampK",
- "iigmir",
- "1986slayer",
- "jackblackevo"
- ]
- },
- "Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout": {
- "modified": "2019-10-24T13:10:33.813Z",
- "contributors": [
- "akccakcctw",
- "iigmir",
- "1986slayer"
- ]
- },
- "Web/CSS/CSS_Lists_and_Counters": {
- "modified": "2019-03-23T22:18:52.970Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation": {
- "modified": "2019-03-24T00:14:02.326Z",
- "contributors": [
- "jackblackevo",
- "ethertank",
- "sailplaneTW"
- ]
- },
- "Web/CSS/CSS_Positioning": {
- "modified": "2019-03-23T22:18:48.097Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/CSS/CSS_Positioning/Understanding_z_index": {
- "modified": "2019-03-23T22:55:06.815Z",
- "contributors": [
- "jackblackevo",
- "Jeremie"
- ]
- },
- "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1": {
- "modified": "2019-03-23T22:55:03.379Z",
- "contributors": [
- "jackblackevo",
- "h140100"
- ]
- },
- "Web/CSS/CSS_Properties_Reference": {
- "modified": "2020-10-21T10:34:59.711Z",
- "contributors": [
- "SvampK",
- "jackblackevo"
- ]
- },
- "Web/CSS/CSS_Selectors": {
- "modified": "2020-10-24T16:00:38.628Z",
- "contributors": [
- "NekoChan-2851",
- "weichengcing",
- "BobChao",
- "noih",
- "jsgao0",
- "jackblackevo"
- ]
- },
- "Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors": {
- "modified": "2019-03-23T22:49:42.209Z",
- "contributors": [
- "jackblackevo",
- "alk03073135"
- ]
- },
- "Web/CSS/CSS_Transitions": {
- "modified": "2019-03-23T22:18:48.267Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/CSS/CSS_Transitions/Using_CSS_transitions": {
- "modified": "2019-03-24T00:14:17.322Z",
- "contributors": [
- "jackblackevo",
- "elin",
- "ethertank",
- "sailplaneTW"
- ]
- },
- "Web/CSS/Common_CSS_Questions": {
- "modified": "2020-07-16T22:25:46.290Z",
- "contributors": [
- "fscholz",
- "teoli",
- "Mgjbot",
- "BobChao"
- ]
- },
- "Web/CSS/Descendant_combinator": {
- "modified": "2019-03-23T22:47:36.182Z",
- "contributors": [
- "ExE-Boss",
- "changbenny"
- ]
- },
- "Web/CSS/Media_Queries": {
- "modified": "2019-03-23T22:18:53.365Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/CSS/Media_Queries/Testing_media_queries": {
- "modified": "2019-03-23T22:55:57.771Z",
- "contributors": [
- "jackblackevo",
- "foxbrush"
- ]
- },
- "Web/CSS/Pseudo-classes": {
- "modified": "2019-03-23T22:25:22.712Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/CSS/Reference": {
- "modified": "2019-03-23T22:00:54.291Z",
- "contributors": [
- "jackblackevo",
- "pigmu"
- ]
- },
- "Web/CSS/Replaced_element": {
- "modified": "2019-03-23T22:59:51.482Z",
- "contributors": [
- "MashKao"
- ]
- },
- "Web/CSS/Shorthand_properties": {
- "modified": "2019-03-23T23:05:17.353Z",
- "contributors": [
- "fscholz",
- "irvinfly",
- "wildsky"
- ]
- },
- "Web/CSS/Syntax": {
- "modified": "2020-06-01T00:28:11.978Z",
- "contributors": [
- "bensontobeicsc",
- "jackblackevo",
- "xuan0123"
- ]
- },
- "Web/CSS/Type_selectors": {
- "modified": "2020-10-15T22:16:41.850Z",
- "contributors": [
- "a1178961372",
- "YvonneYu"
- ]
- },
- "Web/CSS/animation-fill-mode": {
- "modified": "2019-03-18T21:42:33.553Z",
- "contributors": [
- "yoonasy"
- ]
- },
- "Web/CSS/attr()": {
- "modified": "2020-11-04T08:52:16.034Z",
- "contributors": [
- "chrisdavidmills",
- "DevinKWu",
- "SphinxKnight",
- "iigmir",
- "mrstork",
- "prayash",
- "andyyou"
- ]
- },
- "Web/CSS/background-attachment": {
- "modified": "2020-10-15T22:23:27.829Z",
- "contributors": [
- "ayugioh2003"
- ]
- },
- "Web/CSS/background-color": {
- "modified": "2020-10-15T21:39:17.646Z",
- "contributors": [
- "SphinxKnight",
- "s10750257",
- "Sebastianz",
- "Shiyou"
- ]
- },
- "Web/CSS/border": {
- "modified": "2020-10-15T22:17:53.607Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/CSS/border-image": {
- "modified": "2019-03-24T00:08:26.325Z",
- "contributors": [
- "wbamberg",
- "teoli",
- "Kennyluck"
- ]
- },
- "Web/CSS/border-image/border-image": {
- "modified": "2019-03-24T00:08:11.061Z",
- "contributors": [
- "mrstork",
- "teoli",
- "Kennyluck"
- ]
- },
- "Web/CSS/box-shadow": {
- "modified": "2020-09-11T09:09:21.899Z",
- "contributors": [
- "slivenred",
- "jackblackevo",
- "DoJQuadArts",
- "Sebastianz",
- "alk03073135"
- ]
- },
- "Web/CSS/box-sizing": {
- "modified": "2020-10-15T21:47:19.062Z",
- "contributors": [
- "chih-hsi-chen",
- "yungshenglu",
- "SJW",
- "PJCHENder",
- "iigmir",
- "fscholz",
- "jwhitlock",
- "YuCheng"
- ]
- },
- "Web/CSS/clip": {
- "modified": "2019-03-23T22:33:08.119Z",
- "contributors": [
- "Jerry-Hong"
- ]
- },
- "Web/CSS/cursor": {
- "modified": "2020-10-15T22:07:15.106Z",
- "contributors": [
- "it4u"
- ]
- },
- "Web/CSS/grid-row": {
- "modified": "2020-10-15T21:53:10.432Z",
- "contributors": [
- "fscholz",
- "1986slayer"
- ]
- },
- "Web/CSS/grid-template": {
- "modified": "2020-10-15T22:30:52.332Z",
- "contributors": [
- "blueanger31"
- ]
- },
- "Web/CSS/grid-template-columns": {
- "modified": "2020-10-15T21:53:17.222Z",
- "contributors": [
- "fscholz",
- "1986slayer"
- ]
- },
- "Web/CSS/height": {
- "modified": "2019-03-23T22:21:15.320Z",
- "contributors": [
- "yvonne6344"
- ]
- },
- "Web/CSS/ime-mode": {
- "modified": "2019-01-16T15:28:05.312Z",
- "contributors": [
- "teoli",
- "Mgjbot",
- "BobChao"
- ]
- },
- "Web/CSS/inheritance": {
- "modified": "2019-03-23T22:48:52.230Z",
- "contributors": [
- "jackblackevo",
- "alk03073135"
- ]
- },
- "Web/CSS/line-break": {
- "modified": "2020-10-15T22:24:02.776Z",
- "contributors": [
- "jsgao0"
- ]
- },
- "Web/CSS/object-fit": {
- "modified": "2019-03-23T22:27:58.659Z",
- "contributors": [
- "gn00979905"
- ]
- },
- "Web/CSS/radial-gradient()": {
- "modified": "2020-11-18T14:43:15.827Z",
- "contributors": [
- "chrisdavidmills",
- "linzging"
- ]
- },
- "Web/CSS/ruby-position": {
- "modified": "2020-10-15T21:51:03.131Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/CSS/transform": {
- "modified": "2020-10-15T21:38:21.566Z",
- "contributors": [
- "allchangechallenge",
- "jackblackevo",
- "Sebastianz",
- "CarterTsai",
- "SphinxKnight",
- "fscholz",
- "alk03073135"
- ]
- },
- "Web/CSS/transform-function": {
- "modified": "2019-03-23T22:49:34.155Z",
- "contributors": [
- "mrstork",
- "prayash",
- "alk03073135"
- ]
- },
- "Web/CSS/transform-function/translate3d()": {
- "modified": "2020-11-30T13:00:00.920Z",
- "contributors": [
- "chrisdavidmills",
- "iigmir"
- ]
- },
- "Web/CSS/transform-origin": {
- "modified": "2020-10-15T22:05:18.550Z",
- "contributors": [
- "willynpi"
- ]
- },
- "Web/CSS/transition": {
- "modified": "2020-10-15T22:08:09.027Z",
- "contributors": [
- "willynpi"
- ]
- },
- "Web/CSS/transition-duration": {
- "modified": "2020-10-15T22:08:04.691Z",
- "contributors": [
- "willynpi"
- ]
- },
- "Web/CSS/transition-timing-function": {
- "modified": "2020-10-15T22:02:01.243Z",
- "contributors": [
- "flyinglimao"
- ]
- },
- "Web/CSS/white-space": {
- "modified": "2019-03-23T22:06:04.997Z",
- "contributors": [
- "ymcheung",
- "leannechen"
- ]
- },
- "Web/CSS/width": {
- "modified": "2020-10-15T22:01:32.599Z",
- "contributors": [
- "yutzuch"
- ]
- },
- "Web/Demos_of_open_web_technologies": {
- "modified": "2019-03-23T22:08:13.863Z",
- "contributors": [
- "h223449961",
- "tigercosmos"
- ]
- },
- "Web/Events": {
- "modified": "2019-11-28T04:54:28.795Z",
- "contributors": [
- "t7yang",
- "fadeawaygod",
- "wbamberg",
- "Septem",
- "fscholz",
- "jackblackevo",
- "Shiyou",
- "ethertank",
- "louisremi"
- ]
- },
- "Web/Events/DOMContentLoaded": {
- "modified": "2019-04-30T13:56:21.954Z",
- "contributors": [
- "wbamberg",
- "fscholz",
- "NoctisHsu",
- "jackblackevo",
- "ethertank",
- "CarterTsai"
- ]
- },
- "Web/Events/abort": {
- "modified": "2019-04-30T14:18:03.298Z",
- "contributors": [
- "wbamberg",
- "secminhr"
- ]
- },
- "Web/Events/load": {
- "modified": "2019-03-23T22:18:11.736Z",
- "contributors": [
- "fscholz",
- "Snailpool"
- ]
- },
- "Web/Guide": {
- "modified": "2019-03-23T23:29:55.855Z",
- "contributors": [
- "Rocker",
- "jackblackevo",
- "alk03073135",
- "ethertank",
- "Sheppy"
- ]
- },
- "Web/Guide/AJAX": {
- "modified": "2019-03-24T00:02:43.850Z",
- "contributors": [
- "circlepen",
- "drinktea28",
- "jackblackevo",
- "chrisdavidmills",
- "ethertank",
- "fscholz",
- "happysadman",
- "Mgjbot",
- "kourge",
- "BobChao"
- ]
- },
- "Web/Guide/AJAX/Getting_Started": {
- "modified": "2020-08-21T06:49:10.440Z",
- "contributors": [
- "timjtchang",
- "jackblackevo",
- "chrisdavidmills",
- "luxun",
- "happysadman",
- "Cpthk",
- "Mgjbot",
- "BobChao"
- ]
- },
- "Web/Guide/API": {
- "modified": "2019-09-11T09:35:56.658Z",
- "contributors": [
- "SphinxKnight",
- "shing0608"
- ]
- },
- "Web/Guide/DOM": {
- "modified": "2019-03-23T23:29:56.158Z",
- "contributors": [
- "Sheppy"
- ]
- },
- "Web/Guide/Events": {
- "modified": "2019-03-23T22:48:03.662Z",
- "contributors": [
- "jackblackevo",
- "gportioli"
- ]
- },
- "Web/Guide/Events/Creating_and_triggering_events": {
- "modified": "2019-03-23T22:48:01.128Z",
- "contributors": [
- "jackblackevo",
- "Shiyou"
- ]
- },
- "Web/Guide/Events/Event_handlers": {
- "modified": "2020-05-13T00:05:39.122Z",
- "contributors": [
- "ginszme",
- "jackblackevo"
- ]
- },
- "Web/Guide/Graphics": {
- "modified": "2019-04-23T04:21:07.806Z",
- "contributors": [
- "jackblackevo",
- "pytseng"
- ]
- },
- "Web/Guide/HTML/Content_categories": {
- "modified": "2019-03-23T22:28:17.896Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/Guide/HTML/Event_attributes": {
- "modified": "2019-11-20T21:38:26.184Z",
- "contributors": [
- "wbamberg",
- "jackblackevo"
- ]
- },
- "Web/Guide/HTML/HTML5": {
- "modified": "2019-03-24T00:15:00.017Z",
- "contributors": [
- "jackblackevo",
- "Shiyou",
- "teoli",
- "alk03073135",
- "wildsky",
- "sailplaneTW",
- "vigia122",
- "Kennyluck",
- "Dwchiang"
- ]
- },
- "Web/Guide/HTML/HTML5/Introduction_to_HTML5": {
- "modified": "2019-03-23T22:57:07.502Z",
- "contributors": [
- "jackblackevo",
- "kwanjaiOP"
- ]
- },
- "Web/Guide/Introduction_to_Web_development": {
- "modified": "2019-04-23T03:25:16.725Z",
- "contributors": [
- "jackblackevo",
- "khhyoshida",
- "happysadman"
- ]
- },
- "Web/Guide/Performance": {
- "modified": "2019-03-23T23:28:07.518Z",
- "contributors": [
- "Sheppy"
- ]
- },
- "Web/Guide/WOFF": {
- "modified": "2019-03-23T23:28:22.570Z",
- "contributors": [
- "fscholz",
- "carl_tw"
- ]
- },
- "Web/Guide/Writing_forward-compatible_websites": {
- "modified": "2019-03-24T00:17:14.604Z",
- "contributors": [
- "fscholz",
- "irvinfly",
- "Littlebtc",
- "Sonrisa",
- "sycheng"
- ]
- },
- "Web/HTML": {
- "modified": "2020-10-16T05:00:10.652Z",
- "contributors": [
- "j0987397957",
- "j3ygithub",
- "jjyaung",
- "SphinxKnight",
- "lalasoqTW",
- "Mr430",
- "XIGUO",
- "xerviam",
- "willynpi",
- "iigmir",
- "mybaseball52",
- "antonytse",
- "EtienneC",
- "SecondSpirit",
- "thomasaria",
- "jackblackevo",
- "archyaloha",
- "Shiyou",
- "irvinfly",
- "stingyong",
- "sailplaneTW"
- ]
- },
- "Web/HTML/Applying_color": {
- "modified": "2019-03-18T21:29:53.605Z",
- "contributors": [
- "WuBingHsuan"
- ]
- },
- "Web/HTML/Attributes": {
- "modified": "2019-03-23T22:49:22.885Z",
- "contributors": [
- "jackblackevo",
- "stingyong"
- ]
- },
- "Web/HTML/Block-level_elements": {
- "modified": "2019-03-23T22:04:44.255Z",
- "contributors": [
- "jackblackevo",
- "yimingxym"
- ]
- },
- "Web/HTML/Element": {
- "modified": "2020-06-01T13:13:14.618Z",
- "contributors": [
- "iigmir",
- "ltsai323",
- "unnhao",
- "jackblackevo",
- "irvinfly",
- "teoli",
- "BobChao"
- ]
- },
- "Web/HTML/Element/a": {
- "modified": "2020-10-15T21:05:46.606Z",
- "contributors": [
- "iigmir",
- "hinet60613",
- "jackblackevo",
- "teoli",
- "BobChao",
- "ethertank"
- ]
- },
- "Web/HTML/Element/blink": {
- "modified": "2020-10-15T21:53:26.779Z",
- "contributors": [
- "teoli",
- "iigmir"
- ]
- },
- "Web/HTML/Element/blockquote": {
- "modified": "2019-03-23T22:32:36.058Z",
- "contributors": [
- "iigmir",
- "Shiyou"
- ]
- },
- "Web/HTML/Element/br": {
- "modified": "2020-10-15T22:00:58.202Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/button": {
- "modified": "2020-05-05T00:47:26.851Z",
- "contributors": [
- "unnhao",
- "weswithley"
- ]
- },
- "Web/HTML/Element/canvas": {
- "modified": "2019-03-23T22:41:16.083Z",
- "contributors": [
- "pig3629",
- "GG9"
- ]
- },
- "Web/HTML/Element/code": {
- "modified": "2019-03-23T22:29:09.754Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/div": {
- "modified": "2020-10-15T21:47:03.763Z",
- "contributors": [
- "Shiyou",
- "iigmir"
- ]
- },
- "Web/HTML/Element/font": {
- "modified": "2020-10-15T21:44:22.712Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/form": {
- "modified": "2020-10-15T22:29:56.079Z",
- "contributors": [
- "unnhao"
- ]
- },
- "Web/HTML/Element/frameset": {
- "modified": "2019-03-23T22:28:05.345Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/hr": {
- "modified": "2019-03-23T22:23:32.127Z",
- "contributors": [
- "iigmir",
- "ywchiao"
- ]
- },
- "Web/HTML/Element/input": {
- "modified": "2019-03-23T22:08:13.272Z",
- "contributors": [
- "Sheppy"
- ]
- },
- "Web/HTML/Element/input/submit": {
- "modified": "2019-03-23T22:08:05.925Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/marquee": {
- "modified": "2020-10-15T21:53:57.839Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/meter": {
- "modified": "2019-04-09T18:21:26.397Z",
- "contributors": [
- "jwhitlock",
- "evildeepblue"
- ]
- },
- "Web/HTML/Element/nav": {
- "modified": "2020-10-15T21:56:36.267Z",
- "contributors": [
- "iigmir",
- "jackblackevo",
- "h223449961"
- ]
- },
- "Web/HTML/Element/optgroup": {
- "modified": "2019-03-23T22:28:41.892Z",
- "contributors": [
- "alk03073135"
- ]
- },
- "Web/HTML/Element/picture": {
- "modified": "2020-10-15T22:32:35.687Z",
- "contributors": [
- "leannechen2"
- ]
- },
- "Web/HTML/Element/q": {
- "modified": "2020-10-15T21:49:02.776Z",
- "contributors": [
- "fscholz",
- "iigmir"
- ]
- },
- "Web/HTML/Element/ruby": {
- "modified": "2020-10-15T21:49:21.871Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/script": {
- "modified": "2020-10-15T21:41:05.397Z",
- "contributors": [
- "SphinxKnight",
- "t7yang",
- "iigmir",
- "roycrxtw",
- "Shiyou"
- ]
- },
- "Web/HTML/Element/summary": {
- "modified": "2019-03-23T22:30:12.195Z",
- "contributors": [
- "Tingyu"
- ]
- },
- "Web/HTML/Element/table": {
- "modified": "2020-10-15T21:43:36.560Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/template": {
- "modified": "2020-10-15T22:00:56.747Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Element/time": {
- "modified": "2019-03-23T22:32:35.538Z",
- "contributors": [
- "Shiyou"
- ]
- },
- "Web/HTML/Forms_in_HTML": {
- "modified": "2019-03-23T23:28:09.563Z",
- "contributors": [
- "foxbrush"
- ]
- },
- "Web/HTML/Global_attributes": {
- "modified": "2019-03-23T22:31:21.607Z",
- "contributors": [
- "jackblackevo",
- "iigmir"
- ]
- },
- "Web/HTML/Global_attributes/data-*": {
- "modified": "2019-03-23T22:19:55.073Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTML/Global_attributes/spellcheck": {
- "modified": "2019-03-23T23:43:42.545Z",
- "contributors": [
- "jackblackevo",
- "irvinfly",
- "teoli",
- "BobChao"
- ]
- },
- "Web/HTML/Quirks_Mode_and_Standards_Mode": {
- "modified": "2019-03-23T22:31:44.412Z",
- "contributors": [
- "iigmir",
- "chrisdavidmills"
- ]
- },
- "Web/HTML/Reference": {
- "modified": "2019-09-09T07:23:59.718Z",
- "contributors": [
- "SphinxKnight",
- "wbamberg",
- "iigmir",
- "TAlulu",
- "irvinfly",
- "stingyong"
- ]
- },
- "Web/HTML/Supported_media_formats": {
- "modified": "2019-03-23T23:14:51.174Z",
- "contributors": [
- "young3578671",
- "Keeseonglee"
- ]
- },
- "Web/HTML/Using_the_application_cache": {
- "modified": "2019-03-24T00:10:44.785Z",
- "contributors": [
- "SphinxKnight",
- "jackblackevo",
- "teoli",
- "Kennyluck",
- "Mgjbot",
- "Cooldll694",
- "BobChao"
- ]
- },
- "Web/HTTP": {
- "modified": "2020-05-09T15:09:07.858Z",
- "contributors": [
- "mgrn",
- "0807love0825",
- "rayainman",
- "xerviam",
- "bnn00023",
- "mybaseball52",
- "jwhitlock",
- "yyss"
- ]
- },
- "Web/HTTP/Authentication": {
- "modified": "2019-03-18T21:31:55.684Z",
- "contributors": [
- "hua-123"
- ]
- },
- "Web/HTTP/Basics_of_HTTP": {
- "modified": "2020-03-16T05:38:40.530Z",
- "contributors": [
- "mfuji09"
- ]
- },
- "Web/HTTP/Basics_of_HTTP/MIME_types": {
- "modified": "2020-06-08T05:57:19.890Z",
- "contributors": [
- "hikariTW",
- "willynpi"
- ]
- },
- "Web/HTTP/Browser_detection_using_the_user_agent": {
- "modified": "2020-09-21T11:14:16.789Z",
- "contributors": [
- "iigmir",
- "jwhitlock"
- ]
- },
- "Web/HTTP/CORS": {
- "modified": "2020-10-15T21:21:52.967Z",
- "contributors": [
- "kunyaoxu",
- "LNDDYL",
- "jackblackevo",
- "iigmir",
- "fscholz",
- "hsinewu",
- "jwhitlock",
- "xgqfrms",
- "yetisno",
- "nfsnfs",
- "foxbrush",
- "DESKTOP-H9V56N1"
- ]
- },
- "Web/HTTP/CORS/Errors": {
- "modified": "2019-05-07T03:11:46.742Z"
- },
- "Web/HTTP/CORS/Errors/CORSDidNotSucceed": {
- "modified": "2019-05-07T05:22:57.676Z",
- "contributors": [
- "hms5232"
- ]
- },
- "Web/HTTP/CORS/Errors/CORSMissingAllowOrigin": {
- "modified": "2019-05-07T05:23:32.648Z",
- "contributors": [
- "hms5232"
- ]
- },
- "Web/HTTP/CORS/Errors/CORSNotSupportingCredentials": {
- "modified": "2019-05-07T22:55:59.165Z",
- "contributors": [
- "hms5232"
- ]
- },
- "Web/HTTP/Caching": {
- "modified": "2019-09-07T05:43:44.819Z",
- "contributors": [
- "CPMoviePHil",
- "fadeawaygod"
- ]
- },
- "Web/HTTP/Cookies": {
- "modified": "2019-03-18T21:43:21.294Z",
- "contributors": [
- "jackblackevo",
- "csiejoey"
- ]
- },
- "Web/HTTP/Headers": {
- "modified": "2019-03-23T22:17:44.358Z",
- "contributors": [
- "fscholz"
- ]
- },
- "Web/HTTP/Headers/Accept": {
- "modified": "2020-10-15T22:27:22.748Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Headers/DNT": {
- "modified": "2020-10-15T22:01:54.641Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Headers/Server": {
- "modified": "2020-10-15T22:01:55.490Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Headers/Strict-Transport-Security": {
- "modified": "2020-10-15T22:23:24.512Z",
- "contributors": [
- "jasperlin1996",
- "r1235613"
- ]
- },
- "Web/HTTP/Headers/User-Agent": {
- "modified": "2020-10-15T21:52:25.725Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Headers/X-Forwarded-For": {
- "modified": "2020-10-15T22:18:49.633Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Headers/X-Frame-Options": {
- "modified": "2019-06-17T05:41:08.405Z",
- "contributors": [
- "jackblackevo",
- "jwhitlock",
- "allenown",
- "foxbrush"
- ]
- },
- "Web/HTTP/Link_prefetching_FAQ": {
- "modified": "2019-03-23T22:49:36.623Z",
- "contributors": [
- "imrobinized",
- "jwhitlock",
- "foxbrush"
- ]
- },
- "Web/HTTP/Methods": {
- "modified": "2020-10-15T22:04:23.999Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Methods/CONNECT": {
- "modified": "2020-10-15T22:08:59.762Z",
- "contributors": [
- "flyinglimao"
- ]
- },
- "Web/HTTP/Methods/GET": {
- "modified": "2020-10-15T22:16:59.594Z",
- "contributors": [
- "sheiun"
- ]
- },
- "Web/HTTP/Methods/POST": {
- "modified": "2020-10-15T22:17:01.111Z",
- "contributors": [
- "sheiun"
- ]
- },
- "Web/HTTP/Protocol_upgrade_mechanism": {
- "modified": "2019-11-03T23:58:28.570Z",
- "contributors": [
- "nientsu"
- ]
- },
- "Web/HTTP/Server-Side_Access_Control": {
- "modified": "2019-03-23T22:06:20.131Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/HTTP/Status": {
- "modified": "2020-10-15T21:38:22.963Z",
- "contributors": [
- "gogo.sanak",
- "sideshowbarker",
- "lesikolerina23",
- "SphinxKnight",
- "bobo.debila",
- "iigmir",
- "Fu_revwigs",
- "slivenred",
- "gamerslouis",
- "tz70s",
- "Hunsin",
- "fscholz",
- "jwhitlock",
- "alk03073135"
- ]
- },
- "Web/HTTP/Status/100": {
- "modified": "2020-10-15T22:17:55.422Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/101": {
- "modified": "2019-04-28T12:49:13.643Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/200": {
- "modified": "2020-10-15T22:02:32.760Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Status/201": {
- "modified": "2020-10-15T22:18:06.540Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/202": {
- "modified": "2019-05-04T10:35:23.469Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/203": {
- "modified": "2019-05-18T10:26:00.843Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/204": {
- "modified": "2020-10-15T22:18:45.174Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/205": {
- "modified": "2019-05-18T10:36:04.142Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/206": {
- "modified": "2020-10-15T22:19:35.757Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/300": {
- "modified": "2019-06-01T11:53:52.718Z",
- "contributors": [
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/301": {
- "modified": "2020-10-15T22:19:36.009Z",
- "contributors": [
- "iigmir",
- "Fu_revwigs"
- ]
- },
- "Web/HTTP/Status/403": {
- "modified": "2020-10-15T22:18:46.702Z",
- "contributors": [
- "gamerslouis"
- ]
- },
- "Web/HTTP/Status/404": {
- "modified": "2020-10-15T22:00:39.486Z",
- "contributors": [
- "bobo.debila",
- "iigmir"
- ]
- },
- "Web/HTTP/Status/409": {
- "modified": "2019-06-23T09:33:36.008Z",
- "contributors": [
- "gamerslouis"
- ]
- },
- "Web/HTTP/Status/411": {
- "modified": "2019-06-23T09:22:09.625Z",
- "contributors": [
- "gamerslouis"
- ]
- },
- "Web/HTTP/Status/415": {
- "modified": "2019-06-23T09:29:51.676Z",
- "contributors": [
- "gamerslouis"
- ]
- },
- "Web/HTTP/Status/418_I_m_a_teapot": {
- "modified": "2020-10-15T22:00:43.617Z",
- "contributors": [
- "iigmir",
- "dzamlo"
- ]
- },
- "Web/HTTP/Status/451": {
- "modified": "2020-10-15T22:02:32.084Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/HTTP/Status/500": {
- "modified": "2020-10-15T22:00:42.137Z",
- "contributors": [
- "YagoZang",
- "sideshowbarker",
- "lesikolerina23",
- "iigmir",
- "slivenred"
- ]
- },
- "Web/HTTP/Status/502": {
- "modified": "2020-10-15T22:22:34.836Z",
- "contributors": [
- "bobo.debila",
- "iigmir",
- "slivenred"
- ]
- },
- "Web/HTTP/Status/503": {
- "modified": "2020-10-15T22:21:37.501Z",
- "contributors": [
- "iigmir",
- "slivenred",
- "katsmin"
- ]
- },
- "Web/HTTP/Status/504": {
- "modified": "2020-11-05T06:35:40.877Z",
- "contributors": [
- "terrylinooo",
- "sideshowbarker",
- "lesikolerina23",
- "iigmir",
- "slivenred"
- ]
- },
- "Web/HTTP/data_URIs": {
- "modified": "2020-06-09T11:41:01.440Z",
- "contributors": [
- "jhihruei",
- "jwhitlock",
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/JavaScript": {
- "modified": "2020-05-24T01:05:47.129Z",
- "contributors": [
- "nighet",
- "SphinxKnight",
- "nykevinwong",
- "xerviam",
- "iigmir",
- "cwlin0416",
- "thomasaria",
- "dolphinlin",
- "flyinglimao",
- "jackblackevo",
- "mai7855",
- "Shiyou",
- "wildsky",
- "teoli",
- "steely.wing",
- "ethertank",
- "sycheng",
- "sailplaneTW",
- "linhomeyeu",
- "happysadman",
- "Mgjbot",
- "BobChao",
- "kourge"
- ]
- },
- "Web/JavaScript/A_re-introduction_to_JavaScript": {
- "modified": "2020-03-12T19:36:04.881Z",
- "contributors": [
- "kourge",
- "locker_rj45",
- "Q3Q",
- "weihanglo",
- "teoli",
- "jackblackevo",
- "TpWILovePanda",
- "changyuheng",
- "ArvinH",
- "sailplaneTW",
- "linhomeyeu",
- "fillano",
- "fscholz",
- "Mgjbot",
- "Smallwow",
- "BobChao"
- ]
- },
- "Web/JavaScript/About_JavaScript": {
- "modified": "2020-03-12T19:35:23.761Z",
- "contributors": [
- "Talence0329",
- "jackblackevo",
- "irvinfly",
- "teoli",
- "ethertank",
- "Sonrisa",
- "sycheng"
- ]
- },
- "Web/JavaScript/Closures": {
- "modified": "2020-08-07T04:58:02.421Z",
- "contributors": [
- "vincent7293",
- "shuboc",
- "iigmir",
- "roycrxtw",
- "BigHeadDoggy",
- "flyinglimao"
- ]
- },
- "Web/JavaScript/Data_structures": {
- "modified": "2020-08-01T13:14:09.974Z",
- "contributors": [
- "nannxnann",
- "samzzz",
- "iigmir",
- "jackblackevo",
- "eldisa"
- ]
- },
- "Web/JavaScript/Enumerability_and_ownership_of_properties": {
- "modified": "2020-03-12T19:44:21.130Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Equality_comparisons_and_sameness": {
- "modified": "2020-03-12T19:44:59.221Z",
- "contributors": [
- "jsgao0",
- "flyinglimao"
- ]
- },
- "Web/JavaScript/EventLoop": {
- "modified": "2020-03-12T19:44:52.158Z",
- "contributors": [
- "xuan0123",
- "jackblackevo",
- "roycrxtw",
- "YuCheng",
- "Snailpool",
- "flyinglimao",
- "enzoyaaaaa"
- ]
- },
- "Web/JavaScript/Guide": {
- "modified": "2020-10-12T05:01:38.453Z",
- "contributors": [
- "ShawnLin",
- "nykevinwong",
- "jackblackevo",
- "cwlin0416",
- "jwhitlock",
- "teoli",
- "sycheng"
- ]
- },
- "Web/JavaScript/Guide/Control_flow_and_error_handling": {
- "modified": "2020-03-12T19:44:28.801Z",
- "contributors": [
- "akccakcctw",
- "iigmir",
- "dews",
- "jackblackevo",
- "Yuki0916",
- "jwhitlock",
- "Kaiyeh"
- ]
- },
- "Web/JavaScript/Guide/Details_of_the_Object_Model": {
- "modified": "2020-03-12T19:38:25.366Z",
- "contributors": [
- "wbamberg",
- "SphinxKnight",
- "jwhitlock",
- "jackblackevo",
- "teoli",
- "steely.wing"
- ]
- },
- "Web/JavaScript/Guide/Expressions_and_Operators": {
- "modified": "2020-10-12T06:55:01.538Z",
- "contributors": [
- "ShawnLin",
- "jackblackevo",
- "Kaiyeh"
- ]
- },
- "Web/JavaScript/Guide/Functions": {
- "modified": "2020-03-12T19:39:15.149Z",
- "contributors": [
- "wbamberg",
- "jwhitlock",
- "Kaiyeh",
- "iigmir",
- "jackblackevo",
- "teoli",
- "thomaschen"
- ]
- },
- "Web/JavaScript/Guide/Grammar_and_types": {
- "modified": "2020-05-26T04:33:48.056Z",
- "contributors": [
- "chumicat",
- "King_Tzeng",
- "YiyuWu",
- "nykevinwong",
- "Ruiyuan34",
- "jackblackevo",
- "Jenhaohsiao",
- "KevinHuang",
- "JianHuaHe",
- "jwhitlock",
- "Jack_Wu",
- "lynn456",
- "dodo4910",
- "septemhill",
- "fscholz",
- "victor0801x",
- "ShadowV",
- "teoli",
- "titan.liu"
- ]
- },
- "Web/JavaScript/Guide/Indexed_collections": {
- "modified": "2020-03-12T19:47:20.689Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Guide/Introduction": {
- "modified": "2020-03-12T19:35:21.304Z",
- "contributors": [
- "wbamberg",
- "mingyangshih",
- "jwhitlock",
- "jackblackevo",
- "fscholz",
- "irvinfly",
- "teoli",
- "ethertank",
- "sycheng"
- ]
- },
- "Web/JavaScript/Guide/Iterators_and_Generators": {
- "modified": "2020-03-23T19:43:30.431Z",
- "contributors": [
- "hiimeimei",
- "wanjingzhang"
- ]
- },
- "Web/JavaScript/Guide/Keyed_collections": {
- "modified": "2020-03-12T19:42:35.494Z",
- "contributors": [
- "jackblackevo",
- "jwhitlock",
- "fscholz",
- "Shiyou"
- ]
- },
- "Web/JavaScript/Guide/Loops_and_iteration": {
- "modified": "2020-03-12T19:44:25.077Z",
- "contributors": [
- "MartinChang0723",
- "jackblackevo",
- "AmamiyaLee"
- ]
- },
- "Web/JavaScript/Guide/Numbers_and_dates": {
- "modified": "2020-08-17T03:02:46.243Z",
- "contributors": [
- "kenchill",
- "UnciaX"
- ]
- },
- "Web/JavaScript/Guide/Regular_Expressions": {
- "modified": "2020-05-25T23:31:32.570Z",
- "contributors": [
- "LeoWangJ",
- "oooooo",
- "Lazine",
- "yosia",
- "seantw",
- "drinktea28",
- "joshra",
- "jackblackevo",
- "Jiaaa1014",
- "jwhitlock",
- "Kustz",
- "pppdog",
- "m80126colin",
- "Shiyou",
- "teoli",
- "Rplus"
- ]
- },
- "Web/JavaScript/Guide/Using_promises": {
- "modified": "2020-03-12T19:47:23.033Z",
- "contributors": [
- "HamiltonWang",
- "flyinglimao"
- ]
- },
- "Web/JavaScript/Guide/Working_with_Objects": {
- "modified": "2020-03-12T19:38:34.548Z",
- "contributors": [
- "Euphokumiko",
- "SphinxKnight",
- "AhQi",
- "jwhitlock",
- "pytseng",
- "jackblackevo",
- "iigmir",
- "jigs12",
- "YuXiangYen",
- "teoli",
- "steely.wing"
- ]
- },
- "Web/JavaScript/Inheritance_and_the_prototype_chain": {
- "modified": "2020-11-20T06:14:21.309Z",
- "contributors": [
- "tpps88206",
- "pmc12thsuki",
- "osk2",
- "jackblackevo",
- "iigmir",
- "WellyHong",
- "hiiamyes",
- "Snailpool"
- ]
- },
- "Web/JavaScript/Introduction_to_Object-Oriented_JavaScript": {
- "modified": "2020-08-05T00:50:19.955Z",
- "contributors": [
- "nientsu",
- "cwlin0416",
- "fscholz",
- "jackblackevo",
- "nightsnow0918",
- "irvinfly",
- "sailplaneTW"
- ]
- },
- "Web/JavaScript/JavaScript_technologies_overview": {
- "modified": "2020-03-12T19:35:23.439Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "irvinfly",
- "chiayuan"
- ]
- },
- "Web/JavaScript/Language_Resources": {
- "modified": "2020-03-12T19:36:06.284Z",
- "contributors": [
- "jackblackevo",
- "fscholz",
- "irvinfly",
- "sailplaneTW"
- ]
- },
- "Web/JavaScript/Memory_Management": {
- "modified": "2020-12-04T15:05:56.547Z",
- "contributors": [
- "chengr4",
- "ballfish",
- "mybaseball52"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/JavaScript_概要": {
- "modified": "2019-01-16T14:44:37.660Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要": {
- "modified": "2019-01-16T14:43:16.706Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/Unicode": {
- "modified": "2019-01-16T14:44:25.337Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/以類別為基礎的語言_vs._以原型為基礎的語言": {
- "modified": "2019-01-16T14:43:47.289Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/例外處理語法": {
- "modified": "2019-03-24T00:00:58.152Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/例外處理語法/throw_語法": {
- "modified": "2019-03-24T00:00:57.682Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/例外處理語法/try...catch_語法": {
- "modified": "2020-08-31T05:59:42.160Z",
- "contributors": [
- "clifflu",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/值": {
- "modified": "2019-01-16T14:44:19.901Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/再談屬性的繼承": {
- "modified": "2019-01-16T14:43:20.597Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/再談屬性的繼承/實體關係的確定": {
- "modified": "2019-01-16T14:43:13.719Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/再談屬性的繼承/局域值和繼承值": {
- "modified": "2019-01-16T14:43:16.085Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/再談屬性的繼承/建構子中的全域資訊": {
- "modified": "2019-01-16T14:43:20.683Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/再談屬性的繼承/沒有多重繼承": {
- "modified": "2019-01-16T14:43:21.630Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/函數的呼叫": {
- "modified": "2019-03-24T00:00:58.959Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/函數的定義": {
- "modified": "2019-01-16T14:44:26.521Z",
- "contributors": [
- "teoli",
- "Sheppy",
- "Jaric",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/區塊語法": {
- "modified": "2019-01-16T13:06:24.647Z",
- "contributors": [
- "teoli",
- "Sheppy",
- "Jaric",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/字面表達": {
- "modified": "2019-01-16T14:44:20.274Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/常數": {
- "modified": "2019-01-16T14:44:19.601Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/建立新的物件": {
- "modified": "2019-03-24T00:01:06.649Z",
- "contributors": [
- "wbamberg",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法": {
- "modified": "2019-01-16T14:44:21.815Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法/break_語法": {
- "modified": "2019-03-24T00:00:58.023Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法/continue_語法": {
- "modified": "2019-03-24T00:01:00.198Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法/do...while_語法": {
- "modified": "2019-03-24T00:00:59.356Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法/for_語法": {
- "modified": "2019-03-24T00:01:11.869Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法/label_語法": {
- "modified": "2019-03-24T00:01:01.557Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/循環語法/while_語法": {
- "modified": "2019-03-24T00:01:00.950Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立": {
- "modified": "2019-03-24T00:01:06.394Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/Getter_和_Setter_的定義": {
- "modified": "2019-03-24T00:01:05.950Z",
- "contributors": [
- "fscholz",
- "jigs12",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/使用_this_取得物件的參考": {
- "modified": "2019-03-24T00:01:06.045Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/屬性的刪除": {
- "modified": "2019-03-24T00:01:04.888Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/建構子函數的使用": {
- "modified": "2019-03-24T00:01:06.293Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/方法的定義": {
- "modified": "2019-03-24T00:01:03.034Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/物件初始化子的使用": {
- "modified": "2019-03-24T00:01:06.480Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/物件屬性的索引": {
- "modified": "2019-03-24T00:01:04.238Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/新物件的建立/針對物件的類型定義屬性": {
- "modified": "2019-03-24T00:01:04.444Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/條件語法": {
- "modified": "2019-01-16T14:43:51.018Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式模式的編寫": {
- "modified": "2019-03-24T00:00:58.884Z",
- "contributors": [
- "wildsky",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式的建立": {
- "modified": "2019-03-24T00:01:00.293Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式的運用": {
- "modified": "2019-01-16T14:44:21.287Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式的運用/使用標誌的進階搜尋": {
- "modified": "2019-01-16T14:44:23.103Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式的運用/括弧子字串的比對結果的運用": {
- "modified": "2019-01-16T14:44:25.974Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式的運用/正規表達式的範例": {
- "modified": "2019-03-24T00:00:59.567Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/物件和屬性": {
- "modified": "2019-01-16T14:44:03.755Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/物件的操作語法": {
- "modified": "2019-03-24T00:00:59.074Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/繼承": {
- "modified": "2019-03-24T00:01:09.212Z",
- "contributors": [
- "jsgao0",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/職員的例子": {
- "modified": "2019-03-24T00:01:18.422Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/職員的例子/更靈活的建構子": {
- "modified": "2019-01-16T14:43:17.913Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/職員的例子/物件的屬性": {
- "modified": "2019-03-24T00:01:21.807Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/職員的例子/物件的屬性/屬性的加入": {
- "modified": "2019-03-24T00:01:15.806Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/職員的例子/物件的屬性/屬性的繼承": {
- "modified": "2019-03-24T00:01:17.728Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/職員的例子/階層的建立": {
- "modified": "2019-03-24T00:01:17.848Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/表達式": {
- "modified": "2019-01-16T14:44:25.015Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/註解": {
- "modified": "2019-01-16T14:44:18.898Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/變數": {
- "modified": "2019-01-16T14:44:20.971Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/迭代器和產生器": {
- "modified": "2019-03-24T00:01:19.860Z",
- "contributors": [
- "wbamberg",
- "teoli",
- "Wladimir_Palant",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子": {
- "modified": "2019-01-16T14:44:25.230Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/代入運算子": {
- "modified": "2019-03-24T00:01:01.353Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/位元運算子": {
- "modified": "2019-01-16T14:44:24.141Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/字串運算子": {
- "modified": "2019-01-16T14:44:19.884Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/比較運算子": {
- "modified": "2019-01-16T14:44:28.417Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/特殊運算子": {
- "modified": "2019-01-16T14:44:24.727Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/算術運算子": {
- "modified": "2019-01-16T14:44:25.132Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/邏輯運算子": {
- "modified": "2019-01-16T14:44:21.016Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/閉包的運用": {
- "modified": "2019-01-16T14:44:07.939Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/關於": {
- "modified": "2019-01-16T14:44:22.263Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/陣列的運用": {
- "modified": "2019-03-24T00:01:19.124Z",
- "contributors": [
- "wbamberg",
- "Jaja",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數": {
- "modified": "2019-01-16T14:44:03.697Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數/Number_和_String_函數": {
- "modified": "2019-03-24T00:01:05.054Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數/escape_和_unescape_函數": {
- "modified": "2019-03-24T00:01:07.501Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數/eval_函數": {
- "modified": "2019-01-16T14:44:04.783Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數/isFinite_函數": {
- "modified": "2019-03-24T00:01:03.372Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數/isNaN_函數": {
- "modified": "2019-03-24T00:01:04.794Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的函數/parseInt_和_parseFloat_函數": {
- "modified": "2019-03-24T00:01:07.340Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件": {
- "modified": "2019-01-16T14:44:07.734Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/Array_物件": {
- "modified": "2019-03-24T00:01:13.553Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/Boolean_物件": {
- "modified": "2019-03-24T00:01:13.158Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/Date_物件": {
- "modified": "2019-03-24T00:01:09.665Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/Function_物件": {
- "modified": "2019-03-24T00:01:12.219Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/Math_物件": {
- "modified": "2019-03-24T00:01:08.965Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/Number_物件": {
- "modified": "2019-03-24T00:01:11.242Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/RegExp_物件": {
- "modified": "2019-03-24T00:01:13.910Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/預先定義的核心物件/String_物件": {
- "modified": "2019-03-24T00:01:08.836Z",
- "contributors": [
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Reference": {
- "modified": "2020-06-02T20:54:32.743Z",
- "contributors": [
- "laampui",
- "cwlin0416",
- "jackblackevo",
- "teoli",
- "irvinfly",
- "tjjh89017",
- "Zhen.Di-Lin",
- "Norbert"
- ]
- },
- "Web/JavaScript/Reference/Classes": {
- "modified": "2020-03-12T19:42:37.772Z",
- "contributors": [
- "hot50773",
- "Aries0d0f",
- "chloewlin",
- "roycrxtw",
- "akccakcctw",
- "ywchiao",
- "fbukevin"
- ]
- },
- "Web/JavaScript/Reference/Classes/constructor": {
- "modified": "2020-07-23T05:05:44.137Z",
- "contributors": [
- "t7yang",
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Classes/extends": {
- "modified": "2020-10-15T22:06:07.272Z",
- "contributors": [
- "Aries0d0f"
- ]
- },
- "Web/JavaScript/Reference/Classes/static": {
- "modified": "2020-03-12T19:43:06.328Z",
- "contributors": [
- "alkalineW",
- "jerrychen1013",
- "Robert-Rino"
- ]
- },
- "Web/JavaScript/Reference/Errors": {
- "modified": "2020-03-12T19:44:53.537Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Bad_return_or_yield": {
- "modified": "2020-03-12T19:44:54.646Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Invalid_array_length": {
- "modified": "2020-03-12T19:49:01.235Z",
- "contributors": [
- "gamerslouis"
- ]
- },
- "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": {
- "modified": "2020-03-12T19:47:08.262Z",
- "contributors": [
- "PCLIN1103"
- ]
- },
- "Web/JavaScript/Reference/Errors/No_properties": {
- "modified": "2020-03-12T19:47:20.608Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Not_a_function": {
- "modified": "2020-03-12T19:45:02.118Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Not_defined": {
- "modified": "2020-03-12T19:44:53.089Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Redeclared_parameter": {
- "modified": "2020-03-12T19:47:17.103Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Too_much_recursion": {
- "modified": "2020-03-12T19:44:57.763Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Errors/Unexpected_type": {
- "modified": "2019-03-23T22:20:43.997Z",
- "contributors": [
- "andytwmvp",
- "iigmir",
- "kimi1111"
- ]
- },
- "Web/JavaScript/Reference/Functions": {
- "modified": "2020-03-12T19:41:25.162Z",
- "contributors": [
- "lynn456",
- "fscholz"
- ]
- },
- "Web/JavaScript/Reference/Functions/Arrow_functions": {
- "modified": "2020-10-15T21:36:09.562Z",
- "contributors": [
- "iigmir",
- "ShawnLin",
- "Lazine",
- "xuan0123",
- "bagayollow",
- "ctc53",
- "kuolun",
- "jackblackevo",
- "freddy50806",
- "Aisuzuka",
- "Jaja",
- "tonykuo",
- "yungtah",
- "Snailpool",
- "wkliang",
- "linjimmy168",
- "foxbrush"
- ]
- },
- "Web/JavaScript/Reference/Functions/Default_parameters": {
- "modified": "2020-10-05T03:37:47.112Z",
- "contributors": [
- "realspirit2017",
- "Jackson45252",
- "jsgao0",
- "Snailpool"
- ]
- },
- "Web/JavaScript/Reference/Functions/Method_definitions": {
- "modified": "2020-10-15T21:55:16.559Z",
- "contributors": [
- "iigmir",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Functions/arguments": {
- "modified": "2020-10-15T21:14:39.550Z",
- "contributors": [
- "itsems",
- "jackblackevo",
- "akari0624",
- "fscholz",
- "irvinfly",
- "teoli",
- "happysadman"
- ]
- },
- "Web/JavaScript/Reference/Functions/arguments/callee": {
- "modified": "2020-03-12T19:45:29.084Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Functions/get": {
- "modified": "2020-10-15T22:17:05.787Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Functions/rest_parameters": {
- "modified": "2020-10-15T21:56:42.865Z",
- "contributors": [
- "Kevin_Chen",
- "jackblackevo",
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Functions/set": {
- "modified": "2020-10-15T22:17:33.994Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects": {
- "modified": "2020-03-12T19:38:39.590Z",
- "contributors": [
- "tony8382",
- "chialin",
- "jackblackevo",
- "jsgao0",
- "cwlin0416",
- "teoli",
- "Sheppy"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array": {
- "modified": "2020-10-15T21:31:26.717Z",
- "contributors": [
- "hua-123",
- "kyob1010",
- "Aries0d0f",
- "KevinHuang",
- "k940545",
- "jackblackevo",
- "tswenja",
- "kdex",
- "petercpg",
- "Kaiyeh",
- "cwlin0416",
- "oooooo",
- "m80126colin",
- "lizlux"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": {
- "modified": "2020-10-15T22:02:20.291Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/Reduce": {
- "modified": "2020-10-15T21:54:40.258Z",
- "contributors": [
- "Ashe_Li",
- "jackblackevo",
- "iigmir",
- "dwatow",
- "yozian"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/concat": {
- "modified": "2020-10-15T21:46:28.512Z",
- "contributors": [
- "jackblackevo",
- "tericky"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": {
- "modified": "2020-10-15T22:01:15.329Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/entries": {
- "modified": "2020-10-15T21:47:10.197Z",
- "contributors": [
- "jackblackevo",
- "tericky"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/every": {
- "modified": "2020-10-15T21:56:41.781Z",
- "contributors": [
- "jackblackevo",
- "AkanishiChi",
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/fill": {
- "modified": "2020-10-15T21:56:41.165Z",
- "contributors": [
- "jackblackevo",
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/filter": {
- "modified": "2020-10-15T21:38:35.707Z",
- "contributors": [
- "Jenhaohsiao",
- "jackblackevo",
- "iigmir",
- "jsgao0",
- "alk03073135"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/find": {
- "modified": "2020-10-15T21:42:27.701Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "ALiangLiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/findIndex": {
- "modified": "2020-10-15T21:51:49.109Z",
- "contributors": [
- "jackblackevo",
- "tooto1985",
- "auver",
- "Snailpool"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/flat": {
- "modified": "2020-10-15T22:11:38.333Z",
- "contributors": [
- "SageX",
- "Euphokumiko"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/forEach": {
- "modified": "2020-10-15T21:46:18.574Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "wangqimeng",
- "nt46",
- "akari0624"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/from": {
- "modified": "2020-10-15T21:52:49.849Z",
- "contributors": [
- "qwer5656",
- "jackblackevo",
- "petercpg",
- "tericky"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/includes": {
- "modified": "2020-10-15T22:02:19.463Z",
- "contributors": [
- "SiderealArt",
- "sonelin09",
- "xuan311",
- "vaynewang",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/indexOf": {
- "modified": "2020-10-15T21:56:48.783Z",
- "contributors": [
- "jackblackevo",
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/isArray": {
- "modified": "2020-10-15T21:34:45.216Z",
- "contributors": [
- "jackblackevo",
- "tericky",
- "m80126colin",
- "JamesWen",
- "onlinemad"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/join": {
- "modified": "2020-10-15T21:47:08.883Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "JamesWen"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/keys": {
- "modified": "2020-10-15T22:02:18.808Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": {
- "modified": "2020-10-15T22:02:16.799Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/length": {
- "modified": "2020-10-15T21:58:21.627Z",
- "contributors": [
- "tericky",
- "yenchenglai0618",
- "mybaseball52"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/map": {
- "modified": "2020-10-15T21:53:08.025Z",
- "contributors": [
- "iigmir",
- "jackblackevo",
- "jWorker",
- "akari0624"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/of": {
- "modified": "2020-10-15T22:01:03.622Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/pop": {
- "modified": "2020-10-15T21:56:21.800Z",
- "contributors": [
- "jackblackevo",
- "yvonne6344"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/push": {
- "modified": "2020-10-15T21:42:28.441Z",
- "contributors": [
- "jackblackevo",
- "yvonne6344",
- "iigmir",
- "ALiangLiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/reverse": {
- "modified": "2020-10-15T21:31:21.385Z",
- "contributors": [
- "jackblackevo",
- "CYBAI"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/shift": {
- "modified": "2020-10-15T21:50:12.873Z",
- "contributors": [
- "jackblackevo",
- "marktwtn"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/slice": {
- "modified": "2020-10-15T22:00:48.969Z",
- "contributors": [
- "rosa",
- "pig3629",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/some": {
- "modified": "2020-10-15T22:02:17.128Z",
- "contributors": [
- "iigmir",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/sort": {
- "modified": "2020-10-15T21:31:18.682Z",
- "contributors": [
- "jackblackevo",
- "CYBAI"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/splice": {
- "modified": "2020-10-15T21:56:28.206Z",
- "contributors": [
- "jackblackevo",
- "jsgao0",
- "Mars-Hung"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/unshift": {
- "modified": "2020-10-15T21:50:29.110Z",
- "contributors": [
- "jsgao0",
- "jackblackevo",
- "roycrxtw",
- "marktwtn"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Array/values": {
- "modified": "2020-10-15T22:02:17.406Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": {
- "modified": "2019-03-24T00:11:11.336Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "Kennyluck"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype": {
- "modified": "2019-03-23T22:31:10.924Z",
- "contributors": [
- "teoli",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/AsyncFunction": {
- "modified": "2020-10-15T22:18:02.118Z",
- "contributors": [
- "gamerslouis"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/BigInt": {
- "modified": "2020-10-15T22:17:57.888Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Boolean": {
- "modified": "2019-03-23T22:06:45.293Z",
- "contributors": [
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/DataView": {
- "modified": "2019-03-23T22:31:20.723Z",
- "contributors": [
- "edu1218",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Date": {
- "modified": "2019-03-23T22:26:48.329Z",
- "contributors": [
- "NoobTW",
- "ddtet"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Date/UTC": {
- "modified": "2019-03-23T22:26:04.734Z",
- "contributors": [
- "ddtet"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Date/getDay": {
- "modified": "2020-10-15T22:34:16.631Z",
- "contributors": [
- "manny3"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Date/now": {
- "modified": "2019-03-23T22:26:18.288Z",
- "contributors": [
- "ddtet"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Date/prototype": {
- "modified": "2019-03-23T22:26:36.902Z",
- "contributors": [
- "ddtet"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Error": {
- "modified": "2019-03-23T22:30:39.821Z",
- "contributors": [
- "jsgao0",
- "jackblackevo",
- "josephmcasey"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Error/columnNumber": {
- "modified": "2019-03-23T22:30:40.645Z",
- "contributors": [
- "teoli",
- "jerrychen1013"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Function": {
- "modified": "2019-03-23T23:25:10.636Z",
- "contributors": [
- "Calvin-Huang",
- "jackblackevo",
- "teoli",
- "Bergi"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Function/apply": {
- "modified": "2020-04-16T06:07:17.467Z",
- "contributors": [
- "jacko1114",
- "ayuha406645",
- "Snailpool"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Function/bind": {
- "modified": "2019-03-23T22:07:11.766Z",
- "contributors": [
- "storyh66224",
- "iigmir",
- "nyngwang",
- "aaaOOttOOaaa"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Function/call": {
- "modified": "2019-03-23T23:25:00.404Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "Zhen.Di-Lin"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Function/length": {
- "modified": "2019-03-23T22:39:23.276Z",
- "contributors": [
- "CYBAI",
- "lessmind"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Function/prototype": {
- "modified": "2019-03-23T22:30:13.335Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Infinity": {
- "modified": "2020-10-15T21:47:39.391Z",
- "contributors": [
- "iigmir",
- "tooto1985",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/JSON": {
- "modified": "2020-10-15T21:48:40.820Z",
- "contributors": [
- "rolflo",
- "iigmir",
- "Ende93"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/JSON/parse": {
- "modified": "2020-04-17T04:18:46.439Z",
- "contributors": [
- "jacko1114",
- "bigbitesaint",
- "matthung0807",
- "iigmir",
- "kuolun"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/JSON/stringify": {
- "modified": "2020-10-15T22:00:16.083Z",
- "contributors": [
- "gyau97",
- "SolomonKang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Map": {
- "modified": "2020-10-15T21:51:34.887Z",
- "contributors": [
- "othree",
- "tainenko",
- "jackblackevo",
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math": {
- "modified": "2020-10-15T21:38:29.906Z",
- "contributors": [
- "hmysjiang",
- "jackblackevo",
- "fscholz"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/abs": {
- "modified": "2020-10-15T22:02:08.344Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/ceil": {
- "modified": "2020-10-15T22:02:07.035Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/floor": {
- "modified": "2020-10-15T22:02:06.863Z",
- "contributors": [
- "ted31013",
- "chochinlu",
- "Hagen",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/max": {
- "modified": "2020-10-15T22:03:35.771Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/pow": {
- "modified": "2020-10-21T10:01:06.689Z",
- "contributors": [
- "SvampK",
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/random": {
- "modified": "2020-10-17T07:58:50.159Z",
- "contributors": [
- "RocketSH"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Math/round": {
- "modified": "2019-03-23T22:48:34.807Z",
- "contributors": [
- "alk03073135"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/NaN": {
- "modified": "2020-10-15T21:47:39.178Z",
- "contributors": [
- "iigmir",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Number": {
- "modified": "2019-03-23T22:28:21.747Z",
- "contributors": [
- "jsgao0",
- "sha1337"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Number/isFinite": {
- "modified": "2020-10-15T22:03:26.099Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Number/isNaN": {
- "modified": "2020-10-15T22:14:14.999Z",
- "contributors": [
- "xguang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Number/prototype": {
- "modified": "2020-10-15T21:56:46.161Z",
- "contributors": [
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Number/toExponential": {
- "modified": "2019-03-23T22:28:18.890Z",
- "contributors": [
- "jsgao0",
- "Shiyou"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Number/toFixed": {
- "modified": "2020-11-18T05:27:56.696Z",
- "contributors": [
- "Johnnychun",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object": {
- "modified": "2020-08-22T05:49:39.644Z",
- "contributors": [
- "+ono+",
- "kuolun",
- "jackblackevo",
- "fscholz"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/assign": {
- "modified": "2020-10-15T21:51:19.104Z",
- "contributors": [
- "manny3",
- "lmr3796",
- "mitivic",
- "BruceLi",
- "septemhill",
- "jsgao0"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/create": {
- "modified": "2019-03-23T22:30:34.696Z",
- "contributors": [
- "yuugou727",
- "septemhill",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": {
- "modified": "2019-03-23T22:18:00.161Z",
- "contributors": [
- "septemhill"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": {
- "modified": "2020-10-15T21:52:17.805Z",
- "contributors": [
- "iigmir",
- "PeterTing",
- "btooom",
- "jsgao0",
- "septemhill"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/freeze": {
- "modified": "2020-10-15T22:00:25.623Z",
- "contributors": [
- "leowu"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": {
- "modified": "2019-03-23T22:44:35.153Z",
- "contributors": [
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": {
- "modified": "2019-03-23T22:48:25.371Z",
- "contributors": [
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/keys": {
- "modified": "2019-03-23T22:30:46.813Z",
- "contributors": [
- "yuugou727",
- "roycrxtw",
- "kdex",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": {
- "modified": "2019-03-23T22:39:57.504Z",
- "contributors": [
- "ALiangLiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/proto": {
- "modified": "2020-10-15T22:00:26.656Z",
- "contributors": [
- "leowu"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Object/prototype": {
- "modified": "2019-03-23T22:44:24.956Z",
- "contributors": [
- "Shiyou",
- "alk03073135"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise": {
- "modified": "2020-10-15T21:50:59.376Z",
- "contributors": [
- "iigmir",
- "nyngwang",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/all": {
- "modified": "2020-10-15T21:51:02.408Z",
- "contributors": [
- "nyngwang",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/catch": {
- "modified": "2020-10-15T21:51:02.070Z",
- "contributors": [
- "nyngwang",
- "Calvin-Huang",
- "liuderchi",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/finally": {
- "modified": "2020-10-15T22:08:07.469Z",
- "contributors": [
- "t7yang",
- "l13013312333"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/prototype": {
- "modified": "2020-10-15T21:51:00.110Z",
- "contributors": [
- "nyngwang",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/race": {
- "modified": "2020-10-15T21:51:03.822Z",
- "contributors": [
- "james58899",
- "nyngwang",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/reject": {
- "modified": "2020-10-15T21:56:03.979Z",
- "contributors": [
- "nyngwang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/resolve": {
- "modified": "2020-10-15T21:56:02.943Z",
- "contributors": [
- "nyngwang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Promise/then": {
- "modified": "2020-10-15T21:51:00.608Z",
- "contributors": [
- "nyngwang",
- "jackblackevo",
- "liuderchi"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Proxy": {
- "modified": "2020-10-15T21:54:48.783Z",
- "contributors": [
- "aChinKaiWu",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/RangeError": {
- "modified": "2020-10-15T22:17:59.783Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Reflect": {
- "modified": "2019-03-23T22:11:01.546Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/RegExp": {
- "modified": "2020-10-15T22:28:47.846Z",
- "contributors": [
- "政衛"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set": {
- "modified": "2020-10-15T22:04:11.196Z",
- "contributors": [
- "manny3",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set/add": {
- "modified": "2020-10-15T22:17:57.665Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set/clear": {
- "modified": "2020-10-15T22:17:57.573Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set/delete": {
- "modified": "2020-10-15T22:17:57.330Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set/entries": {
- "modified": "2020-10-15T22:17:57.657Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set/has": {
- "modified": "2020-10-15T22:17:58.294Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/Set/values": {
- "modified": "2020-10-15T22:18:02.187Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/String": {
- "modified": "2020-10-15T21:28:07.530Z",
- "contributors": [
- "wbamberg",
- "jackblackevo",
- "jsgao0",
- "iigmir",
- "teoli",
- "fscholz"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/String/match": {
- "modified": "2020-10-15T22:05:42.504Z",
- "contributors": [
- "YF-Tung",
- "joshra"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/String/padStart": {
- "modified": "2019-03-23T22:19:32.101Z",
- "contributors": [
- "teoli",
- "lychee.tw"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/String/prototype": {
- "modified": "2020-10-15T22:02:57.359Z",
- "contributors": [
- "SphinxKnight",
- "bine139488"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/String/replace": {
- "modified": "2020-10-15T21:28:07.269Z",
- "contributors": [
- "oooooo",
- "joshra",
- "imrobinized",
- "iigmir",
- "jackblackevo",
- "teoli",
- "shyangs"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": {
- "modified": "2020-10-15T22:21:28.664Z",
- "contributors": [
- "goden.cheng"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/TypedArray": {
- "modified": "2020-10-15T21:47:14.859Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/URIError": {
- "modified": "2020-10-15T22:17:56.619Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/isNaN": {
- "modified": "2020-10-15T21:51:29.113Z",
- "contributors": [
- "bluetata",
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/null": {
- "modified": "2020-03-12T19:44:24.320Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/parseInt": {
- "modified": "2020-10-15T21:48:43.179Z",
- "contributors": [
- "kcliu",
- "DaiYaXu",
- "iigmir",
- "Shiyou"
- ]
- },
- "Web/JavaScript/Reference/Global_Objects/undefined": {
- "modified": "2020-10-15T21:47:42.561Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Iteration_protocols": {
- "modified": "2020-03-12T19:45:00.332Z",
- "contributors": [
- "jackblackevo",
- "nyngwang"
- ]
- },
- "Web/JavaScript/Reference/Lexical_grammar": {
- "modified": "2020-10-15T22:00:27.351Z",
- "contributors": [
- "leowu"
- ]
- },
- "Web/JavaScript/Reference/Operators": {
- "modified": "2020-03-12T19:38:35.397Z",
- "contributors": [
- "jackblackevo",
- "cwlin0416",
- "iigmir",
- "teoli",
- "Zhen.Di-Lin",
- "ethertank"
- ]
- },
- "Web/JavaScript/Reference/Operators/Arithmetic_Operators": {
- "modified": "2020-10-15T22:18:48.252Z",
- "contributors": [
- "zivalee"
- ]
- },
- "Web/JavaScript/Reference/Operators/Bitwise_Operators": {
- "modified": "2020-10-15T22:19:10.927Z",
- "contributors": [
- "hmysjiang"
- ]
- },
- "Web/JavaScript/Reference/Operators/Comma_Operator": {
- "modified": "2020-03-12T19:45:21.494Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Operators/Comparison_Operators": {
- "modified": "2020-03-12T19:45:23.267Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Operators/Conditional_Operator": {
- "modified": "2020-10-15T22:29:30.361Z",
- "contributors": [
- "liaocCM"
- ]
- },
- "Web/JavaScript/Reference/Operators/Destructuring_assignment": {
- "modified": "2020-10-15T21:51:08.444Z",
- "contributors": [
- "DexterLeung",
- "salagadoola",
- "iigmir",
- "jsgao0",
- "jackblackevo",
- "flyinglimao"
- ]
- },
- "Web/JavaScript/Reference/Operators/Logical_Operators": {
- "modified": "2020-10-15T22:19:41.845Z",
- "contributors": [
- "chunhh1012"
- ]
- },
- "Web/JavaScript/Reference/Operators/Object_initializer": {
- "modified": "2020-03-12T19:46:20.319Z",
- "contributors": [
- "cyanchu",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Operators/Operator_Precedence": {
- "modified": "2020-03-12T19:45:00.937Z",
- "contributors": [
- "KateWuSH",
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Operators/Optional_chaining": {
- "modified": "2020-10-15T22:28:31.905Z",
- "contributors": [
- "DexterLeung"
- ]
- },
- "Web/JavaScript/Reference/Operators/Spread_syntax": {
- "modified": "2020-10-15T22:33:09.945Z",
- "contributors": [
- "neko12377",
- "kenchill"
- ]
- },
- "Web/JavaScript/Reference/Operators/async_function": {
- "modified": "2020-10-15T22:12:38.986Z",
- "contributors": [
- "extend1994"
- ]
- },
- "Web/JavaScript/Reference/Operators/await": {
- "modified": "2020-03-12T19:45:41.284Z",
- "contributors": [
- "kuolun",
- "liuderchi",
- "roycrxtw"
- ]
- },
- "Web/JavaScript/Reference/Operators/super": {
- "modified": "2020-10-15T22:23:09.531Z",
- "contributors": [
- "YunHan-Tsai"
- ]
- },
- "Web/JavaScript/Reference/Operators/this": {
- "modified": "2020-10-15T21:48:46.137Z",
- "contributors": [
- "iigmir",
- "Rocker",
- "chloewlin"
- ]
- },
- "Web/JavaScript/Reference/Operators/typeof": {
- "modified": "2020-03-12T19:38:23.416Z",
- "contributors": [
- "roycrxtw",
- "jackblackevo",
- "teoli",
- "Johnny.Net"
- ]
- },
- "Web/JavaScript/Reference/Statements": {
- "modified": "2020-10-15T21:22:18.510Z",
- "contributors": [
- "simba-fs",
- "Ethan.Lin",
- "jackblackevo",
- "stdio2017",
- "cwlin0416",
- "teoli",
- "trevorh"
- ]
- },
- "Web/JavaScript/Reference/Statements/async_function": {
- "modified": "2020-10-15T21:53:37.954Z",
- "contributors": [
- "kevin10410",
- "iigmir",
- "weihanglo",
- "liuderchi"
- ]
- },
- "Web/JavaScript/Reference/Statements/block": {
- "modified": "2020-03-12T19:38:43.767Z",
- "contributors": [
- "lin1987www",
- "jackblackevo",
- "teoli",
- "irvinfly",
- "tjjh89017"
- ]
- },
- "Web/JavaScript/Reference/Statements/break": {
- "modified": "2020-10-15T21:25:32.531Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "Littlebtc",
- "tjjh89017"
- ]
- },
- "Web/JavaScript/Reference/Statements/const": {
- "modified": "2020-10-15T21:58:04.721Z",
- "contributors": [
- "iigmir",
- "KevinHuang"
- ]
- },
- "Web/JavaScript/Reference/Statements/debugger": {
- "modified": "2020-10-15T22:00:23.902Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Statements/export": {
- "modified": "2020-10-15T21:54:04.868Z",
- "contributors": [
- "wangchou",
- "iigmir",
- "DalaneGarmin",
- "MOSapeizer"
- ]
- },
- "Web/JavaScript/Reference/Statements/for...in": {
- "modified": "2020-03-12T19:39:20.179Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "shyangs"
- ]
- },
- "Web/JavaScript/Reference/Statements/function*": {
- "modified": "2020-10-15T21:45:50.090Z",
- "contributors": [
- "iendeavor",
- "jackblackevo",
- "DaomingC",
- "kdex",
- "ALiangLiang",
- "tom76kimo"
- ]
- },
- "Web/JavaScript/Reference/Statements/if...else": {
- "modified": "2020-12-06T07:23:20.735Z",
- "contributors": [
- "rei1997",
- "paiyuliu",
- "jackblackevo",
- "willynpi"
- ]
- },
- "Web/JavaScript/Reference/Statements/import": {
- "modified": "2020-10-15T21:53:11.297Z",
- "contributors": [
- "iigmir",
- "freddy50806",
- "pololin",
- "kweisamx",
- "RichCharlie",
- "DuckBreeder"
- ]
- },
- "Web/JavaScript/Reference/Statements/label": {
- "modified": "2020-10-15T22:15:49.920Z",
- "contributors": [
- "willh"
- ]
- },
- "Web/JavaScript/Reference/Statements/let": {
- "modified": "2020-10-15T21:45:04.003Z",
- "contributors": [
- "ShawnLin",
- "Zhang-Junzhi",
- "iigmir",
- "zxa011023",
- "YamiOdymel",
- "ALiangLiang"
- ]
- },
- "Web/JavaScript/Reference/Statements/return": {
- "modified": "2020-10-15T22:02:41.359Z",
- "contributors": [
- "iigmir"
- ]
- },
- "Web/JavaScript/Reference/Statements/switch": {
- "modified": "2020-10-15T22:25:04.906Z",
- "contributors": [
- "iigmir",
- "Lazine"
- ]
- },
- "Web/JavaScript/Reference/Statements/throw": {
- "modified": "2020-03-12T19:45:24.946Z",
- "contributors": [
- "jackblackevo"
- ]
- },
- "Web/JavaScript/Reference/Statements/var": {
- "modified": "2020-03-12T19:38:31.590Z",
- "contributors": [
- "jackblackevo",
- "teoli",
- "Johnny.Net"
- ]
- },
- "Web/JavaScript/Reference/Strict_mode": {
- "modified": "2020-03-12T19:46:40.566Z",
- "contributors": [
- "WellyHong",
- "Aries0d0f",
- "DarkNami",
- "MOSapeizer"
- ]
- },
- "Web/JavaScript/Reference/Template_literals": {
- "modified": "2020-10-15T21:53:17.228Z",
- "contributors": [
- "jackblackevo",
- "xsfishxs"
- ]
- },
- "Web/JavaScript/Shells": {
- "modified": "2020-03-12T19:45:29.748Z",
- "contributors": [
- "JianHuaHe"
- ]
- },
- "Web/JavaScript/Typed_arrays": {
- "modified": "2020-03-12T19:36:15.816Z",
- "contributors": [
- "ballfish",
- "jackblackevo",
- "roycrxtw",
- "teoli",
- "Kennyluck"
- ]
- },
- "Web/Manifest": {
- "modified": "2020-11-18T03:32:37.890Z",
- "contributors": [
- "SphinxKnight",
- "wifr1126q",
- "t7yang",
- "BwayCer"
- ]
- },
- "Web/MathML": {
- "modified": "2019-03-23T23:22:17.865Z",
- "contributors": [
- "sailplaneTW"
- ]
- },
- "Web/MathML/Authoring": {
- "modified": "2019-03-23T23:22:11.037Z",
- "contributors": [
- "fred.wang",
- "sailplaneTW"
- ]
- },
- "Web/Media": {
- "modified": "2019-03-18T21:40:43.859Z",
- "contributors": [
- "willynpi",
- "learnfromfail"
- ]
- },
- "Web/Media/Formats": {
- "modified": "2020-02-18T06:39:28.429Z",
- "contributors": [
- "Sheppy"
- ]
- },
- "Web/Media/Formats/Containers": {
- "modified": "2020-02-19T03:38:30.649Z",
- "contributors": [
- "JamesGoler"
- ]
- },
- "Web/OpenSearch": {
- "modified": "2019-03-23T22:00:23.747Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "teoli",
- "Mgjbot",
- "Sam268276",
- "BobChao"
- ]
- },
- "Web/Progressive_web_apps": {
- "modified": "2019-03-18T20:52:03.723Z",
- "contributors": [
- "chrisdavidmills",
- "iigmir"
- ]
- },
- "Web/Reference": {
- "modified": "2019-03-23T23:29:16.937Z",
- "contributors": [
- "jackblackevo",
- "Somnlent",
- "Sheppy"
- ]
- },
- "Web/Reference/API": {
- "modified": "2019-03-23T23:05:52.036Z",
- "contributors": [
- "jackblackevo",
- "wildsky"
- ]
- },
- "Web/SVG": {
- "modified": "2019-01-16T17:22:30.480Z",
- "contributors": [
- "ethertank",
- "happysadman"
- ]
- },
- "Web/SVG/Attribute": {
- "modified": "2019-03-23T23:26:15.897Z",
- "contributors": [
- "Jeremie"
- ]
- },
- "Web/SVG/Attribute/fill-rule": {
- "modified": "2019-03-23T23:26:22.091Z",
- "contributors": [
- "panallen"
- ]
- },
- "Web/SVG/Attribute/stroke-dashoffset": {
- "modified": "2019-03-20T22:42:12.300Z",
- "contributors": [
- "EnRico.Lam",
- "bing-Guo"
- ]
- },
- "Web/SVG/Tutorial": {
- "modified": "2019-03-23T23:35:01.636Z",
- "contributors": [
- "Snailpool",
- "sunghau",
- "ethertank",
- "ziyunfei",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/Fills_and_Strokes": {
- "modified": "2019-03-23T23:34:13.639Z",
- "contributors": [
- "jackblackevo",
- "ethertank",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/Getting_Started": {
- "modified": "2019-03-23T23:34:51.093Z",
- "contributors": [
- "jackblackevo",
- "Kustz",
- "ethertank",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/Gradients": {
- "modified": "2019-03-23T23:34:17.990Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "ethertank",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/Introduction": {
- "modified": "2019-03-23T23:34:52.348Z",
- "contributors": [
- "ethertank",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/Patterns": {
- "modified": "2019-03-23T23:34:09.915Z",
- "contributors": [
- "jackblackevo",
- "ethertank",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/Positions": {
- "modified": "2019-03-23T23:34:48.671Z",
- "contributors": [
- "Kustz",
- "ethertank",
- "ziyunfei",
- "Dx.Yang"
- ]
- },
- "Web/SVG/Tutorial/路径": {
- "modified": "2019-05-06T13:50:22.523Z",
- "contributors": [
- "Snailpool",
- "ethertank",
- "ziyunfei",
- "Dx.Yang"
- ]
- },
- "Web/SVG/教學": {
- "modified": "2019-01-16T14:42:54.040Z",
- "contributors": [
- "ethertank",
- "happysadman"
- ]
- },
- "Web/Security": {
- "modified": "2019-09-10T16:50:03.503Z",
- "contributors": [
- "SphinxKnight",
- "jackblackevo"
- ]
- },
- "Web/Security/Insecure_passwords": {
- "modified": "2019-03-20T14:57:01.510Z",
- "contributors": [
- "BaseChipmunk4",
- "iigmir",
- "jwhitlock"
- ]
- },
- "Web/Security/Mixed_content": {
- "modified": "2019-03-23T23:04:08.690Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "a780201",
- "wildsky",
- "Asheesh"
- ]
- },
- "Web/Security/Mixed_content/How_to_fix_website_with_mixed_content": {
- "modified": "2019-03-23T23:04:13.940Z",
- "contributors": [
- "jackblackevo",
- "iigmir",
- "wildsky"
- ]
- },
- "Web/Security/Same-origin_policy": {
- "modified": "2020-09-01T23:06:58.364Z",
- "contributors": [
- "JustBelieveMe",
- "jackblackevo",
- "MashKao",
- "teoli",
- "foxbrush"
- ]
- },
- "Web/Security/Weak_Signature_Algorithm": {
- "modified": "2019-04-23T04:20:20.884Z",
- "contributors": [
- "jackblackevo",
- "15182254444",
- "KINGKKALING",
- "Sbabey",
- "leVirve"
- ]
- },
- "Web/Tutorials": {
- "modified": "2019-09-03T07:07:31.640Z",
- "contributors": [
- "lalasoqTW",
- "katsmin",
- "mgrn",
- "KevinHuang.lds",
- "sailplaneTW"
- ]
- },
- "Web/性能": {
- "modified": "2019-12-05T10:33:09.898Z",
- "contributors": [
- "zhaoy88"
- ]
- },
- "WebAPI": {
- "modified": "2019-03-23T23:28:55.141Z",
- "contributors": [
- "wbamberg",
- "fscholz",
- "MashKao",
- "sailplaneTW"
- ]
- },
- "WebAPI/Permissions": {
- "modified": "2019-03-23T23:28:38.156Z",
- "contributors": [
- "MashKao"
- ]
- },
- "WebAssembly": {
- "modified": "2020-10-15T22:04:56.309Z",
- "contributors": [
- "Aries0d0f"
- ]
- },
- "WebSockets": {
- "modified": "2019-10-10T16:56:50.765Z",
- "contributors": [
- "teoli",
- "RudyLu",
- "Kennyluck"
- ]
- },
- "WebSockets/WebSockets_reference": {
- "modified": "2019-03-24T00:11:12.133Z",
- "contributors": [
- "teoli",
- "Kennyluck"
- ]
- },
- "WebSockets/WebSockets_reference/CloseEvent": {
- "modified": "2019-03-24T00:11:09.722Z",
- "contributors": [
- "teoli",
- "Kennyluck"
- ]
- },
- "WebSockets/WebSockets_reference/MessageEvent": {
- "modified": "2019-03-24T00:11:11.117Z",
- "contributors": [
- "teoli",
- "Kennyluck"
- ]
- },
- "WebSockets/WebSockets_reference/WebSocket": {
- "modified": "2019-03-24T00:11:12.042Z",
- "contributors": [
- "NoobTW",
- "YamiOdymel",
- "teoli",
- "Kennyluck"
- ]
- },
- "WebSockets/Writing_WebSocket_client_applications": {
- "modified": "2019-03-24T00:11:12.716Z",
- "contributors": [
- "andretw",
- "Shiyou",
- "ziyunfei",
- "Kennyluck"
- ]
- },
- "Web_development": {
- "modified": "2019-01-16T13:10:01.650Z",
- "contributors": [
- "teoli",
- "Sonrisa"
- ]
- },
- "Web_開發": {
- "modified": "2019-03-24T00:01:02.674Z",
- "contributors": [
- "happysadman"
- ]
- },
- "Web_開發/Historical_artifacts_to_avoid": {
- "modified": "2019-03-23T22:48:17.115Z",
- "contributors": [
- "iigmir",
- "CodinCat",
- "irvinfly",
- "slhuang"
- ]
- },
- "XHTML": {
- "modified": "2019-03-24T00:01:02.785Z",
- "contributors": [
- "ethertank",
- "happysadman"
- ]
- },
- "XPCNativeWrapper": {
- "modified": "2019-03-24T00:01:38.163Z",
- "contributors": [
- "ethertank",
- "Clydewu"
- ]
- },
- "zh-tw": {
- "modified": "2019-01-16T13:51:15.538Z",
- "contributors": [
- "CQD"
- ]
- },
- "參與_Mozilla_專案": {
- "modified": "2019-03-24T00:01:01.475Z",
- "contributors": [
- "happysadman"
- ]
- },
- "建立擴充套件": {
- "modified": "2019-01-16T16:02:32.252Z",
- "contributors": [
- "Josesun",
- "Haka"
- ]
- }
-} \ No newline at end of file
diff --git a/files/zh-tw/archive/add-ons/developing_add-ons/index.html b/files/zh-tw/archive/add-ons/developing_add-ons/index.html
deleted file mode 100644
index 048ba6dd7e..0000000000
--- a/files/zh-tw/archive/add-ons/developing_add-ons/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: 開發附加元件
-slug: Archive/Add-ons/Developing_add-ons
-translation_of: Archive/Add-ons/Developing_add-ons
----
-<p>大多數的 Mozilla 所開發的軟件,主要是透過「附加元件」來擴充其工能。 「附加元件」主要分成三大類:「擴充套件(Extensions)」 、「外掛程式(Plugin-ins)」及「佈景主題(Themes)」。本文的主要目的,是去指導及提供你所需的資訊用來去製作 Firefox 、 Thunderbird ...等等的 Mozilla 的軟體上的「附加元件」,以及提交及發佈你所製作的「附加元件」的方法。</p>
-<table class="mainpage-table">
- <tbody>
- <tr>
- <td colspan="2">
- <h2 id="附加元件主題">附加元件主題</h2>
- </td>
- </tr>
- <tr>
- <td>
- <dl>
- <dt>
- <a class="internal" href="/zh_tw/提交附加元件至AMO" title="zh tw/提交附加元件至AMO">提交附加元件至 AMO</a></dt>
- <dd>
- Provides helpful information for add-on developers to help them properly package and deliver their add-ons.  This includes information about addons.mozilla.org, Mozilla's add-on distribution web site.</dd>
- <dt>
- <a class="internal" href="/zh_tw/擴充套件" title="zh tw/擴充套件">擴充套件</a></dt>
- <dd>
- Extensions add new functionality to Mozilla applications such as Firefox, SeaMonkey and Thunderbird. They can add anything from a toolbar button to a completely new feature.</dd>
- <dt>
- <a class="internal" href="/zh_tw/Plugins" title="zh tw/Plugins">外掛程式</a></dt>
- <dd>
- Information about how to create plug-ins, which are binary components that let Mozilla based software display content they can't handle natively.</dd>
- </dl>
- </td>
- <td>
- <dl>
- <dt>
- <a class="internal" href="/zh_tw/佈景主題" title="zh tw/佈景主題">佈景主題</a></dt>
- <dd>
- Themes let users customize the appearance of the user interface presented by Mozilla-based applications.</dd>
- <dt>
- <a class="internal" href="/zh_tw/Creating_OpenSearch_plugins_for_Firefox" title="zh tw/Creating OpenSearch plugins for Firefox">搜尋引擎外掛</a></dt>
- <dd>
- Firefox supports search engine plug-ins, which enable the search box to support different search engines.</dd>
- <dt>
- <a class="internal" href="/zh_tw/The_Mozilla_platform" rel="internal" title="/zh tw/The Mozilla platform">Mozilla 平台</a></dt>
- <dd>
- Information about the Mozilla platform, including all of its APIs and technologies, as well as how to use them in your own projects.</dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
diff --git a/files/zh-tw/archive/add-ons/index.html b/files/zh-tw/archive/add-ons/index.html
deleted file mode 100644
index caac45ae4c..0000000000
--- a/files/zh-tw/archive/add-ons/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Add-ons
-slug: Archive/Add-ons
-translation_of: Archive/Add-ons
----
-<p>In progress. Archived add-ons documentation.</p>
-
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html b/files/zh-tw/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html
deleted file mode 100644
index 451d3dc91c..0000000000
--- a/files/zh-tw/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: 讓搜尋模組支援搜尋建議
-slug: Archive/Add-ons/Supporting_search_suggestions_in_search_plugins
-tags:
- - 搜尋模組
-translation_of: Archive/Add-ons/Supporting_search_suggestions_in_search_plugins
----
-<p>MozSearch 格式的搜尋模組可以支援搜尋建議,當使用者在搜尋欄中逐字鍵入關鍵詞時,<a href="zh_tw/Firefox_2">Firefox 2</a> 將依據搜尋模組內指定的 URL 送出查詢並取回結果。
-</p><p>取回結果之後,Firefox 將其顯示為一個下拉選單,讓使用者從中挑選搜尋引擎建議的關鍵詞。如果使用者繼續輸入關鍵詞,則會重新取回結果並更新選單。
-</p><p>Firefox 2 中內建的 Yahoo! 與 Google 搜尋模組都支援搜尋建議功能。
-</p>
-<h2 id=".E6.90.9C.E5.B0.8B.E6.A8.A1.E7.B5.84.E7.9A.84.E5.B7.A5.E4.BD.9C" name=".E6.90.9C.E5.B0.8B.E6.A8.A1.E7.B5.84.E7.9A.84.E5.B7.A5.E4.BD.9C">搜尋模組的工作</h2>
-<p>搜尋模組必須額外定義一個 <code>&lt;Url&gt;</code> 元素以便支援搜尋建議功能,此元素之 <code>type</code> 屬性需設定為 <code>"application/x-suggestions+json"</code>。支援搜尋建議功能的模組都會有兩個 <code>&lt;Url&gt;</code> 元素,另一個元素指定主要的 code&gt;text/html&lt;/code&gt; 搜尋 URL。
-</p><p>舉例來說,Yahoo! 搜尋模組的 <code>&lt;Url&gt;</code> 長得像這樣:
-</p>
-<pre>&lt;Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}"/&gt;
-</pre>
-<p>如果使用者在搜尋欄中輸入「fir」,則 Firefox 會將此 URL 的 <code>{searchTerms}</code> 代換為「fir」後送出搜尋:
-</p>
-<pre>&lt;Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command=fir"/&gt;
-</pre>
-<p>搜尋回來的結果將構成建議詞清單。
-</p><p>製作搜尋模組的方法可以參考<a href="zh_tw/%e8%a3%bd%e4%bd%9c_MozSearch_%e6%90%9c%e5%b0%8b%e6%a8%a1%e7%b5%84">製作 MozSearch 搜尋模組</a>一文。
-</p>
-<h2 id=".E4.BC.BA.E6.9C.8D.E5.99.A8.E7.AB.AF.E7.9A.84.E5.B7.A5.E4.BD.9C" name=".E4.BC.BA.E6.9C.8D.E5.99.A8.E7.AB.AF.E7.9A.84.E5.B7.A5.E4.BD.9C">伺服器端的工作</h2>
-<p>搜尋建議功能的重點在伺服端的程式,如果你是網站設計師而想支援搜尋建議功能,則必須實做出依據搜尋字串給予進一步搜尋建議詞彙、並以 <a class="external" href="http://www.json.org/">JSON</a> 格式傳回的功能。
-</p><p>當瀏覽器想取回搜尋字串時,會對 <code>&lt;Url&gt;</code> 元素指定的 URL 送出 HTTP GET 要求;此時伺服器則需依據字串決定相關字詞為何,並以 JSON 傳回 2 到 4 個建議字詞,如下:
-</p>
-<dl><dt> <b>查詢字串</b>
-</dt><dd> JSON 的第一個元素是原始查詢字串,這樣 Firefox 可以得知傳回值是否與目前查閱的字詞相符。
-</dd></dl>
-<dl><dt> <b>建議字詞列表</b>
-</dt><dd> 建議字詞的陣列,此陣列需以「{{ mediawiki.external('」及「') }}」括起,例如 &lt;tt&gt;{{ mediawiki.external('\"建議詞 1\", \"建議詞 2\", \"建議詞 3\", \"建議詞 4\"') }}&lt;/tt&gt;
-</dd></dl>
-<dl><dt> <b>說明</b>
-</dt><dd> 此元素為選用,亦為一個陣列,分別針對每個「建議字詞列表」的建議詞設定說明,其中可以是任何搜尋引擎想提供瀏覽器顯示的資訊,例如此建議詞有多少搜尋結果等等。
-</dd></dl>
-<div class="note">Firefox 2 尚不支援「說明」功能,會忽略此傳回值。</div>
-<dl><dt> <b>查詢網址</b>
-</dt><dd> 此元素為選用,還是一個陣列,內容是各建議詞的替代網址。打個比方:如果除搜尋結果頁面之外還想直接提供建議詞的地圖連結,那就可以將地圖的網址列在此陣列裡。
-</dd></dl>
-<dl><dd> 若沒有額外指定此元素,則將依據搜尋模組 XML 中的 <code>&lt;Url&gt;</code> 元素決定查詢網址。
-</dd></dl>
-<div class="note">Firefox 2 尚不支援「查詢網址」功能,會忽略此傳回值。</div>
-<p>也就是說,若搜尋詞為「fir」且不傳回說明及查詢網址,則傳回的 JSON 應該是長這樣:
-</p>
-<pre class="eval">["fir", ["firefox", "first choice", "mozilla firefox"]]
-</pre>
-<p>在此範例中只涵括查詢字串及建議字詞列表兩元素,其他選用的都不列入。
-</p><p>雖然建議的字詞想放多少就可以放多少,但由於每次使用者多打一個字都會查詢一次,所以還是有所限度比較穩當。至於怎麼依據使用者的要求提出建議,就全交給你自己決定了。
-</p>{{ languages( { "ca": "ca/Implementaci\u00f3_de_suggeriments_en_els_connectors_de_cerca", "en": "en/Supporting_search_suggestions_in_search_plugins", "es": "es/Permitir_sugerencias_en_los_plugins_de_b\u00fasqueda", "fr": "fr/Gestion_de_suggestions_dans_les_plugins_de_recherche", "it": "it/Supportare_i_suggerimenti_nei_plugin_di_ricerca", "ja": "ja/Supporting_search_suggestions_in_search_plugins", "pl": "pl/Wsparcie_dla_podpowiedzi_wyszukiwania_w_wyszukiwarkach" } ) }}
diff --git a/files/zh-tw/archive/add-ons/working_with_multiprocess_firefox/index.html b/files/zh-tw/archive/add-ons/working_with_multiprocess_firefox/index.html
deleted file mode 100644
index 8b685c379e..0000000000
--- a/files/zh-tw/archive/add-ons/working_with_multiprocess_firefox/index.html
+++ /dev/null
@@ -1,235 +0,0 @@
----
-title: Working with multiprocess Firefox
-slug: Archive/Add-ons/Working_with_multiprocess_Firefox
-translation_of: Archive/Add-ons/Working_with_multiprocess_Firefox
----
-<div class="summary">
- <p>這篇文章提供給 Firefox 擴充套件開發者;文中概述了如何讓擴充套件可以執行於多行程的 Firefox.</p>
-</div>
-<p>在多行程的 Firefox 之前的版本, chrome code (including code inserted by extensions) 和 content 執行於同一作業系統行程中,所以擴充套件可以直接存取 content:</p>
-<pre class="brush: js">gBrowser.selectedBrowser.contentDocument.body.innerHTML = "replaced by chrome code";</pre>
-<p>然而,在多行程的 Firefox (也稱為 Electrolysis 或 E10S),套件的程式碼與 content 將執行於不同的行程中,因此不再可能直接地存取。</p>
-<p>取而代之地, the extension will need to factor code that touches content into separate scripts that are called <em>frame scripts</em>. Frame scripts 執行在 content 行程,並可以直接存取 content. Frame scripts 藉由 message-passing API 和套件其餘的部份通訊。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/8437/e10s-overview.png" style="display: block; margin-left: auto; margin-right: auto;">當套件程式碼(執行於 chrome 行程中)向套件的 frame script(執行於 content 行程中) 傳訊時,必須使用非同步訊息。</p>
-<p>content 行程允許向 chrome 行程傳遞同步或非同步訊息,但是,非同步通訊是較好的選擇。</p>
-<p>For more details on using the message manager and content scripts, refer to the <a href="/en-US/docs/The_message_manager">message manager guide</a>. The rest of this article explains how to work out if you're affected or not, provides an overview of the sorts of changes that are needed, then walks through the process of porting some simple extension patterns so they work properly with multiprocess Firefox.</p>
-<h2 id="確認你是否受到相容性影響">確認你是否受到相容性影響</h2>
-<p>As a rule:</p>
-<ul>
- <li>如果你只使用 Add-on SDK's <a href="/en-US/Add-ons/SDK/High-Level_APIs">high-level APIs</a>,你不會受到相容性困擾 (Add-on SDK 目前並不是完全相容於多行程的 Firefox,但相關問題短期內將會處理完成)</li>
- <li>如果你不存取任何網頁內容,你不會受到相容性困擾</li>
- <li>if you access web content directly using an <a href="/en-US/Add-ons/Overlay_Extensions">overlay extension</a>, a <a href="/en-US/Add-ons/Bootstrapped_extensions">bootstrapped extension</a>, or <a href="/en-US/Add-ons/SDK/Low-Level_APIs">low-level SDK APIs</a> like <a href="/en-US/Add-ons/SDK/Low-Level_APIs/window_utils">window/utils</a> or <a href="/en-US/Add-ons/SDK/Low-Level_APIs/tabs_utils">tabs/utils</a>, then you probably will be affected</li>
- <li>if you load XUL pages in tabs, you will be affected</li>
-</ul>
-<p>To know for sure, you need to test it, and setting that up is a two-step process:</p>
-<ul>
- <li><strong>開啟 Firefox 的多行程支援:</strong> multiprocess support is in <a href="http://nightly.mozilla.org/">Firefox Nightly</a>, but is hiding behind a preference. To enable it visit <a class="external external-icon" href="http://kb.mozillazine.org/About:config">about:config</a>, find the preference named <code>browser.tabs.remote.autostart</code>, set it to <code>true</code>, and restart the browser. As a visual indicator that you're running multiprocess Firefox, the titles of tabs are underlined.</li>
- <li><strong>宣告你的套件是多行程相容的:</strong> to make migration to multiprocess Firefox easier, we've implemented <a href="/en-US/Firefox/Multiprocess_Firefox/Compatibility_shims">shims</a> that help extensions to work even when they're not compatible. To check whether your extension is really compatible you need to disable these shims. To do that, add a new property to your extension's <a href="/en-US/Add-ons/Install_Manifests">install.rdf</a> named <code>multiprocessCompatible</code>, with a value of <code>true</code>. At the moment, this flag does not disable all shims, so it's not yet a reliable way to test that your add-on is compatible. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1051017">bug 1051017</a> for details on this.</li>
-</ul>
-<p>Now you'll be able to test your extension in multiprocess Firefox, with no <a href="/en-US/Firefox/Multiprocess_Firefox/Compatibility_shims">compatibility shims</a>. At the moment you can't actually install extensions in multiprocess Firefox, so you have to install the extension, then switch on multiprocess support. This is being tracked as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055808">bug 1055808</a>.</p>
-<h2 id="Updating_your_code">Updating your code</h2>
-<p>The general approach to updating your code is:</p>
-<ul>
- <li>factor the part of your extension that accesses web content into one or more separate scripts. In multiprocess Firefox these are called <em>frame scripts</em>.</li>
- <li>register chrome:// URLs for your frame scripts</li>
- <li>use a <a href="/en-US/docs/The_message_manager">message manager</a> to load the scripts into <a href="/en-US/docs/Mozilla/Tech/XUL/browser"><code>browser</code></a> objects</li>
- <li>if you need to communicate between the main extension code and a frame script, use message manager APIs to do so</li>
- <li>if you load XUL in tabs, <a href="/en-US/docs/Custom_about:_URLs">register these as about: URLs</a> and load them with the about: URL.</li>
-</ul>
-<p>There are more details on this in the <a href="/en-US/docs/The_message_manager">message manager</a> documentation.</p>
-<h3 id="Backwards_compatibility_of_the_new_APIs">Backwards compatibility of the new APIs</h3>
-<p>With multiprocess support turned off, the e10s messaging APIs are still available and functional. They have been available in one form or another since Firefox 4; however, the original APIs are different than the current ones. Some known differences:</p>
-<ul>
- <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=776825">Interface changes in Firefox 17</a></li>
- <li>Before Firefox 19, code like <code>new content.document.defaultView.XMLHttpRequest()</code> fails with <code>NS_ERROR_FAILURE: Failure</code></li>
-</ul>
-<p>You should test your changes not only in nightlies with multiprocess support turned on, but also in releases you intend to support with multiprocess support turned off.</p>
-<h2 id="Examples">Examples</h2>
-<p>This section walks through the process of porting a few different sorts of extension. The extensions are all extremely simple, and are intended to represent fundamental extension patterns that require different handling in multiprocess Firefox.</p>
-<p>You can find all the source code for these examples in the <a href="https://github.com/mdn/e10s-example-addons">e10s-example-addons GitHub repository</a>.</p>
-<h3 id="Run_a_script_in_all_pages">Run a script in all pages</h3>
-<div class="note">
- <p><a href="https://github.com/mdn/e10s-example-addons/tree/master/run-script-in-all-pages">See the code for this example</a>.</p>
-</div>
-<p>The first extension runs some code on every page load. The code doesn't need to interact with any other part of the extension: it just makes some predetermined modification to the page. In this case it adds a border to the document's <a href="/en-US/docs/Web/HTML/Element/body"><code>body</code></a>.</p>
-<p>It does this by attaching to a XUL overlay a version of the <a href="/en-US/Add-ons/Code_snippets/On_page_load#Basic_onPageLoad_for_a_browser_window">"On page load" code snippet</a>:</p>
-<pre class="brush: js">var myExtension = {
- init: function() {
- // The event can be DOMContentLoaded, pageshow, pagehide, load or unload.
- if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);
- },
- onPageLoad: function(aEvent) {
- var doc = aEvent.originalTarget; // doc is document that triggered the event
- if (doc.nodeName != "#document") return; // only documents
- // make whatever modifications you want to doc
- doc.body.style.border = "5px solid blue";
- }
-}
-
-window.addEventListener("load", function load(event){
- window.removeEventListener("load", load, false); //remove listener, no longer needed
- myExtension.init();
-},false);</pre>
-<p>Because this code accesses web content directly, it won't work in multiprocess Firefox.<br>
- <img alt="" src="https://mdn.mozillademos.org/files/8431/all-pages-original.png" style="display: block; margin-left: auto; margin-right: auto;"></p>
-<h4 id="Porting_to_the_message_manager">Porting to the message manager</h4>
-<p>To port this example using the message manager, we can put all the meat of the add-on in a frame script:</p>
-<pre class="brush: js">// frame-script.js
-// will run in the content process
-
-addEventListener("DOMContentLoaded", function(event) {
- var doc = event.originalTarget;
- if (doc.nodeName != "#document") return; // only documents
- doc.body.style.border = "5px solid red";
-});
-</pre>
-<p>We'll register a chrome:// URL for the frame script:</p>
-<pre>// chrome.manifest
-
-content    modify-all-pages    chrome/content/
-</pre>
-<p>The main script, that we attach to the XUL overlay, is just a stub that uses the global message manager to load the frame script into each tab:</p>
-<pre class="brush: js">// chrome script
-// will run in the chrome process
-
-var globalMM = Cc["@mozilla.org/globalmessagemanager;1"]
- .getService(Ci.nsIMessageListenerManager);
-
-globalMM.loadFrameScript("chrome://modify-all-pages/content/frame-script.js", true);</pre>
-<p><img alt="" src="https://mdn.mozillademos.org/files/8415/all-pages-ported.png" style="display: block; margin-left: auto; margin-right: auto;"></p>
-<h4 id="Porting_to_the_Add-on_SDK">Porting to the Add-on SDK</h4>
-<p>A good alternative for an extension like this is to port to the Add-on SDK. The Add-on SDK includes a module called <a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a> which is designed to load scripts into web pages. The Add-on SDK calls these scripts <em>content scripts</em>.</p>
-<p>In this case the main extension code creates a page-mod to load a content script into every page loaded by the user:</p>
-<pre class="brush: js">// main.js
-
-var pageMod = require("sdk/page-mod");
-var self = require("sdk/self");
-
-pageMod.PageMod({
- include: "*",
- contentScriptFile: self.data.url("modify-all-pages.js")
-});</pre>
-<p>The content script can modify the page directly:</p>
-<pre class="brush: js">// modify-all-pages.js - content script
-
-document.body.style.border = "5px solid green";</pre>
-<h3 id="Run_a_script_in_the_active_tab">Run a script in the active tab</h3>
-<div class="note">
- <p><a href="https://github.com/mdn/e10s-example-addons/tree/master/run-script-in-active-page">See the code for this example</a>.</p>
-</div>
-<p>The example demonstrates how an extension can:</p>
-<ul>
- <li><a href="/en-US/docs/The_message_manager#Types_of_message_manager">load a frame script into a specific XUL <code>&lt;browser&gt;</code> element</a></li>
- <li><a href="/en-US/docs/The_message_manager#Synchronous_messaging">make a synchronous call from the frame script to the main extension</a></li>
-</ul>
-<p>The example is a restartless extension that adds a button using the CustomizableUI module. When the user clicks the button, the extension runs some code that modifies the current tab. The basic infrastructure is taken from the <a href="https://github.com/jvillalobos/Australis-Hello-World">Australis "Hello World" extension written by Jorge Villalobos</a>.<br>
- <br>
- What the code actually does is: find any <code><a href="/en-US/docs/Web/HTML/Element/Img">&lt;img&gt;</a></code> elements and replace their <code>src</code> with a link to a silly GIF randomly chosen from a list hardcoded into the extension. The silly gifs are taken from the list in the <a href="https://github.com/bwinton/whimsy">Whimsy extension</a>.</p>
-<p>The first version accesses the page directly, so it's not multiprocess compatible:</p>
-<pre class="brush: js">// bootstrap.js
-
-let Gifinate = {
- init : function() {
- let io =
- Cc["@mozilla.org/network/io-service;1"].
- getService(Ci.nsIIOService);
-
- // the 'style' directive isn't supported in chrome.manifest for bootstrapped
- // extensions, so this is the manual way of doing the same.
- this._ss =
- Cc["@mozilla.org/content/style-sheet-service;1"].
- getService(Ci.nsIStyleSheetService);
- this._uri = io.newURI("chrome://gifinate/skin/toolbar.css", null, null);
- this._ss.loadAndRegisterSheet(this._uri, this._ss.USER_SHEET);
-
- // create widget and add it to the main toolbar.
- CustomizableUI.createWidget(
- { id : "gifinate-button",
- defaultArea : CustomizableUI.AREA_NAVBAR,
- label : "Gifinate",
- tooltiptext : "Gifinate!",
- onCommand : function(aEvent) {
- Gifinate.replaceImages(aEvent.target.ownerDocument.defaultView.content.document);
- }
- });
- },
-
- replaceImages : function(contentDocument) {
- let images = contentDocument.getElementsByTagName("img");
- for (var i = 0; i &lt; images.length; ++i) {
- let gif = this.gifs[Math.floor(Math.random() * this.gifs.length)];
- images[i].src = gif;
- }
- },</pre>
-<p><img alt="" src="https://mdn.mozillademos.org/files/8433/gifinate-original.png" style="display: block; margin-left: auto; margin-right: auto;"></p>
-<h4 id="Porting_to_the_message_manager_2">Porting to the message manager</h4>
-<p>To port this example to the message manager we'll make <code>onCommand</code> load a frame script into the current <code>&lt;browser&gt;</code>, then listen for "request-gifs" messages from the frame script. The "request-gifs" message is expected to contain the number of GIFs we need for this page: the message listener retrieves and returns that many GIFs.</p>
-<pre class="brush: js">// bootstrap.js
-// will run in the chrome process
-
-let Gifinate = {
- init : function() {
- let io =
- Cc["@mozilla.org/network/io-service;1"].
- getService(Ci.nsIIOService);
-
- // the 'style' directive isn't supported in chrome.manifest for bootstrapped
- // extensions, so this is the manual way of doing the same.
- this._ss =
- Cc["@mozilla.org/content/style-sheet-service;1"].
- getService(Ci.nsIStyleSheetService);
- this._uri = io.newURI("chrome://gifinate/skin/toolbar.css", null, null);
- this._ss.loadAndRegisterSheet(this._uri, this._ss.USER_SHEET);
-
- // create widget and add it to the main toolbar.
- CustomizableUI.createWidget(
- { id : "gifinate-button",
- defaultArea : CustomizableUI.AREA_NAVBAR,
- label : "Gifinate Button",
- tooltiptext : "Gifinate!",
- onCommand : function(aEvent) {
- Gifinate.replaceImages(aEvent.target.ownerDocument);
- }
- });
- },
-
- replaceImages : function(xulDocument) {
- var browserMM = xulDocument.defaultView.gBrowser.selectedBrowser.messageManager;
- browserMM.loadFrameScript("chrome://gifinate/content/frame-script.js", false);
- browserMM.addMessageListener("request-gifs", Gifinate.getGifs);
- },
-
- getGifs : function(message) {
- var gifsToReturn = new Array(message.data);
- for (var i = 0; i &lt; gifsToReturn.length; i++) {
- let gif = this.gifs[Math.floor(Math.random() * this.gifs.length)];
- gifsToReturn[i] = gif;
- }
- return gifsToReturn;
- },
-</pre>
-<p>Again, we need to register a chrome:// URL for the frame script:</p>
-<pre>// chrome.manifest
-
-content gifinate frame-script.js</pre>
-<p>In the frame script, we get all the <code>&lt;img&gt;</code> elements and send the "request-gifs" message to the main add-on code. Because this is a frame script we can make it a synchronous message, and update the <code>src</code> attributes with the value it returns:</p>
-<pre class="brush: js">// frame-script.js
-// will run in the content process
-
-var images = content.document.getElementsByTagName("img");
-var response = sendSyncMessage("request-gifs", images.length);
-var gifs = response[0];
-
-for (var i = 0; i &lt; images.length; ++i) {
- images[i].src = gifs[i];
-}</pre>
-<p>The overall flow of the add-on now looks like this:<br>
- <img alt="" src="https://mdn.mozillademos.org/files/8411/gifinate-ported.png" style="display: block; margin-left: auto; margin-right: auto;"></p>
-<h2 id="Known_bugs">Known bugs</h2>
-<p>This is a list of open bugs likely to affect add-on developers migrating to multiprocess Firefox:</p>
-<ul>
- <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1051238"><b>Bug 1051238</b></a> -<span id="summary_alias_container"> <span id="short_desc_nonedit_display">frame scripts are cached forever, so an add-on can't properly update without a browser restart</span></span></li>
- <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1017320"><b>Bug 1017320</b></a> -<span id="summary_alias_container"> <span id="short_desc_nonedit_display">tracking bug for implementing compatibility shims</span></span></li>
- <li><span><span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1051017"><b>Bug 1051017</b></a> -<span id="summary_alias_container"> <span id="short_desc_nonedit_display">not all shims are disabled, even if an add-on is declared to be multiprocess compatible</span></span></span></span></li>
- <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055808"><strong>Bug 1055808</strong></a> - can't install local add-ons in multiprocess Firefox</li>
-</ul>
diff --git a/files/zh-tw/archive/apps/advanced_topics/index.html b/files/zh-tw/archive/apps/advanced_topics/index.html
deleted file mode 100644
index 1c0c5a0820..0000000000
--- a/files/zh-tw/archive/apps/advanced_topics/index.html
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: 進階主題
-slug: Archive/Apps/Advanced_topics
-translation_of: Archive/Apps/Advanced_topics
----
-<p>這些文章提供了額外的資訊,關於更進階的開放網頁程式主題。</p>
-<div class="row topicpage-table">
- <div class="section">
- <h2 class="Documentation" id="Architecture" name="Architecture">Apps 架構文件</h2>
- <dl>
- <dt>
- <a href="/en-US/docs/Apps/Architecture">應用程式的架構</a></dt>
- <dd>
- 大致介紹開放網頁程式計畫的設計和實作之下的架構。</dd>
- <dt>
- <a href="/en-US/docs/Apps/Platform-specific_details">在不同平台安裝 app 的細節</a></dt>
- <dd>
- 有關應用程式在特定裝置或系統上安裝或執行時有些微的差異;這篇文章會幫您了解這段差異。</dd>
- <dt>
- <a href="/en-US/docs/Apps/Apps_for_Android">Android上的開放網路應用程式</a></dt>
- <dd>
- 有關開發及測試在Android上運作的開放網路應用程式的事。</dd>
- <dt>
- <a href="/en-US/docs/Apps/Release_notes">App runtime release notes</a></dt>
- <dd>
- 不同的平台上,網頁 app 執行時的 release notes。</dd>
- </dl>
- <h2 class="Documentation" id="Other" name="Other">其他文件</h2>
- <dl>
- <dt>
- <a href="/en-US/docs/Apps/Creating_a_store">建立商店</a></dt>
- <dd>
- 如果您要建立自己的商店來販售及發佈開放網頁程式,這些資訊可能可以幫助您。</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/Marketplace">View All...</a></span></p>
- </div>
- <div class="section">
- <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5>
-<ul>
- <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li>
- <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li>
- <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li>
-</ul>
-<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5>
-<div class="twocolumns">
- <ul>
- <li><a href="/en-US/docs/Web/CSS">CSS</a></li>
- <li><a href="/en-US/docs/DOM">DOM</a></li>
- <li><a href="/en-US/docs/Web/HTML">HTML</a></li>
- <li><a href="/en-US/docs/JavaScript">JavaScript</a></li>
- <li><a href="/en-US/docs/WebAPI">WebAPI</a></li>
- <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li>
- <li><a href="/en-US/docs/SVG">SVG</a></li>
- <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li>
- <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li>
- </ul>
-</div>
-<h5 class="Community" id="Community" name="Community">Getting help from the community</h5>
-<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p>
-<ul>
- <li>Consult the webapps forum: <ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li>
-
-
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li>
-</ul>
- <ul>
- <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li>
- </ul>
- </li>
-</ul>
-<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/apps/index.html b/files/zh-tw/archive/apps/index.html
deleted file mode 100644
index 89e9dac3d6..0000000000
--- a/files/zh-tw/archive/apps/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Apps
-slug: Archive/Apps
-translation_of: Archive/Apps
----
-<p class="summary">In progress. This page includes archived content for Apps, including obsolete web app content, Firefox OS app-related content, etc.</p>
-
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/contacts/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/contacts/index.html
deleted file mode 100644
index 431f85c5f6..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/contacts/index.html
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: 聯絡人資訊
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide/Contacts
----
-<h3 id="聯絡人資訊_(contacts)">聯絡人資訊 (contacts)</h3>
-<p>Contacts API 讓您可以取得使用者手機中所儲存的聯絡人列表、聯絡人姓名、電話、… 等資訊。<br>
- 由於它牽涉到使用者私密資訊,目前僅開放審查通過的應用(privileged/certified)能夠使用這個 API。您的應用必須提出使用這個 API 的聲明,並且通過審查方可使用。<br>
- <br>
- 權限宣告:分為 "readonly", "readwrite", "readcreate" 三種級別,分別代表「只讀取」、「讀取與修改」、「讀取與新增」。您可依照應用需求作適當的權限宣告。</p>
-<pre>"permissions": {
- "contacts":{ "access": "readonly" }
-}</pre>
-<h4 id="1._讀取聯絡人列表">1. 讀取聯絡人列表</h4>
-<pre> var options = {
- sortBy: 'familyName',
- sortOrder: 'ascending'
- };
- var request = navigator.mozContacts.find(options);
- request.onsuccess = function findSuccess() {
- var firstContact = request.result[0];
- console.log('name' + firstContact.name);
- console.log('tel number' + firstContact.tel[0].value);
- console.log('update time' + new Date(firstContact.updated));
- };
-
- request.onerror = function findError() {
- console.warn('Error: cannot find any contacts - ' + request.error.name);
- };</pre>
-<h4 id="2._新增聯絡人">2. 新增聯絡人</h4>
-<pre> var myContact = {
- 'name': 'Alice Wang',
- 'givenName': 'Alice',
- 'familyName': 'Wang',
- 'tel': [{'value': '0912345678'}]
- };
- var contact = new mozContact();
- contact.init(myContact);
- var request = navigator.mozContacts.save(contact);
- request.onerror = function onerror() {
- console.warn('Error: save contact - ' + request.error.name);
- }; </pre>
-<h4 id="3._修改聯絡人資訊">3. 修改聯絡人資訊</h4>
-<pre> var options = {
- filterBy: ['tel', 'givenName', 'familyName'],
- filterOp: 'contains',
- filterValue: 'Alice'
- };
- var request = navigator.mozContacts.find(options);
- request.onsuccess = function findSuccess() {
- var contact = req.result[0];
- contact.tel[0].value = '0987654321';
- var requestUpdate = navigator.mozContacts.save(contact);
- requestUpdate.onerror = function onerror() {
- console.warn('Error: update contact - ' + requestUpdate.error.name);
- };
- }; </pre>
-<h4 id="4._刪除聯絡人">4. 刪除聯絡人</h4>
-<pre> var options = {
- filterBy: ['id'],
- filterOp: 'equals',
- filterValue: '0987654321'
- };
- var request = navigator.mozContacts.find(options);
- request.onsuccess = function findSuccess() {
- var contact = req.result[0];
- var requestRemove = navigator.mozContacts.remove(contact);
- requestRemove.onerror = function onerror() {
- console.warn('Error: remove contact - ' + requestRemove.error.name);
- };
- }; </pre>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/device_storage/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/device_storage/index.html
deleted file mode 100644
index d8c6fd2916..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/device_storage/index.html
+++ /dev/null
@@ -1,111 +0,0 @@
----
-title: 儲存裝置資訊
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide/Device_Storage
----
-<h3 id="儲存裝置資訊_(Device_Storage)">儲存裝置資訊 (Device Storage)</h3>
-<p>DeviceStorage API 提供 SD 記憶卡內的資料存取介面,可讀取圖片檔、聲音檔、影片檔,與 SD 記憶卡的其他檔案,並檢視 SD 記憶卡空間的使用率。<br>
- 由於牽涉到使用者的儲存裝置資訊,目前僅開放 Privileged/Certified App 能夠使用此 API。你的 App 必須提出「使用此 API」的聲明,並且通過審查方可使用。<br>
- <br>
- 權限宣告:依照檔案類型 (圖片、影片、聲音、其他) 而有不同宣告方式,這種宣告另分為「readonly」、「readwrite」、「readcreate」共 3 種級別,分別代表「唯讀」、「讀取與修改」、「讀取與創建」。你可依照 App 需求作適當的權限宣告。</p>
-<pre>"permissions": {
- "device-storage:pictures": { "access": "readonly" },
- "device-storage:music": { "access": "readcreate" },
- "device-storage:videos": { "access": "readwrite" },
- "device-storage:sdcard": { "access": "readonly" }
-}</pre>
-<h4 id="1._音樂檔案列表">1. 音樂檔案列表</h4>
-<ul>
- <li>權限宣告:"device-storage:music": { "access": "readonly" }</li>
-</ul>
-<pre> var type = 'music';
- var deviceStorage = navigator.getDeviceStorage(type);
- if (!deviceStorage) {
- console.warn('Error: cannot get DeviceStorage for ' + type);
- return;
- }
- var request = deviceStorage.enumerate();
- request.onsuccess = function(e) {
- var file = request.result;
- console.log('file name ' + file.name);
- console.log('file size ' + file.size);
- console.log('file type ' + file.type);
- console.log('file last Modified Date ' + file.lastModifiedDate);
- request.continue();
- };
- request.onerror = function() {
- console.warn('Error: cannot list files in SD card - ' + request.error.name);
- };</pre>
-<h4 id="2._讀取某個_SD_卡檔案">2. 讀取某個 SD 卡檔案</h4>
-<ul>
- <li>權限宣告:"device-storage:pictures": { "access": "readonly" }</li>
-</ul>
-<pre> var type = 'pictures';
- var deviceStorage = navigator.getDeviceStorage(type);
- if (!deviceStorage) {
- console.warn('Error: cannot get DeviceStorage for ' + type);
- return;
- }
- var filename = 'downloads/DSC02798.JPG';
- var request = deviceStorage.get(filename);
- request.onsuccess = function(e) {
- var file = request.result;
- var url = URL.createObjectURL(file);
- var myImage = document.getElementById('profilePhoto');
- myImage.src = url;
- };
- request.onerror = function() {
- console.warn('Error: get file from SD card - ' + request.error.name);
- };</pre>
-<h4 id="3._寫入檔案到_SD_卡">3. 寫入檔案到 SD 卡</h4>
-<ul>
- <li>權限宣告:"device-storage:sdcard": { "access": "readcreate" }</li>
-</ul>
-<pre> var type = 'sdcard';
- var deviceStorage = navigator.getDeviceStorage(type);
- if (!deviceStorage) {
- console.warn('Error: cannot get DeviceStorage for ' + type);
- return;
- }
- var filename = 'test-' + Math.random().toString() + '.txt';
- var pathname = 'test-tmp/' + filename;
- console.log('file path: ' + pathname);
- var blob = new Blob(['hello', 'world'], {type: 'text/plain'});
- var request = deviceStorage.addNamed(blob, pathname);
- request.onsuccess = function(e) {
- // try to get the file
- var readRequest = deviceStorage.get(pathname);
- readRequest.onsuccess = function() {
- var file = readRequest.result;
- var reader = new FileReader();
- reader.onload = function(e) {
- console.log('file content ' + e.target.result);
- };
- reader.readAsText(file);
- };
- readRequest.onerror = function() {
- console.warn("Error: read file failure - " + request.error.name);
- };
- };
- request.onerror = function() {
- console.warn('Error: write file failure - ' + request.error.name);
- };</pre>
-<h4 id="4._SD_卡空間使用率">4. SD 卡空間使用率</h4>
-<ul>
- <li>權限宣告:"device-storage:sdcard": { "access": "readonly" }</li>
-</ul>
-<pre> var type = 'sdcard';
- var deviceStorage = navigator.getDeviceStorage(type);
- if (!deviceStorage) {
- console.warn('Error: cannot get DeviceStorage for ' + type);
- return;
- }
- var request = deviceStorage.stat();
- request.onsuccess = function(e) {
- var totalSize = e.target.result.totalBytes;
- var freeBytes = e.target.result.freeBytes;
- console.log('totalSize ' + totalSize + ', freeBytes ' + freeBytes);
- };
- request.onerror = function() {
- console.warn('Error: cannot get stat of SD card - ' + request.error.name);
- };</pre>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/geolocation/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/geolocation/index.html
deleted file mode 100644
index 575d719313..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/geolocation/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: 位置資訊
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide/Geolocation
----
-<h3 id="位置資訊_(geolocation)">位置資訊 (geolocation)</h3>
-<p>Geolocation API 讓您可以取得使用者目前所在的地理位置資訊,雖然現今它已是一個 Web 開放標準的 API,但在 Firefox OS 中您必須做權限宣告才可使用。<br>
- 但當您使用這個 API 企圖存取使用者位置時,系統會出現一個視窗詢問使用者是否願意透露位置訊息給您的應用,並且提供一個默認選項記住使用者的選擇。<br>
- <br>
- 權限宣告:需要</p>
-<pre>"permissions": {
- "geolocation": {}
-}</pre>
-<p>範例:</p>
-<pre>navigator.geolocation.getCurrentPosition(function(position) {
- console.log('latitude ' + position.coords.latitude);
- console.log('longitude ' + position.coords.longitude);
-}, function() {
- console.warn('Error: cannot fetch location');
-});
-</pre>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/index.html
deleted file mode 100644
index d258c076d5..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/index.html
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: 第三方應用開發者指南
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide
----
-<h3 id="基本章節">基本章節</h3>
-<h4 id="快速入門">快速入門</h4>
-<h4 id="API_說明">API 說明</h4>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/tag/WebAPI" title="https://developer.mozilla.org/zh-TW/docs/WebAPI">API 列表</a></li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/WebAPI/Permissions" title="https://developer.mozilla.org/zh-TW/docs/WebAPI/Permissions">權限宣告</a></li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Using_geolocation#.E7.80.8F.E8.A6.BD.E5.99.A8.E7.9B.B8.E5.AE.B9.E6.80.A7" title="/zh-TW/docs/Mozilla/Firefox_OS/第三方應用開發者指南/位置資訊">位置資訊 Geolocation API</a></li>
- <li><a href="/zh-TW/docs/Mozilla/Firefox_OS/第三方應用開發者指南/聯絡人資訊" title="/zh-TW/docs/Mozilla/Firefox_OS/第三方應用開發者指南/聯絡人資訊">聯絡人資訊</a></li>
- <li><a href="/zh-TW/docs/Mozilla/Firefox_OS/第三方應用開發者指南/儲存裝置資訊" title="/zh-TW/docs/Mozilla/Firefox_OS/第三方應用開發者指南/儲存裝置資訊">儲存裝置資訊</a></li>
- <li>註冊系統訊息 (system message)</li>
-</ul>
-<h4 id="其他技術細節">其他技術細節</h4>
-<ul>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/Security/Security_model" title="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/Security/Security_model">Firefox OS 安全性概述</a></li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/WebAPI/Web_Activities" title="/zh-TW/docs/Mozilla/Firefox_OS/第三方應用開發指南/Web_Activity">Web Activity</a></li>
- <li>video/graphic (?)</li>
- <li>Attention screen</li>
- <li>window.open</li>
- <li>background service</li>
- <li>touch event</li>
- <li>special events
- <ul>
- <li>mozvisibilitychange</li>
- </ul>
- </li>
- <li>special properties
- <ul>
- <li>windowsizechange</li>
- </ul>
- </li>
-</ul>
-<h4 id="除錯與預覽">除錯與預覽</h4>
-<ul>
- <li><a href="/zh-TW/docs/Tools/Debugger" title="/zh-TW/docs/Tools/Debugger">除錯器 (Debugger)</a></li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator" title="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (r2d2b2g)</a></li>
- <li>B2G desktop</li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox" title="https://developer.mozilla.org/zh-TW/docs/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox">在 Firefox 裡使用 Gaia</a></li>
-</ul>
-<h4 id="測試">測試</h4>
-<ul>
- <li>單元測試</li>
- <li>UI 測試</li>
-</ul>
-<h4 id="應用上架">應用上架</h4>
-<ul>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F/Manifest-840092-dup" title="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F/Manifest-840092-dup">App Manifest</a></li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/WebAPI/Permissions" title="https://developer.mozilla.org/zh-TW/docs/WebAPI/Permissions">App 權限 (Permission</a>)</li>
- <li>hosted app &amp; <a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Packaged_apps" title="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/3rd_Party_App_Developer_Guide/%E5%B0%81%E5%8C%85%E5%BC%8F_%28Packaged%29_App">封裝式 (Packaged) App</a></li>
- <li>安裝應用
- <ul>
- <li>應用來源 (open web/Firefox marketplace)</li>
- <li>安裝方式 (hosted app/packaged app)</li>
- </ul>
- </li>
- <li>應用審核流程</li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/3rd_Party_App_Developer_Guide/%E6%89%98%E7%AE%A1%E6%9B%B4%E6%96%B0%E4%BD%9C%E6%A5%AD_%28Hosting_Updates%29_" title="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/3rd_Party_App_Developer_Guide/%E6%89%98%E7%AE%A1%E6%9B%B4%E6%96%B0%E4%BD%9C%E6%A5%AD_%28Hosting_Updates%29_">B2G 托管更新作業 (Hosting Updates)</a></li>
-</ul>
-<h3 id="進階章節">進階章節</h3>
-<h4 id="樣式參考與範本">樣式參考與範本</h4>
-<ul>
- <li>multiple resolution</li>
- <li>viewport</li>
- <li>Building Block</li>
- <li>template</li>
-</ul>
-<h4 id="調校技巧">調校技巧</h4>
-<ul>
- <li>lazy loading</li>
- <li>preload small image (sprite)</li>
-</ul>
-<h4 id="Gaia_系統應用_(System_App)_細節">Gaia 系統應用 (System App) 細節</h4>
-<ul>
- <li>系統應用角色</li>
- <li>iframe 框架與程序 (Process) 的關係</li>
- <li>zIndex</li>
- <li>hardware buttons</li>
- <li>running app management</li>
-</ul>
-<h4 id="其他_Open_Web_技術">其他 Open Web 技術</h4>
-<ul>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Gecko_DOM_%E5%8F%83%E8%80%83/WebFM" title="https://developer.mozilla.org/zh-TW/docs/Gecko_DOM_%E5%8F%83%E8%80%83/WebFM">WebFM 收音機</a></li>
- <li>HTML5 API</li>
- <li>CSS</li>
- <li>jQuery/backbone/... frameworks</li>
- <li>appcache</li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/web_activity/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/web_activity/index.html
deleted file mode 100644
index 8b9e1e52ad..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/web_activity/index.html
+++ /dev/null
@@ -1,116 +0,0 @@
----
-title: Web Activity
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide/Web_Activity
----
-<h4 id="Web_Activity">Web Activity</h4>
-<p>許多手機上常見的功能例如:選取聯絡人、撥打電話、照相是您的 App 會需要用到的功能。您可以不必重新發明輪子,而利用「Web Activity」的技術呼叫其他的 App 來完成任務。Web Activity 可以實作兩個 App 間的切換,例如從「相機」切換到「圖片集」,或者是「簡訊」使用「聯絡人」選取一個簡訊發送對象。<br>
- <br>
- 在您的 App 中只需要描述所需的操作,系統會幫您檢查手機中有哪些 App 提供這些操作。以下是一個具體的例子。這是在「相機」中的一段程式碼,用來切換到別的 App 瀏覽相片。</p>
-<pre> var act = new MozActivity({
- name: 'browse',
- data: {
- type: 'photos'
- }
- });
- act.onerror = function(e) {
- if (act.error.name === 'NO_PROVIDER') {
- console.warn('Error: no activity provider');
- }
- else {
- console.warn('Error: unknown activity - ' + act.error.name);
- }
- };</pre>
-<p>在這段程式碼中,「相機」新增了一個 MozActivity 物件並在參數物件中聲明該 activity 是「瀏覽(browse)」的動作,瀏覽的資料是「相片(photos)」。請注意它並非直接指定要切換到「圖片集」 ,而是由系統決定哪個 App 提供這樣的行為,若有多個 App 同時提供一樣的行為時,系統會產生一個選單讓使用者選取。<br>
- 參數物件的 'data' 欄位可以提供額外所需的資料內容,讓承接 activity 任務的 App 決定是否根據資料內容做其他處理。<br>
- <br>
- 讓我們來看看提供 Web Activity 的 App 該如何聲明它的 activity 及相關設定。</p>
-<pre>"activities": {
- "browse": {
- "filters": {
- "type": "photos"
- },
- "disposition": "window"
- }
-}</pre>
-<p><br>
- 像「圖片集」這樣的 App 可以在它的 manifest.webapp 檔案中聲明它提供瀏覽相片的 activity,如上所示。它提供一個「瀏覽(browse)」動作的 activity,瀏覽的資料是「相片(photos)」作為篩選條件。這樣的 activity 聲明宣告,便能與上面的 MozActivity 呼叫匹配,成為能承接這個 activity 的對象之一。若手機中只有這一個 App 有這樣的 activity 宣告,那系統預設就會將這個 App 開啓,但若有多個 App 都能夠執行這個任務,系統會產生一個選單讓使用者選取。</p>
-<h4 id="disposition_window">"disposition": "window"</h4>
-<p>依照不同 App 的需求,目前在 Firefox OS 中有兩種形式的 Web Activity ,一種為「視窗切換」(window disposition) 、一種為「畫面滑入」(inline disposition)。前者視覺上是 App 之間的切換,後者則是承接 activity 的 App 會由下方滑入,覆蓋在目前 App 之上。除了視覺上的效果不同之外,「畫面滑入」的 Web Activity 在 activity 處理結束畫面關閉之後(例如選擇了一張圖片),會回到原本的 App ,而「視窗切換」的 Web Activity 則需要使用者自己手動回到主畫面 (homescreen) 或者 App 列表,才能夠切換回原本的 App 。提供 Web Activity 的 App 可以自行決定提供哪種形式讓其他 App 呼叫。<br>
- <br>
- 除了在 manifest.webapp 宣告 Web Activity 之外,程式碼中當然也要有具體的實作。如下所示是「圖片集」 App 的實作程式碼:</p>
-<pre> navigator.mozSetMessageHandler('activity', function activityHandler(a) {
- var activityName = a.source.name;
- if ( activityName === 'browse') {
- // If this was a cold start, then the db needs to be initialized.
- if (!photodb)
- initDB(true); // Initialize both the photo and video databases
- // Always switch to the list of thumbnails.
- setView(thumbnailListView);
- }
- });
-</pre>
-<p>當有 MozActivity 的呼叫發生時,會以系統訊息的方式通知將要被開啓的 App 。因此這個 App 必須要註冊 'activity' 的系統訊息,提供對應的回呼函示 (callback function),明白表示當 MozActivity 的呼叫發生時, App 被開啓後將如何處理這個 activity。這邊「圖片集」 App 執行初始化圖庫、以縮圖方式列出圖庫內的相片。<br>
- 「圖片集」 App 在 manifest.webapp 的聲明中使用 window disposition 的方式處理 activity,表示使用者並不會在完成什麼動作之後回到「相機」 App 。「圖片集」 App 就如同是被使用者手動在主畫面(homescreen)點選開啟一般,由使用者自行決定何時離開。</p>
-<h4 id="disposition_inline">"disposition": "inline"</h4>
-<p>我們來看另一種形式的  Web Activity。同樣以「圖片集」 App 為例,它可以提供一個  Web Activity 供其他 App 挑選照片。挑選照片的 actvity 必須要把被挑選到的相片名稱、路徑…等等的資訊傳回給呼叫方(caller),並且在挑選動作完成後回到呼叫方的 App 。這個情況下,使用 inline disposition 的形式來實作。<br>
- manifest.webapp 的宣告是這樣的:</p>
-<pre>"activities": {
- "pick": {
- "filters": {
- "type": ["image/jpeg", "image/png"]
- },
- "disposition": "inline",
- "returnValue": true,
- "href": "/index.html#pick"
- }
-}</pre>
-<p><br>
- 它提供一個「挑選(pick)」動作的 activity,挑選的資料形態以一個陣列作為篩選條件,提供挑選 "image/jpeg" 或 "image/png" 圖檔,並且會回傳挑選的值。<br>
- 由於 inline disposition 的 Web Activity 是以單一畫面滑入的形式被開啓,不同於 window disposition 是整個 App 被開啓,這裡我們可以多指派一個聲明表示要處理這個  Web Activity 的頁面位置 ("href": "/index.html#pick")。<br>
- <br>
- 這個頁面會有具體的程式碼實作如下:</p>
-<pre> navigator.mozSetMessageHandler('activity', function activityHandler(activityRequest) {
- var activityName = activityRequest.source.name;
- if (activityName === 'pick') {
- var pickType = activityRequest.source.data.type;
- var width = activityRequest.source.data.width;
- var height = activityRequest.source.data.height;
- var blob = startPick(pickType, width, height);
- if (blob) {
- activityRequest.postResult({type: pickType, blob: blob});
- } else {
- activityRequest.postError('pick cancelled');
- }
- }
- });</pre>
-<p><br>
- 當有 MozActivity 的呼叫發生時,「圖片集」 App 收到 'activity' 的系統訊息,回呼函示 (callback function)會被運行,它可以讀取請求此 activity 的 App 所提供的數據,例如所需的圖片類型、寬度、高度… 等,作為陳列圖片清單的參考。當使用者成功選取了一張圖片,呼叫 activityRequest.postResult 傳回挑選結果。這個結果是個物件,讓呼叫 MozActivity 的 App 能夠知道圖片相關的資訊。<br>
- <br>
- 在「設定」 App 中希望能讓使用者選取一張圖片做為桌布,只需要呼叫 activity 來完成。</p>
-<pre> var activityRequest = new MozActivity({
- name: 'pick',
- data: {
- type: 'image/jpeg',
- width: 320,
- height: 480
- }
- });
- activityRequest.onsuccess = function onPickSuccess() {
- if (!activityRequest.result.blob)
- return;
-
- var reader = new FileReader();
- reader.readAsDataURL(activityRequest.result.blob);
- reader.onload = function() {
- navigator.mozSettings.createLock().set({
- 'wallpaper.image': reader.result
- });
- displayImgae(reader.result);
- };
- };
- activityRequest.onerror = function onPickError() {
- console.warn('pick failed!');
- };
-</pre>
-<p>在這段程式碼中,「設定」呼叫了一個 MozActivity 並在參數物件中聲明該 activity 是「挑選(pick)」的動作,挑選的是「image/jpeg」檔案,限定寬度與高度為 320 x 480。同樣的,「設定」 App 不知道實際上哪個 App 會被呼叫,它只在意當挑選動作完成時,它的 onsuccess 回呼函示會被執行,取得 blob 內容,並且畫面焦點將回到它身上,讓它可以顯示選取的圖片。系統將決定哪個 App 提供這樣的行為,若有多個 App 同時提供一樣的行為時,系統會產生一個選單讓使用者選取。<br>
-  </p>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/封包式_(packaged)_app/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/封包式_(packaged)_app/index.html
deleted file mode 100644
index 80a905ab88..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/封包式_(packaged)_app/index.html
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: 封包式 (Packaged) App
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide/封包式_(Packaged)_App
----
-<div class="note">
- <p id="*.E5.8E.9F.E6.96.87.E5.87.BA.E8.99.95.EF.BC.9Ahttps.3A.2F.2Fmarketplace.firefox.com.2Fdevelopers.2Fdocs.2Fpackaged">原文出處:https://marketplace.firefox.com/developers/docs/packaged</p>
-</div>
-<p><strong>封包式</strong><strong> (Packaged) App</strong> 屬於 Open Web App,即以 ZIP 壓縮檔納入其 HTML、CSS、JavaScript、app manifest 等所有資源;取代「將資源置於 Web 伺服器之上」的方式。封包式 App 的 ZIP 壓縮檔另將 <a href="https://developer.mozilla.org/docs/Apps/Manifest">app manifest</a> 置於其根目錄之下,且此 manifest 檔案必須命名為 manifest.webapp。</p>
-<div class="note">
- <p><strong>注意:</strong>截至 2013 年 1 月為止,Firefox Marketplace 上所提供的封包式 App 限定為 Firefox OS App。</p>
-</div>
-<p> </p>
-<h2 id="封包式_App_之用途"><strong>封包式</strong><strong> App </strong><strong>之用途</strong></h2>
-<p>若 App 會存取裝置上的 Sensitive API,則最好能透過封包式 App 而達到安全性的需求。App 均必須經過上架商城 (如 Firefox OS Marketplace) 認證方可販售。這些商城將審核 App,確認其是否可行,再以其自有金鑰完成加密簽核。再審核過安全性、隱私性、功能性等的可能問題之後,可為 App 的使用者更多添一份保障。</p>
-<p> </p>
-<h2 id="封包式_App_的類型"><strong>封包式</strong><strong> App </strong><strong>的類型</strong></h2>
-<p>封包式 App 可分為 3 類:</p>
-<h4 id="Privileged_app">Privileged app</h4>
-<p style="margin-left: 36.0pt;">Privileged App 是由 Firefox OS Marketplace 以特殊程序核准之後發出。如果任一 App 要存取裝置上的特定 Sensitive API,則可為使用者提供更高的安全性。此種 App 即等同 iOS 或 Android 平台上的 Native App,並具備下列特性:</p>
-<ul>
- <li>經過程式碼審核或同等作業之後,才會由 App 商城發出許可</li>
- <li>App 資源亦需由 App 商城簽署。</li>
- <li>即使無法存取特定 Sensitive Web API 的未受信任內容,亦可透過 Privileged App 的方式使用之。</li>
- <li>強制性的<a href="https://developer.mozilla.org/en-US/docs/Apps/CSP">內容安全政策 (CSP)</a>;Privileged App 即使用此CSP:</li>
-</ul>
-<pre>"default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"</pre>
-<ul>
- <li>另具備安全性相關的必要機制。可參閱 <a href="https://wiki.mozilla.org/Apps/Security">Security</a> 以進一步了解。</li>
-</ul>
-<h4 id="Certified_app">Certified app</h4>
-<p style="margin-left: 36.0pt;">Certified App 將用於重要的系統功能,如智慧型手機上預設的撥號鍵盤,或系統設定用 App;當然亦可用於 Firefox OS 手機上的重要功能。Certified App 並不會用於第三方 App,所以大多數的 App 開發人員可略過此類 App 不管。除了所有的裝置許可均為隱式許可 (Implicit permission,意即不需要外部的使用者許可) 之外,Certified App 與 Privileged App 大部分均屬於相似的封包式 App。而 Certified App 必須取得 OEM 裝置或電信服務供應商裝置的許可,才能讓此隱式 App 使用重要 API。下列即為 Certified App 的 CSP (與 Privileged App 的 CSP 略有不同):</p>
-<pre>"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"</pre>
-<p style="margin-left: 36.0pt;">若與 Certified App 相較,Privileged App 則針對 inline CSP 的影響而稍微放寬了限制。進一步了解其原因,可參閱<a href="https://wiki.mozilla.org/Apps/CSP">預設 CSP</a> 與 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=768029">Bug 768029</a>。</p>
-<h4 id="Plain_packaged_app">Plain packaged app</h4>
-<p style="margin-left: 36.0pt;">當然也可讓一般 App 封裝為 ZIP 壓縮檔。在 Marketplace 簽署之後,並不會執行如 Privileged/Certified App 所需的特殊授權程序。且 Plain Packaged App 並不會使用特定的 Sensitive Web API;同時也不屬於 Privileged/Certified App 所用 CSP 管轄所及。</p>
-<p> </p>
-<h2 id="與托管式_(Hosted)_App_的差異"><strong>與托管式</strong><strong> (Hosted) App </strong><strong>的差異</strong></h2>
-<p>封包式 App 的功能,其實與一般網站型態的 Open Web App (即所謂托管式 Hosted App) 功能相同。但封包式 App 的差異在於:</p>
-<ul>
- <li>封包式 App 不需網際網路檔案供應源。托管式 App 所用的 one-app-per-origin 政策,並不適用於封包式 App。</li>
- <li>封包式 App 的 ZIP 檔案內部使用特殊協定:<code>app://&lt;uuid&gt;</code>。舉例來說,若在封包式 App 內部載入<code> /index.html </code>作為內容,則其實載入了如下的字串 (僅 UUID 不同):</li>
-</ul>
-<pre>app://550e8400-e29b-41d4-a716-446655440000/index.html</pre>
-<ul>
- <li>封包式 App 的 manifest 檔案必須命名為 <code>manifest.webapp</code>。</li>
- <li>封包式 App 檔案源必須存取自 ZIP 壓縮檔;而 ZIP 壓縮檔又已儲存於 App 所安裝的裝置上。</li>
- <li>封包式 App 均以不同 <code>mozApps</code> 函式所安裝:<code>installPackage()</code>。</li>
- <li>針對所有應用程式的內容,封包式 App <code>均強制使用特定的</code> <a href="https://developer.mozilla.org/docs/Security/CSP/Introducing_Content_Security_Policy">CSP</a>;托管式 App 亦可使用 CSP,但非必要條件。</li>
- <li>封包式 App 可於 iframes 之內嵌入遠端內容,但該內容將無法存取 Privileged API,亦不會具備預設的 CSP。</li>
- <li>封包式 App 具備更新程序,可為使用者取得新版本的 App。托管式 App 則不需要此程序。</li>
-</ul>
-<p>與一般的托管式 App 相同,封包式 App 仍可存取 Web 伺服器上的資料庫。</p>
-<p> </p>
-<h2 id="使用_Sensitive_Web_API"><strong>使用</strong><strong> Sensitive Web API</strong></h2>
-<p>現在有許多惡意 Web API,因此應謹慎存取 Web API。針對 App 所要存取的所有 Sensitive API,你應該在 <a href="https://developer.mozilla.org/docs/Apps/Manifest">manifest 檔案</a>的 <code>permissions </code>欄位中新增輸入項。</p>
-<p>一般托管式 App 亦可存取某些 Sensitive API,但其他 API 就限定封包式 (Privileged 或 Certified) App 才可存取。可參閱 <a href="https://developer.mozilla.org/docs/Apps/App_permissions">App 許可</a>找到相關需求的表格。</p>
-<p> </p>
-<h2 id="封包式_App_與_Firefox_Marketplace"><strong>封包式</strong><strong> App </strong><strong>與</strong><strong> Firefox Marketplace</strong></h2>
-<p>與托管式 App 相較,Firefox Marketplace 處理封包式 App 的方式較為不同。一旦提交自己的封包式 App 之後,其 ZIP 壓縮檔即儲存於 Marketplace 的伺服器上,且 Marketplace 隨即根據該 ZIP 壓縮檔中的 manifest 檔案,產生新的 manifest 檔案並命名為「mini-manifest」。只要使用者想安裝此 App,就會將 mini-manifest 檔案傳送至 <code>installPackage()</code> 函式以安裝該 App。此 mini-manifest 檔案僅用於安裝與更新作業,與 App 的執行作業無關。</p>
-<p> </p>
-<h2 id="測試封包式_App_的安裝作業"><strong>測試封包式</strong><strong> App </strong><strong>的安裝作業</strong></h2>
-<p>透過 Firefox OS 模擬器 (Firefox OS Simulator),即可輕鬆安裝封包式 App。目前 Firefox OS 模擬器亦針對各個平台而提供 <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/r2d2b2g/r2d2b2g-windows.xpi">Windows</a>、<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/r2d2b2g/r2d2b2g-mac.xpi">OSX</a>、<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/r2d2b2g/r2d2b2g-linux.xpi">Linux</a> 等不同版本。</p>
-<p>安裝模擬器時,將於 Firefox 的「網頁開發者 (Web Developer)」功能表中新增「Firefox OS Simulator」項目。在開啟附加元件之後,即可透過「Add Directory」而指定本端 webapp.manifest 檔案的位置。模擬器另可將該 App 封包 (即壓縮該資料夾),再透過剛封包完畢的 App 開啟模擬器。</p>
-<p>針對 Linux 與 Windows 的使用者,還需要其他步驟才能設定 Android Debug Bridge (adb),以溝通實際裝置。請參閱<a href="https://developer.android.com/tools/device.html#setting-up">步驟 3:設定系統以偵測自己的裝置</a>。</p>
-<p>在實際裝置上,可點選 Settings &gt; Device Information &gt; More Information &gt; Developer &gt; Remote Debugging,進而啟動遠端除錯功能。</p>
-<p>任何時間點均可連上受支援的裝置。一旦連上裝置,模擬器即可偵測並顯示所接上的裝置。而在 App 列表的旁邊,可看到「push」的新按鈕。按下「push」即可將剛封包完畢的 App 傳送至裝置上。</p>
-<p> </p>
-<h2 id="更新封包式_App"><strong>更新封包式</strong><strong> App</strong></h2>
-<p>若要進一步了解更新作業,請參閱<a href="https://developer.mozilla.org/docs/Apps/Updating_apps">更新 App</a>。</p>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/托管更新作業_(hosting_updates)_/index.html b/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/托管更新作業_(hosting_updates)_/index.html
deleted file mode 100644
index ea5b41073b..0000000000
--- a/files/zh-tw/archive/b2g_os/3rd_party_app_developer_guide/托管更新作業_(hosting_updates)_/index.html
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: 托管更新作業 (Hosting Updates)
-slug: Archive/B2G_OS/3rd_Party_App_Developer_Guide/托管更新作業_(Hosting_Updates)_
----
-<div class="note">
- <p>本文節錄自 <a href="https://wiki.mozilla.org/B2G/Updating" title="https://wiki.mozilla.org/B2G/Updating">B2G/Updating</a></p>
-</div>
-<p><strong>托管更新作業</strong><strong> (Hosting Updates) </strong></p>
-<p>其實亦可解釋為:用戶端針對更新檔案所進行的輪詢作業。</p>
-<p>B2G 用戶端針對更新所執行的輪詢 (Poll),即針對 <strong>update manifest</strong> 檔案進行提取 (Fetching) 與剖析 (Parsing)。此檔案即稱為「update.xml」。</p>
-<p>B2G 用戶端均已完成「輪詢特定伺服器上的更新」的設定,亦將查詢伺服器上特別架構而成的路徑。而我們建議透過 HTTPS 協定 (當然 HTTP 亦支援),讓用戶端查詢伺服器。若現有用戶端更改了輪詢程式碼,則只要將一筆更新傳送至此用戶端,即可針對「用戶端所輪詢過的路徑與伺服器」進行變更。</p>
-<p>在下列範例中,我們假設將更新作業托管 (Hosting) 給 updates.b2g.com 伺服器。</p>
-<p>則由用戶端所輪詢的 URL,主要可用下列參數呈現:</p>
-<table>
- <tbody>
- <tr>
- <td>
- <p>PRODUCT_MODEL</p>
- </td>
- <td>
- <p>裝置型號的名稱。此為 B2G 屬性資料庫中的 ro.product.model 數值。</p>
- </td>
- </tr>
- <tr>
- <td>
- <p>CHANNEL</p>
- </td>
- <td>
- <p>更新「頻道」,有助於測試作業。舉例來說,我們可設定伺服器托管「nightly」、「beta」、「release」等頻道。</p>
- </td>
- </tr>
- <tr>
- <td>
- <p>VERSION</p>
- </td>
- <td>
- <p>此為用戶端的軟體版本,此以「18.0.2」為例。</p>
- </td>
- </tr>
- <tr>
- <td>
- <p>BUILD_ID</p>
- </td>
- <td>
- <p>專屬 ID,如針對特定軟體版本 (Build) 所設的時間戳記。</p>
- </td>
- </tr>
- </tbody>
-</table>
-<p>當然另有許多數值,可為查詢作業建構出更新用的 URL。</p>
-<p>B2G 用戶端隨後將整合「本身已設定的更新主機」的數值,搭配上述的相關數值,進而建構出 URL,以於執行期間執行輪詢作業。</p>
-<p>此 URL 範例可為:</p>
-<pre><a class="external free" href="https://updates.b2g.com/release/unagi1/18.0/20121203123456/update.xml" rel="nofollow">https://updates.b2g.com/release/unagi1/18.0/20121203123456/update.xml</a>
-</pre>
-<p> </p>
-<p>針對用戶端的請求,若伺服器回傳「404 Not Found」,即代表目前並無可用的更新;若回傳「200」與 manifest 檔案,則代表可能有更新。該 manifest 檔案將描述可用的新版本,亦即用戶端目前<strong>應該更新的</strong>版本。此 manifest 檔案範例為:</p>
-<pre>&lt;?xml version="1.0"?&gt;
-&lt;updates&gt;
- &lt;update type="major" appVersion="19.0" version="19.0" extensionVersion="19.0" buildID="20121210123456"
- licenseURL="http://www.mozilla.com/test/sample-eula.html"
- detailsURL="http://www.mozilla.com/test/sample-details.html"&gt;
- &lt;patch type="partial" URL="https://updates.b2g.com/release/unagi1/18.0/20121203123456/update.mar"
- hashFunction="SHA512" hashValue="5111e033875752b7d9b32b4795152dea5ef954cb8a9d4a602dd19a923b464c43521287dcb5781faf3af76e6dc5e8a3dd9c13edea18c1f2c8f3bd89e17d103d6f"
- size="41901319"/&gt;
- &lt;/update&gt;
-&lt;/updates&gt;
-</pre>
-<p>而 manifest 檔案中的欄位則描述了:</p>
-<ul>
- <li>可於用戶端顯示使用者介面的後設資料 (Metadata)</li>
- <li>關於可用新版本的後設資料</li>
- <li>更新封裝的位置</li>
- <li>用以驗證更新裝包下載作業的後設資料</li>
-</ul>
-<p>當然,使用者或用戶端裝置可能會拒絕更新作業。</p>
-<p>透過這些機制,伺服器將可托管更新封裝,以利舊版用戶端的更新作業。或可僅托管「線性更新歷史紀錄 (Linear update history)」,讓用戶端必須透過單一路徑完成升級。</p>
-<p>針對「版本 (Build) 伺服器」和「更新主機」之間的互動細節,仍與作業環境息息相關。本文尚不足以詳細解說完畢。</p>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/add-ons/index.html b/files/zh-tw/archive/b2g_os/add-ons/index.html
deleted file mode 100644
index 13f42518cd..0000000000
--- a/files/zh-tw/archive/b2g_os/add-ons/index.html
+++ /dev/null
@@ -1,282 +0,0 @@
----
-title: Firefox OS 附加元件
-slug: Archive/B2G_OS/Add-ons
-translation_of: Archive/B2G_OS/Add-ons
----
-<div class="warning">
-<p><strong>重要</strong>: 僅 Firefox OS 2.5+ 支援附加元件功能。</p>
-</div>
-
-<p class="summary">「附加元件」的概念在 Web 瀏覽器的世界中眾人皆知,而我們也將這個概念帶進 Firefox OS。Firefox OS 的附加元件可以僅僅作用於單一 App 上,也可以指定作用於多個、甚至所有 App 上。本文帶您一步步撰寫自己的 Firefox OS 附加元件,同時提供一些秘訣及其他應該了解的資訊。</p>
-
-<div class="note">
-<p><strong>附註</strong>:本文僅重點概略翻譯。</p>
-</div>
-
-<div class="note">
-<p><strong>附註</strong>:Firefox OS 附加元件採用 WebExtensions 擴充模式。此模式大部份源自於 Chrome/Blink 擴充套件機制,讓附加元件在開發時能擁有許多互通性與功能上的優勢。詳情可見持續編寫中的 <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions">WebExtensions 文件集</a>。</p>
-</div>
-
-<h2 id="開發附加元件">開發附加元件</h2>
-
-<p>Firefox OS 附加元件其實也是個內含 JavaScript / CSS / 其他必備檔案的 App,但不是拿來獨立運作,而是在描述檔中增加特別的說明來定義要在哪些 App 中使用這個附加元件。When apps are launched on a Firefox OS device that has an add-on installed, the add-on is injected into any app that matches the pattern specifed in the filter.</p>
-
-<p>Firefox OS add-ons use the same syntax and structure for their code as the new school of Firefox add-ons developed using the <a href="https://wiki.mozilla.org/WebExtensions">WebExtensions API</a>, which is itself based on the <a href="https://developer.chrome.com/extensions">Chrome extensions</a> model.</p>
-
-<h3 id="簡單範例">簡單範例</h3>
-
-<p>以下我們以一個簡單的例子說明 Firefox OS 附加元件的程式基礎。這個附加元件會在 system app 放上一塊看板,使用者可以點擊關閉。</p>
-
-<p><img alt="firefox os screenshot showing add-on banner" src="https://mdn.mozillademos.org/files/11445/add-on-screenshot.png" style="display: block; height: 445px; margin: 0px auto; width: 250px;"></p>
-
-<p>這個附加元件很簡單,但用來作為入門倒是相當足夠了。你可以在 <a href="https://github.com/mdn/simple-addon">GitHub 上下載範例程式</a>,而後用 WebIDE 裝到你的 Firefox OS 裝置上(參考 {{anch("Testing your add-on using WebIDE")}} 一節)。往後你也可以透過 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 來發表自己的附加元件。</p>
-
-<p>Be aware that Firefox OS add-ons can do a lot more than what we've got listed here. The <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> documentation will have more information added as time goes on.</p>
-
-<h2 id="解析_Firefox_OS_add-on">解析 Firefox OS add-on</h2>
-
-<p>In this section we'll walkthrough the contents of the sample add-on repo, explaining each piece of content. 目錄結構看起來像這樣:</p>
-
-<ul class="directory-tree">
- <li>simple-addon/
- <ul>
- <li>manifest.json</li>
- <li>update.webapp</li>
- <li>css/
- <ul>
- <li>style.css</li>
- </ul>
- </li>
- <li>js/
- <ul>
- <li>index.js</li>
- </ul>
- </li>
- <li>icons/
- <ul>
- <li>128.png</li>
- </ul>
- </li>
- <li>extension.zip</li>
- </ul>
- </li>
-</ul>
-
-<h3 id="manifest.json">manifest.json</h3>
-
-<p>你應該發現了:在這個範例附加元件目錄中,有兩種類似的描述檔。第一個<code>「manifest.json</code>」的結構類似 Chrome 擴充套件,與 CSS、JavaScript 及其他檔案一起放在 {{anch("extensions.zip")}} 當中。It can contain a large variety of instructions (see <a href="https://developer.chrome.com/extensions/manifest">Chrome Manifest File Format</a>), but for now we're just going to concentrate on a simple subset:</p>
-
-<pre class="brush: json language-json"><code class="language-json"><span class="punctuation token">{</span>
- <span class="key token">"manifest_version":</span> <span class="number token">1</span><span class="punctuation token">,</span>
- <span class="key token">"name":</span> <span class="string token">"Add-on banner"</span><span class="punctuation token">,</span>
- <span class="key token">"description":</span> <span class="string token">"Firefox OS add-on example"</span><span class="punctuation token">,</span>
- <span class="key token">"version":</span> <span class="string token">"1.0"</span><span class="punctuation token">,</span>
- <span class="key token">"author":</span> <span class="string token">"Chris Mills"</span><span class="punctuation token">,</span>
- <span class="key token">"content_scripts":</span> <span class="punctuation token">[</span><span class="punctuation token">{</span>
- <span class="key token">"matches":</span> <span class="punctuation token">[</span><span class="string token">"app://system.gaiamobile.org/index.html"</span><span class="punctuation token">]</span><span class="punctuation token">,</span>
- <span class="key token">"css":</span> <span class="punctuation token">[</span><span class="string token">"css/style.css"</span><span class="punctuation token">]</span><span class="punctuation token">,</span>
- <span class="key token">"js":</span> <span class="punctuation token">[</span><span class="string token">"js/index.js"</span><span class="punctuation token">]</span>
- <span class="punctuation token">}</span><span class="punctuation token">]</span><span class="punctuation token">,</span>
- <span class="key token">"icons":</span> <span class="punctuation token">{</span>
- <span class="key token">"128":</span> <span class="string token">"/icons/128.png"</span>
- <span class="punctuation token">}</span>
-<span class="punctuation token">}</span></code></pre>
-
-<p>Most of these fields are pretty self-explanatory, but we'll cover the last few.</p>
-
-<p>首先以 <code>content_scripts</code> 指定要植入 app 的檔案 — 你可以看到這邊以 <code>css</code> 及 <code>js</code> 兩欄分別指定 CSS 樣式檔及 JavaScript 程式檔。<code>matches</code> 欄位則是用以指定該把檔案放入哪些 app 裡,這個欄位的內容形式很多元(參考 <a href="https://developer.chrome.com/extensions/match_patterns">Chrome Match Patterns</a>),但我們先簡單指定為 <code>app://system.gaiamobile.org/index.html</code>,讓附加元件僅影響 system app。若想影響所有 app,可以將此欄位寫為 <code>app://*/* </code>。</p>
-
-<div class="note">
-<p><strong>Note</strong>: You can reference multiple scripts and stylesheets by simply including multiple items in the arrays, for example <code>"css": ["css/style.css", "css/more.css"]</code>.</p>
-</div>
-
-<div class="note">
-<p><strong>Note</strong>: Firefox OS does not currently support the Chrome &lt;all_urls&gt; keyword.</p>
-</div>
-
-<p>At the bottom of the manifest we've included the <code>icons</code> field; see the next section for more info on this.</p>
-
-<h3 id="update.webapp">update.webapp</h3>
-
-<p><code>update.webapp</code> 則是 <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest">Firefox OS 式的描述檔</a>,基本上就是跟打包 app 時用的描述檔格式相同。(參考 <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing#Self-publishing_packaged_apps">Self-publishing packaged apps</a>。)</p>
-
-<p>Our <code>update.webapp</code> file looks like so:</p>
-
-<pre class="brush: json language-json"><code class="language-json"><span class="punctuation token">{</span>
- <span class="key token">"name" :</span> <span class="string token">"Add-on banner"</span><span class="punctuation token">,</span>
- <span class="key token">"description":</span> <span class="string token">"Firefox OS add-on example"</span><span class="punctuation token">,</span>
- <span class="key token">"developer":</span> <span class="punctuation token">{</span> <span class="key token">"name":</span> <span class="string token">"Chris Mills"</span> <span class="punctuation token">}</span><span class="punctuation token">,</span>
- <span class="key token">"package_path":</span> <span class="string token">"extension.zip"</span><span class="punctuation token">,</span>
- <span class="key token">"icons":</span> <span class="punctuation token">{</span>
- <span class="key token">"128":</span> <span class="string token">"/icons/128.png"</span>
- <span class="punctuation token">}</span>
-<span class="punctuation token">}</span></code></pre>
-
-<p>Again, most of this is fairly self-explanatory.</p>
-
-<p>這邊最重要的欄位該是 <code>package_path</code>,用以指定內含附加元件程式的包裝檔位置。</p>
-
-<p>You'll notice that the <code>icons</code> field is included here, the same as it is in {{anch("manifest.json")}} — <code>update.webapp</code> is the only place you <em>need</em> to have the icons information at the moment, but we'd recommend you include it in both places for now, just in case things change. The <code>icons</code> field points to the add-on icon so it can be used inside the Gaia Settings app, and the Firefox Marketplace when it starts to host add-ons.</p>
-
-<h3 id="指定圖示">指定圖示</h3>
-
-<p>你必須在描述檔中至少指定一個圖示,否則描述檔無效。詳情可參考 <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest#icons">Manifest 參考文件:圖示</a> 一節。</p>
-
-<h3 id="CSS">CSS</h3>
-
-<p>There is nothing special about the CSS included in the example. The only thing to bear in mind is that you should make sure your add-on classnames and selectors do not conflict with any of the existing CSS in the app(s) it is applied to.</p>
-
-<p>For example, we wrapped our example banner in a {{htmlelement("div")}} with class <code>fxos-banner</code>. But you could even consider using some kind of unique code for your classname.</p>
-
-<h3 id="JavaScript">JavaScript</h3>
-
-<p>Again, the JavaScript file that powers the add-on doesn't have any special functionality inside it (see the <a href="https://github.com/mdn/simple-addon/blob/gh-pages/js/index.js">JavaScript source on Github</a>.) It is injected into the apps it is applied to along with any CSS specified in the {{anch("manifest.json")}} file.</p>
-
-<div class="note">
-<p><strong>Note</strong>: Add-on code is injected every time an app is launched and the match specified in manifest.json pattern matches that app. It is also injected whenever add-ons are enabled. When an add-on is injected into an app because the app is launching, all add-on files are injected into the app before anything in the app is initialized, including the DOM. It is up to the add-on developer to handle the different launch cases cases (immediate injection vs. injection on launch); there is more info on this below.</p>
-</div>
-
-<p>Other main things to note are covered below.</p>
-
-<h4 id="The_window_object">The window object</h4>
-
-<p>Add-ons only share a proxied version of the content <code>window</code>. As a result, anything that is written to the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window">window</a> object from an add-on is unavailable to the app code. However, anything on the <code>window</code> object that is set by app code is available to add-ons. Similarly, the DOM is accessible as usual.</p>
-
-<h4 id="Injecting_code_at_the_correct_time">Injecting code at the correct time</h4>
-
-<p>You must be careful to properly handle cases where an add-on is injected into an app after the app has been loaded. Such a scenario can occur when an app is already running and an add-on that targets it is enabled.</p>
-
-<p>in such a case, a <a href="https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload">window.onload</a> handler won't work because the <a href="https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a> event has already occured.</p>
-
-<p>There's no good solution to this problem right now. In the interim, we recommend to check whether or not the DOM has been loaded before setting a <code>DOMContentLoaded</code> callback. This pattern is used in the demo:</p>
-
-<pre class="brush: js language-js"><code class="language-js"><span class="comment token">// If injecting into an app that was already running at the time
-</span><span class="comment token">// the app was enabled, simply initialize it.
-</span><span class="keyword token">if</span> <span class="punctuation token">(</span>document<span class="punctuation token">.</span>documentElement<span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="function token">initialize<span class="punctuation token">(</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-<span class="punctuation token">}</span>
-<span class="comment token">
-// Otherwise, we need to wait for the DOM to be ready before
-</span><span class="comment token">// starting initialization since add-ons are usually (always?)
-</span><span class="comment token">// injected *before* `document.documentElement` is defined.
-</span><span class="keyword token">else</span> <span class="punctuation token">{</span>
- window<span class="punctuation token">.</span><span class="function token">addEventListener<span class="punctuation token">(</span></span><span class="string token">'DOMContentLoaded'</span><span class="punctuation token">,</span> initialize<span class="punctuation token">)</span><span class="punctuation token">;</span>
-<span class="punctuation token">}</span>
-
-<span class="keyword token">function</span> <span class="function token">initialize<span class="punctuation token">(</span></span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="comment token"> // ...
-</span><span class="punctuation token">}</span></code></pre>
-
-<h4 id="避免重複植入">避免重複植入</h4>
-
-<p>為避免附加元件的程式碼多次重複植入到同一 App 中,您必須檢查附加元件是否曾經植入過,例如這樣</p>
-
-<p>you should check whether your add-on is already present, like this:</p>
-
-<pre class="brush: js language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">initialize<span class="punctuation token">(</span></span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="keyword token">if</span> <span class="punctuation token">(</span>document<span class="punctuation token">.</span><span class="function token">querySelector<span class="punctuation token">(</span></span><span class="string token">'.fxos-banner'</span><span class="punctuation token">)</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="comment token"> // Already injected, abort.
-</span> <span class="keyword token">return</span><span class="punctuation token">;</span>
- <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
- <span class="keyword token">var</span> body <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">querySelector<span class="punctuation token">(</span></span><span class="string token">'body'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
- <span class="keyword token">var</span> fxosBanner <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement<span class="punctuation token">(</span></span><span class="string token">'div'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
- fxosBanner<span class="punctuation token">.</span>classList<span class="punctuation token">.</span><span class="function token">add<span class="punctuation token">(</span></span><span class="string token">'fxos-banner'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
- <span class="keyword token">var</span> bannerText <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement<span class="punctuation token">(</span></span><span class="string token">'p'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
- <span class="keyword token">var</span> closeBtn <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement<span class="punctuation token">(</span></span><span class="string token">'button'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-
- fxosBanner<span class="punctuation token">.</span><span class="function token">appendChild<span class="punctuation token">(</span></span>bannerText<span class="punctuation token">)</span><span class="punctuation token">;</span>
- fxosBanner<span class="punctuation token">.</span><span class="function token">appendChild<span class="punctuation token">(</span></span>closeBtn<span class="punctuation token">)</span><span class="punctuation token">;</span>
- body<span class="punctuation token">.</span><span class="function token">appendChild<span class="punctuation token">(</span></span>fxosBanner<span class="punctuation token">)</span><span class="punctuation token">;</span>
-
- closeBtn<span class="punctuation token">.</span>textContent <span class="operator token">=</span> <span class="string token">'X'</span><span class="punctuation token">;</span>
- bannerText<span class="punctuation token">.</span>textContent <span class="operator token">=</span> <span class="string token">'Wow, you have an extension installed!'</span><span class="punctuation token">;</span>
-
- closeBtn<span class="punctuation token">.</span>onclick <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- fxosBanner<span class="punctuation token">.</span>parentNode<span class="punctuation token">.</span><span class="function token">removeChild<span class="punctuation token">(</span></span>fxosBanner<span class="punctuation token">)</span><span class="punctuation token">;</span>
- <span class="punctuation token">}</span>
- <span class="punctuation token">}</span>
-<span class="punctuation token">}</span></code></pre>
-
-<p>So here we are using <code>if (document.querySelector('.fxos-banner'))</code> to check whether the example banner already exists. If so, then we return out of the function. If not, then the <code>querySelector()</code> method returns <code>null</code>, and we run the code block that creates the banner.</p>
-
-<h4 id="App_management_functions_in_add-ons">App management functions in add-ons</h4>
-
-<p>All <code><a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMApplicationsRegistry">Apps</a></code> and <code><a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMApplicationsRegistry/mgmt">Mgmt</a></code> functions work on add-ons just like they do on apps. Be aware however that the latter are only available to add-ons when they are injected into a certified app that has the <code>webapps-manager</code> permission specified in the manifest.</p>
-
-<p>In addition to these functions, an <code><a href="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/Apps.webidl#141">onenabledstatechange</a></code> callback is exposed for add-ons being enabled and disabled. This event is fired for all add-ons, so you will have to check which add-on was enabled/disabled before performing initialization or cleanup.</p>
-
-<pre class="brush: js language-js"><code class="language-js">navigator<span class="punctuation token">.</span>mozApps<span class="punctuation token">.</span>mgmt<span class="punctuation token">.</span>onenabledstatechange <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span>event<span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="keyword token">var</span> app <span class="operator token">=</span> event<span class="punctuation token">.</span>application<span class="punctuation token">;</span>
- <span class="keyword token">if</span> <span class="punctuation token">(</span>app<span class="punctuation token">.</span>manifestURL <span class="operator token">===</span> <span class="string token">'https://origin.of.manifest/manifest.webapp'</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="keyword token">var</span> wasEnabled <span class="operator token">=</span> app<span class="punctuation token">.</span>enabled<span class="punctuation token">;</span>
- <span class="comment token"> // do something with this information
-</span> <span class="punctuation token">}</span>
-<span class="punctuation token">}</span><span class="punctuation token">;</span></code></pre>
-
-<h3 id="extension.zip">extension.zip</h3>
-
-<div class="note">
-<p><strong>Note</strong>: The <code>extension.zip</code> file has been left in the demo repo mainly for illustrative purposes, so it is clear how the system works. You actually don't need to include the zip in your directory, as WebIDE will generate it for you when you install the add-on. The Firefox Marketplace is likely to do the same when it starts to list add-ons.</p>
-</div>
-
-<p>The <code>extension.zip</code> archive contains the code for the extension, and is referenced in the {{anch("update.webapp")}} <code>package_path</code> field — This is how Gecko finds the code to be installed. Archived inside you'll find:</p>
-
-<ul class="directory-tree">
- <li>css/
- <ul>
- <li>style.css</li>
- </ul>
- </li>
- <li>js/
- <ul>
- <li>index.js</li>
- </ul>
- </li>
- <li>icons/
- <ul>
- <li>128.png</li>
- </ul>
- </li>
- <li>manifest.json</li>
-</ul>
-
-<p>So the <code>manifest.json</code> file sits inside the archive, and serves to reference the files to be injected and specify which apps to affect.</p>
-
-<h3 id="Testing_your_add-on_using_WebIDE">Testing your add-on using WebIDE</h3>
-
-<p>Mozilla's WebIDE tool is available in Firefox desktop by default. To use it for installing add-ons on your phone, follow the steps listed below:</p>
-
-<ol>
- <li>Make sure you have Firefox 43 or above installed (this was <a href="https://nightly.mozilla.org/">Nightly</a> at the time of writing), as add-ons are not supported in WebIDE below this version.</li>
- <li>Open your browser and open the WebIDE tool (press the WebIDE button, or choose <em>Tools &gt; Web Developer &gt; WebIDE</em> from the menu.)</li>
- <li>Make sure your phone has remote debugging enabled (<em>Settings App &gt; Developer &gt; Set the "Debugging via USB " selection to "ADB and DevTools".</em>)</li>
- <li>Connect your phone to your computer via a USB cable. Make sure you don't have other phones connected at the same time.</li>
- <li>In the WebIDE UI, press the <em>Select Runtime</em> option, and select your phone, which should be listed under <em>USB Devices</em>.</li>
- <li>At this point, your phone should be showing an <em>Allow USB debugging connection?</em> prompt. Choose <em>Allow</em>.</li>
- <li>Select the <em>Open App</em> option, then choose <em>Open Packaged App...</em></li>
- <li>In the resulting file chooser, navigate to the directory that contains your <code>update.webapp</code> manifest file, and press <em>Open</em>.</li>
- <li>Providing there are no warnings or errors reported, you can install your add-on on the device using the "Play" button in the center (<em>Install and Run</em>.)</li>
- <li>To see the add-on in action, enable it by choosing <em>Settings app &gt; Add-ons &gt; Add-on example &gt; toggle the checkbox at the top</em>.</li>
-</ol>
-
-<h2 id="Add-on_settings">Add-on settings</h2>
-
-<p>You can control the add-ons on your phone by going to <em>Settings app &gt; Add-ons</em>; in here you'll find a list of your installed add-ons, and you can tap each entry to see more information about each add-on.</p>
-
-<p style="width: 520px; margin: 0 auto;"><img alt="firefox os screenshot showing a list of installed add-ons in the settings app" src="https://mdn.mozillademos.org/files/11447/add-on-settings-screen.png" style="height: 445px; margin-right: 20px; width: 250px;"><img alt="information screen for an individual addon, with a list of apps this add-on affects, and controls to disable and delete the add-on" src="https://mdn.mozillademos.org/files/11449/individual-add-on-settings-page.png" style="height: 445px; width: 250px;"></p>
-
-<h3 id="Enablingdisabling_and_deleting_add-ons">Enabling/disabling and deleting add-ons</h3>
-
-<p>By default, add-ons will be enabled after installation when they are installed form the Firefox Marketplace. When installed via WebIDE however they will be disabled by default.</p>
-
-<p>You can manually enable/disable add-ons via the checkbox at the top of each individual add-on's page (found under <em>Settings app &gt; Add-ons</em>), or programmatically using the <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMApplicationsManager/setEnabled">navigator.mozApps.mgmt.setEnabled()</a> function (see this <a href="https://github.com/fxos/directory/blob/master/app/js/controller/list_controller.js#L220-L223">setEnabled() usage example</a> on Github.)</p>
-
-<p>You can delete an add-on entirely by tapping the <em>Delete</em> button found on individual app pages.</p>
-
-<h3 id="Apps_affected_by_add-ons">Apps affected by add-ons</h3>
-
-<p>You'll also notice that in the page for each individual add-on there is a section that lists which apps are affected by that add-on. Currently this doesn't seem to work (it always lists <em>This add-on does not affect any installed apps</em>.) This should be fixed soon (see {{Bug(1196386)}} for progress.)</p>
-
-<h2 id="權限">權限</h2>
-
-<p>附加元件的權限繼承自其所植入的 App,在描述檔中想多要一點權限是行不通的,也無法以此方式增加其植入對象的權限。</p>
diff --git a/files/zh-tw/archive/b2g_os/api/fmradio/index.html b/files/zh-tw/archive/b2g_os/api/fmradio/index.html
deleted file mode 100644
index ec662a0029..0000000000
--- a/files/zh-tw/archive/b2g_os/api/fmradio/index.html
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: WebFM
-slug: Archive/B2G_OS/API/FMRadio
-translation_of: Archive/B2G_OS/API/FMRadio
----
-<p>WebFM API 可存取裝置上的 FM 收音機功能。此介面可開啟/關閉 FM 收音機,亦可搜尋各個電台。</p>
-<h2 id="Syntax" name="Syntax">進入點 (Entry point)</h2>
-<pre class="eval"><span class="nx">if (navigator.mozFMRadio)
- navigator</span><span class="p">.</span><span class="nx">mozFMRadio.enable()</span>;
-</pre>
-<h2 id="API">API</h2>
-<pre>interface FM : EventTarget {
-   readonly attribute boolean enabled;
-   readonly attribute boolean antennaAvailable;
-   readonly attribute double frequency;
- readonly attribute double frequencyUpperBound;
- readonly attribute double frequencyLowerBound;
- readonly attribute double channelWidth;
-
-   attribute Function onantennaavailablechange;
-   attribute Function onfrequencychange;
-   attribute Function onenabled;
-   attribute Function ondisabled;
-
-   DOMRequest enable(double frequency);
-   DOMRequest disable();
-   DOMRequest setFrequency(double frequency);
-   DOMRequest seekUp();
-   DOMRequest seekDown();
-   DOMRequest cancelSeek();
-}</pre>
-<h3 id="屬性_(Attribute)">屬性 (Attribute)</h3>
-<dl>
- <dt>
- enabled</dt>
- <dd>
- 表示目前是否開啟收音機</dd>
- <dt>
- antennaAvailable</dt>
- <dd>
- 表示是否已插上天線並可使用天線</dd>
- <dt>
- frequency</dt>
- <dd>
- 目前的收音機頻率</dd>
- <dt>
- frequencyUpperBound</dt>
- <dd>
- 以 <code>seek</code> 函式搜尋收音機電台的最高頻率</dd>
- <dt>
- frequencyLowerBound</dt>
- <dd>
- 以 <code>seek</code> 函式搜尋收音機電台的最低頻率</dd>
- <dt>
- channelWidth</dt>
- <dd>
- 頻率範圍內的頻寬,以「MHz」為單位。常用數值為 0.05、0.1 (預設)、0.2 其中之一。</dd>
- <dd>
- 指定了某一頻率之後,就會四捨五入到 channelWidth 所指定的最接近頻率。舉例來說,若 100 Mz 為有效頻率,且 channelWidth 為 0.2,則 100.2 與 99.8 將成為有效頻率。但若是 100.15 將四捨五入為 100.2。</dd>
-</dl>
-<h3 id="函式_(Method)">函式 (Method)</h3>
-<dl>
- <dt>
- enable(frequency)</dt>
- <dd>
- 開啟收音機並轉為指定頻率。若沒有參數 (Argument) 就呼叫此函式,將隨即丟出錯誤。作業成功或錯誤均將回傳 DOMRequest。</dd>
- <dt>
- disable()</dt>
- <dd>
- 關閉收音機。若回傳成功的 DOMRequest,則代表已正確關閉收音機。</dd>
- <dt>
- setFrenquecy(frequency)</dt>
- <dd>
- 非同步變更收音機的頻率。此數值必須位於 <code>frequencyLowerBound</code> 與 <code>frequencyUpperBound</code> 之間。若嘗試設定此範圍之外,將導致錯誤。</dd>
- <dd>
- 若回傳成功的 DOMRequest,則代表已正確變更頻率。</dd>
- <dt>
- seekUp()</dt>
- <dd>
- 要求收音機尋找新的頻率 (一般搜尋較目前頻率更高的頻率)。若成功搜尋到新的頻率,將隨即啟動 <code>frequencychange</code> 事件。若回傳成功的 DOMRequest,則代表已開始搜尋作業。一旦達到最高頻率,將回到較低頻率開始搜尋。</dd>
- <dt>
- seekDown()</dt>
- <dd>
- 與上方函式的功能相同,但將搜尋較目前頻率更低的頻率。一旦達到最低頻率,將回到較高頻率開始搜尋。</dd>
- <dt>
- cancelSeek()</dt>
- <dd>
- 取消目前的搜尋作業。若回傳成功的 DOMRequest,則代表已取消搜尋作業。</dd>
-</dl>
-<h3 id="事件_(Event)">事件 (Event)</h3>
-<dl>
- <dt>
- enabled</dt>
- <dd>
- 開啟收音機時觸發此事件</dd>
- <dt>
- disabled</dt>
- <dd>
- 關閉收音機時觸發此事件</dd>
- <dt>
- antennaavailablechange</dt>
- <dd>
- 插上/拔除天線時觸發此事件</dd>
- <dt>
- frequencychange</dt>
- <dd>
- 只要變更收音機頻率,均將觸發此事件</dd>
-</dl>
-<h2 id="另請參閱">另請參閱</h2>
-<p><a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/fm" title="https://github.com/mozilla-b2g/gaia/tree/master/apps/fm">Gaia radio app</a></p>
diff --git a/files/zh-tw/archive/b2g_os/api/index.html b/files/zh-tw/archive/b2g_os/api/index.html
deleted file mode 100644
index 706080ff54..0000000000
--- a/files/zh-tw/archive/b2g_os/api/index.html
+++ /dev/null
@@ -1,156 +0,0 @@
----
-title: B2G OS APIs
-slug: Archive/B2G_OS/API
-tags:
- - API
- - B2G API
- - NeedsTranslation
- - TopicStub
- - b2g os api's
-translation_of: Archive/B2G_OS/API
----
-<p id="B2G_OS_uses_standard_Web_API's">List of B2G OS APIs </p>
-
-<p></p><div class="index">
-<span>A</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/AudioChannelManager" title="The AudioChannelManager interface of the AudioChannels API includes features for managing your device's audio channels, including setting what channel's volume to affect when the volume buttons are pressed inside a particular app."><code>AudioChannelManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-<span>B</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothAdapter" title="The BluetoothAdapter interface of the Web Bluetooth API is used to handle all the operations requested by Bluetooth networks. A Bluetooth adapter is the physical interface which is used to interact with local Bluetooth device."><code>BluetoothAdapter</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothAdapterEvent" title="The BluetoothAdapterEvent interface of the Web Bluetooth API provides access to a BluetoothAdapter object and its address as the parameter of a adapteradded or adapterremoved event handler (see BluetoothManager.onadapteradded and BluetoothManager.onadapterremoved), when fired."><code>BluetoothAdapterEvent</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothAttributeEvent" title="The BluetoothAttributeEvent interface of the Web Bluetooth API provides access to changed attributes and their new values as the parameter of attributechanged event handlers (including BluetoothManager.onattributechanged, BluetoothAdapter.onattributechanged, and BluetoothDevice.onattributechanged), when fired."><code>BluetoothAttributeEvent</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothClassOfDevice" title="The BluetoothClassOfDevice interface of the Web Bluetooth API provides identifying/classification information about a given remote Bluetooth device, available at discovery stage."><code>BluetoothClassOfDevice</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothDevice" title="The BluetoothDevice interface of the Web Bluetooth API provides information regarding a given Bluetooth device."><code>BluetoothDevice</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothDeviceEvent" title="The BluetoothDeviceEvent interface of the Web Bluetooth API provides access to a found/paired device (BluetoothDevice) object or the address or an unpaired device as the parameter of a devicefound, devicepaired or deviceunpaired event handler (see BluetoothDiscoveryHandle.ondevicefound, BluetoothAdapter.ondevicepaired, and BluetoothAdapter.ondeviceunpaired), when fired."><code>BluetoothDeviceEvent</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothDiscoveryHandle" title="The BluetoothDiscoveryHandle interface of the Web Bluetooth API is used to notify the current application about the discovery of a remote bluetooth device."><code>BluetoothDiscoveryHandle</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothGatt" title="The BluetoothGatt interface of the Web Bluetooth API handles initial communications and connections with Gatt services."><code>BluetoothGatt</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothGattCharacteristic" title="The BluetoothGattCharacteristic interface of the Web Bluetooth API represents a GATT service characteristic, which includes characteristic definition, value, properties and configuration info, and a list of descriptors that provide related information."><code>BluetoothGattCharacteristic</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothGattCharacteristicEvent" title="The BluetoothGattCharacteristicEvent interface of the Web Bluetooth API provides access to an updated BluetoothGattCharacteristic object as the parameter of the BluetoothGatt.oncharacteristicchanged, handler, when the characteristicchanged event is fired."><code>BluetoothGattCharacteristicEvent</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothGattDescriptor" title="The BluetoothGattDescriptor interface of the Web Bluetooth API represents a GATT descriptor, which contains related information about a characteristic value."><code>BluetoothGattDescriptor</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothGattServer" title="The BluetoothGattServer interface of the Web Bluetooth API provides Bluetooth GATT server functionality to allow creation of Bluetooth Smart/LE services and characteristics."><code>BluetoothGattServer</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothGattService" title="The BluetoothGattService interface of the Web Bluetooth API represents a service provided by a GATT server, including the service definition, a list of referenced services, and a list of the characteristics of this service."><code>BluetoothGattService</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothLeDeviceEvent" title="The BluetoothLeDeviceEvent interface of the Web Bluetooth API provides access to an LE device BluetoothDevice object and its RSSI value and advertisement record, as the parameter of a devicefound event handler (see BluetoothDiscoveryHandle.ondevicefound), when fired."><code>BluetoothLeDeviceEvent</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothManager" title="The BluetoothManager interface of the Web Bluetooth API allows to access all Bluetooth adapters available on the device. Adapters are the connection interface to connect a Bluetooth device to that device."><code>BluetoothManager</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothPairingEvent" title="The BluetoothPairingEvent interface of the Web Bluetooth API provides access to a device's name and the BluetoothPairingHandle object required for pairing devices as the parameter of pairing-related handlers (for example including BluetoothPairingListener.ondisplaypasskeyreq and BluetoothPairingListener.onenterpincodereq), when fired."><code>BluetoothPairingEvent</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothPairingHandle" title="The BluetoothPairingHandle interface of the Web Bluetooth API contains the functionality required for completing a device pairing operation, including passkeys, and mechanisms to reply to user-entered pin codes and confirm passkeys."><code>BluetoothPairingHandle</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/BluetoothPairingListener" title="The BluetoothPairingListener interface of the Web Bluetooth API defines event handlers triggered for different pairing operations."><code>BluetoothPairingListener</code> (Firefox OS)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-<span>C</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/CallEvent" title="The CallEvent interface of the Web Telephony API represents events related to telephone calls."><code>CallEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/CameraCapabilities" title="The CameraControl.capabilities property returns a CameraCapabilities object, which describes all the camera's capabilities."><code>CameraCapabilities</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/CameraControl" title="When you use the CameraManager.getCamera() method to get a reference to a camera, you specify a callback function to be invoked on success. That function receives as a parameter a CameraControl object. You can use its methods and properties to manage and make use of the camera."><code>CameraControl</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/CameraManager" title="The CameraManager interface provides access to any cameras available on the device being used."><code>CameraManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/ContactManager" title="The ContactManager interface is used to access and manage the contact available on the device."><code>ContactManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-<span>D</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DOMApplication" title="In the Open Web apps JavaScript API, an App object is a JavaScript object that represents an app that is or could be installed in the user's app repository."><code>DOMApplication</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DOMCursor" title="A DOMCursor object represents an ongoing operation over a list of results. It is an enhanced DOMRequest that allows to iterate through a list of results asynchronously. Each time its continue() method is called, the DOMCursor tries to reach the next result in the list and calls its result's success or error accordingly."><code>DOMCursor</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DOMRequest" title="A DOMRequest object represents an ongoing operation. It provides callbacks that are called when the operation completes, as well as a reference to the operation's result. A DOM method that initiates an ongoing operation may return a DOMRequest object that you can use to monitor the progress of that operation."><code>DOMRequest</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DataStore" title="The DataStore interface of the Data Store API represents a retrieved set of data, and includes standard properties for accessing the store's name, owner, etc., methods for reading, modifying and syncing data, and the onchange event handler for reacting to changes to the data."><code>DataStore</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DataStoreChangeEvent" title="The DataStoreChangeEvent interface of the Data Store API represents the event related to a record changed in the data store, i.e. this is returned once a change is made and the change event is fired (see DataStore.onchange for the handler)."><code>DataStoreChangeEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DataStoreCursor" title="The DataStoreCursor interface of the Data Store API represents a cursor that allows apps to iterate through a list of DataStoreTask objects representing the change history of the data store, for use when synchronizing the data."><code>DataStoreCursor</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DataStoreTask" title="The DataStoreTask interface of the Data Store API represents a record changed in the data store when a DataStoreCursor is used to iterate through the data store's change history."><code>DataStoreTask</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DeviceStorage" title="The DeviceStorage interface is used to access files on a specific storage area available on the device. A storage area is, in essence, a file system repository even if it hides the reality of the underlying file system."><code>DeviceStorage</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/DeviceStorageChangeEvent" title="The DeviceStorageChangeEvent provides information about any change made to a file inside a given storage area. It extends the Event interface."><code>DeviceStorageChangeEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-
-
-<span>F</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/FMRadio" title="The WebFM API provides access to the device FM radio. This interface lets you turn the FM radio on and off and tune it to different stations. It is accessible through the navigator.mozFMRadio property."><code>FMRadio</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-
-
-<span>H</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/HTMLMediaElement" title=""><code>HTMLMediaElement</code> (Firefox OS extensions)</a></span></span></li>
-</ul>
-
-
-
-
-
-
-
-
-<span>M</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MMICall" title="The MMICall interface of the Web Telephony API represents an MMI call, allowing us to receive the result of the call."><code>MMICall</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozActivity" title="The MozActivity interface allows apps to delegate an activity to another app."><code>MozActivity</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozActivityOptions" title="The MozActivityOptions interface allows apps to declare the activity they want to create and also to access information of activities they want to handle."><code>MozActivityOptions</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozActivityRequestHandler" title="The MozActivityRequestHandler interface allows apps that handle activities to access and interact with the request made by a third party app that tries to delegate an activity."><code>MozActivityRequestHandler</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozAlarmsManager" title="The MozAlarmsManager API allows to schedule notifications or applications to be started at a specific time."><code>MozAlarmsManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozContact" title="The MozContact interface is used to describe a single contact in the device's contact database."><code>MozContact</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozContactChangeEvent" title="The MozContactChangeEvent interface provides information about the contact that has changed. It inherits from the Event interface."><code>MozContactChangeEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozIccManager" title="The MozIccManager interface gives access to ICC related functionalities."><code>MozIccManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMmsEvent" title="The DOM MozMmsEvent represents events related to WebSMS MMS messages."><code>MozMmsEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMmsMessage" title="The DOM MozMmsMessage object represents an MMS message and has all the information about sender, recipient, body content, attachements, and date of the message itself."><code>MozMmsMessage</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileCFInfo" title="The MozMobileCFInfo interface defines options used to retrieve or define call forwarding settings."><code>MozMobileCFInfo</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileCellInfo" title="The MozMobileCellInfo interface allow to access to cell location information."><code>MozMobileCellInfo</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileConnection" title="This API is used to get information about the current mobile voice and data connection states of the device. It is accessible through navigator.mozMobileConnections, which returns an array of MozMobileConnection objects."><code>MozMobileConnection</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileConnectionInfo" title="The MozMobileConnectionInfo interface allows to access connection information for voice or data. The navigator.mozMobileConnection uses it through its voice and data properties."><code>MozMobileConnectionInfo</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileCCInfo" title="The MozMobileICCInfo interface allow to access access to information stored in the device's ICC card. The navigator.mozMobileConnection uses it through its iccInfo property."><code>MozMobileICCInfo</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileMessageManager" title="Provides support for sending and managing both MMS and SMS messages on a device with WebSMS."><code>MozMobileMessageManager</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileMessageThread" title="The DOM MozMobileMessageThread object represents a thread of messages."><code>MozMobileMessageThread</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozMobileNetworkInfo" title="The MozMobileNetworkInfo interface allows access to information related to the network carrier. The navigator.mozMobileConnection uses it through its voice.network and data.network properties."><code>MozMobileNetworkInfo</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNDEFRecord" title="MozNDEFRecord is a data structure that implements the NFC Data Exchange Format (NDEF). It is a standard common format for NFC-related data communication between applications, NFC tags, and devices."><code>MozNDEFRecord</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNFC" title="MozNFC is the top level API for operating in NFC Reader/Writer mode, NFC P2P mode and NFC Card Emulation mode."><code>MozNFC</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNFCPeer" title="The NFC implementation in Gecko follows the NFC Forum specifications."><code>MozNFCPeer</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNFCTag" title="MozNFCTag contains the basic functions needed to read, write, and inspect NDEF-compatible NFC Tags."><code>MozNFCTag</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNetworkStats" title="The MozNetworkStats object gives access to statistics about the data usage for a given network."><code>MozNetworkStats</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNetworkStatsData" title="The MozNetworkStatsData objects represent a chunk of data usage statistics."><code>MozNetworkStatsData</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozNetworkStatsManager" title="The MozNetworkStatsManager interface provides methods and properties to monitor data usage."><code>MozNetworkStatsManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozPowerManager" title="The MozPowerManager interface allows to explicitly control the part of the device that uses power."><code>MozPowerManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozSettingsEvent" title="The MozSettingsEvent represents a settingchange event, providing information about a change to the value of a setting on the device. It extends the DOM Event interface."><code>MozSettingsEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozSmsEvent" title="The DOM MozSmsEvent represents events related to WebSMS text messages."><code>MozSmsEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozSmsFilter" title="The MozSmsFilter interface provides a way to filter out MozSmsMessage or MozMmsMessage objects through the MozMobileMessageManager.getMessages() method."><code>MozSmsFilter</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozSmsManager" title="Provides support for sending and managing SMS messages on a device with WebSMS."><code>MozSmsManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span> <span title="This is an obsolete API and is no longer guaranteed to work."><i class="icon-trash"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozSmsMessage" title="The DOM MozSmsMessage object represents an SMS text message and has all the information about sender, recipient, body text and date of the message itself."><code>MozSmsMessage</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozSmsSegmentInfo" title="The DOM MozSmsSegmentInfo interface provides information about how a string of text will be automatically split into segments. Each segment represents a single SMS of a multi-part SMS message."><code>MozSmsSegmentInfo</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozTimeManager" title="The MozTimeManager interface is used to set the system time on a device."><code>MozTimeManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozVoicemail" title="The MozVoicemail interface allows access to the information regarding the voicemail features available through the RIL of a Firefox OS device."><code>MozVoicemail</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozVoicemailEvent" title="The MozVoicemailEvent API provides access to the event information when a statuschange event is triggered."><code>MozVoicemailEvent</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozVoicemailStatus" title="The MozVoicemailStatus API provides access to a voicemail status."><code>MozVoicemailStatus</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozWakeLock" title="The MozWakeLock interface of the Wake Lock API tracks a wake lock set on any resource set on the device."><code>MozWakeLock</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozWifiConnectionInfoEvent" title="The MozWifiConnectionInfoEvent interface provides developers with information regarding the state of the current Wifi connection."><code>MozWifiConnectionInfoEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozWifiP2pGroupOwner" title="The MozWifiP2pGroupOwner is an interface that represents the group owner of WiFi Direct connection."><code>MozWifiP2pGroupOwner</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozWifiP2pManager" title="The MozWifiP2pManager is an interface that allows to control Wi-Fi connection with other computers using Wi-Fi Direct."><code>MozWifiP2pManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/MozWifiStatusChangeEvent" title="The MozWifiStatusChangeEvent interface provides developers with information regarding the current status of the Wifi connection."><code>MozWifiStatusChangeEvent</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-<span>N</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/Navigator" title="The Navigator interface represents the state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. This page represents the list of properties and methods added to Navigator on Firefox OS devices. For the list of properties and methods available to any Web sites, consult Navigator."><code>Navigator</code> (Firefox OS extensions)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-
-
-<span>P</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/PermissionSettings" title="The PermissionSettings interface provides ways to let the user manage all the permissions requested by all apps on a Firefox OS device."><code>PermissionSettings</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-
-
-
-
-<span>S</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/SettingsLock" title="The SettingsLock interface represents a lock on settings. it allows a script to modify settings asynchronously, but in a safe way: ordering is guaranteed and the no other script will modify the settings until the modification are done (the next lock objects will start processing after it has been closed)."><code>SettingsLock</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/SettingsManager" title="Provides access to the device's settings."><code>SettingsManager</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-<span>T</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/TCPServerSocket" title="The TCPServerSocket interface provides an API to handle a persistent server that will listen for incoming connections on a given port."><code>TCPServerSocket</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/TCPSocket" title="The TCPSocket interface provides access to a raw TCP socket."><code>TCPSocket</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/Telephony" title="The Telephony interface of the Web Telephony API provides support for dialing, answering, and managing phone calls on a device with telephony support."><code>Telephony</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/TelephonyCall" title="The TelephonyCall interface of the Web Telephony API represents one telephone call, providing information about the call and offering mechanisms for controlling it and detecting changes to its status."><code>TelephonyCall</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/TelephonyCallGroup" title="The TelephonyCallGroup interface of the Web Telephony API represents a multi-person/conference call, providing functions to allow callers to be added and removed from the conference call, hanging up of the entire call, and more."><code>TelephonyCallGroup</code></a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-<span>U</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/UDPSocket" title=""><code>UDPSocket</code></a></span></span></li>
-</ul>
-
-
-<span>W</span><ul>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/WifiManager" title="The WifiManager API provides access to the wifi device capability."><code>WifiManager</code></a></span></span></li>
-<li><span class="indexListRow"><span class="indexListTerm"><a href="/en-US/docs/Archive/B2G_OS/API/Window" title="The Window interface represents a window containing a DOM document. This page represents the list of properties and methods added to Window on Firefox OS devices. For the list of properties and methods available to any Web sites, consult Window."><code>Window</code> (Firefox OS extensions)</a></span><span class="indexListBadges"> <span title="This API has not been standardized."><i class="icon-warning-sign"> </i></span></span></span></li>
-</ul>
-
-
-
-
-
-
-
-</div><p></p>
diff --git a/files/zh-tw/archive/b2g_os/apps/index.html b/files/zh-tw/archive/b2g_os/apps/index.html
deleted file mode 100644
index 7c848f3df1..0000000000
--- a/files/zh-tw/archive/b2g_os/apps/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: 製作 Firefox OS 的 apps
-slug: Archive/B2G_OS/Apps
-translation_of: Web/Apps/Fundamentals
----
-<p>Firefox OS 裝置的應用程式其實只是開啟網頁上的Web<span style="line-height: inherit;">應用</span><span style="line-height: inherit;">;它們完全由各種開放的Web技術所組成,如 JavaScript, HTML, 和 CSS。雖然我們寫給 apps 的主要文件幾乎涵蓋了您所需要知道的所有事情,這裡列了一些特別著重於開發及測試 Firefox OS的文件。</span></p>
-<div class="row topicpage-table">
- <div class="section">
- <h2 class="Documentation" id="Documentation" name="Documentation">文件及入門教材</h2>
- <dl>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Apps/Writing_a_web_app_for_Firefox_OS">寫一個 Firefox OS 的 Web app</a></dt>
- <dd>
- 一份教您製作您的第一個 Firefox OS web 應用程式的入門指南。</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Apps/Tips_and_techniques">撇步及技巧</a></dt>
- <dd>
- 一份我們開發者建議您的撇步及技巧集(像是對於問題的替代方案)。</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/Apps">全部文章...</a></span></p>
- </div>
- <div class="section">
- <h2 class="Community" id="Community" name="Community">尋求社群協助</h2>
- <p>您在 app 相關問題上需要幫助、且無法在文件中找到解法嗎?</p>
- <ul>
- <li>在 layout 論壇中請教,, 其中涵蓋 CSS 和 HTML: {{ DiscussionList("dev-tech-css", "mozilla.dev.tech.layout") }}
- <ul>
- <li>在 Mozilla IRC channel 裡面提出你的問題: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li>
- </ul>
- </li>
- </ul>
- <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html"><em>請遵守網路禮節</em>...</a></span></p>
- <h2 class="Tools" id="Tools" name="Tools">工具</h2>
- <ul>
- <li><span class="external">Firefox </span>的<span class="external"> <a href="/en-US/docs/Tools/Debugger">Debugger</a> 支援 Firefox OS apps 的遠端除錯</span>。</li>
- <li><span class="external">其他 <a href="/en-US/docs/Tools">開發者工具</a></span></li>
- </ul>
- <p><span class="alllinks"><a href="/en-US/docs/tag/Tools">View All...</a></span></p>
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">相關文章</h2>
- <ul>
- <li><a href="/en-US/docs/Apps">Apps</a></li>
- </ul>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/apps/writing_a_web_app_for_b2g/index.html b/files/zh-tw/archive/b2g_os/apps/writing_a_web_app_for_b2g/index.html
deleted file mode 100644
index 4e612e8a87..0000000000
--- a/files/zh-tw/archive/b2g_os/apps/writing_a_web_app_for_b2g/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: 寫一個 Firefox OS 的 Web app
-slug: Archive/B2G_OS/Apps/Writing_a_web_app_for_B2G
-translation_of: Web/Apps/Fundamentals/Quickstart
----
-<p>B2G apps 只是用 HTML、CSS、和 Javascript 寫的 Web apps。在網頁上發佈 Web apps 就跟發佈一般的網站一樣。為了讓網站可以像 Web app 一樣可以被安裝在行動裝置上,你只需要加上一個 manifest 以及掛上一個安裝按鈕,如以下說明。</p>
-<p>建議您從下面的文章著手:</p>
-<ul>
- <li><a href="/en/Apps/Getting_Started" title="Getting started with making apps">從製作 apps 開始上手</a></li>
- <li><a href="/en/Apps/Manifest" title="App manifest">App manifest</a></li>
-</ul>
-<p>當然,您也可以無拘無束地<a href="/en/Apps" title="https://developer.mozilla.org/en/Apps/"> 沉浸在 Open Web Apps 的深處</a>!</p>
-<h2 id="安裝_Web_app">安裝 Web app</h2>
-<p>在網頁上發佈 app 和 manifest 之後,接著要讓 Gecko 知道這個訊息。像是在安裝時,Gecko 查詢 manifest 並將必須的項目加入到 home 的畫面,等等。</p>
-<p>安裝 app 需要呼叫 <a href="/en/Apps/Apps_JavaScript_API/navigator.mozApps.install" title="https://developer.mozilla.org/en/Apps/Apps_JavaScript_API/navigator.mozApps.install">navigator.mozApps.install() API</a>。這裡有個安裝按鈕的範例,當您將 app 置於自己管理的位置時,這個範例可以讓您將按鈕嵌入於您自己的網頁:</p>
-<pre>&lt;script&gt;
-var manifest_url = "http://my.webapp.com/manifest.json";
-&lt;/script&gt;
-
-&lt;button onclick="navigator.mozApps.install(manifest_url); return false;"&gt;
- Install this awesome app on your homescreen!
-&lt;/button&gt;
-</pre>
-<p>注意:這個安裝按鈕也可以被置於像是 <a href="/en/Apps/Submitting_an_app" title="https://developer.mozilla.org/en/Apps/Submitting_an_app">Mozilla Marketplace</a> 的 app market,然而一般而言,在您自己的主要頁面上面也放一個「安裝 web app」的按鈕是非常貼心的。</p>
-<p>現在請用 B2G 瀏覽器 app 瀏覽您的網站,並且點選安裝按鈕吧。</p>
diff --git a/files/zh-tw/archive/b2g_os/architecture/index.html b/files/zh-tw/archive/b2g_os/architecture/index.html
deleted file mode 100644
index a0a649e4f9..0000000000
--- a/files/zh-tw/archive/b2g_os/architecture/index.html
+++ /dev/null
@@ -1,717 +0,0 @@
----
-title: Firefox OS 架構
-slug: Archive/B2G_OS/Architecture
-translation_of: Archive/B2G_OS/Architecture
----
-<div class="summary">
-<p><span class="seoSummary">本文件是 Firefox OS 平台架構的初步概要介紹,將會簡單地向您介紹 Firefox OS 的重要概念,並解釋元件間如何互動。</span></p>
-</div>
-
-<div class="note">
-<p><strong>注意:</strong>Firefox OS 仍算是開發中的產品。本文說明的架構仍非最後確定的架構,隨時可能修改。</p>
-</div>
-
-<h2 id="Firefox_OS_術語">Firefox OS 術語</h2>
-
-<p>在閱讀 Firefox OS 技術文件之前,建議先了解以下的詞彙:</p>
-
-<dl>
- <dt>B2G</dt>
- <dd>Boot to Gecko 的縮寫。</dd>
- <dt>Boot to Gecko</dt>
- <dd>Firefox OS 作業系統的工程代號。此代號常常用以代表 Firefox OS。因為在本專案還未定下正式名稱之前,此代號已經用了很長的一段時間,因此常常用以代表 Firefox OS。</dd>
- <dt>Firefox OS</dt>
- <dd>Firefox OS 即是將 Mozilla (及其 OEM 夥伴) 的品牌與服務,套用至 <strong>Boot to Gecko</strong> 的基礎之上開發而得的最終產品。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Gaia">Gaia</a></dt>
- <dd>Firefox OS 平台的使用者介面 (UI)。 在啟動 Firefox OS 之後,都是透過 Gaia 層產出螢幕上的任何東西。Gaia 建構出鎖定畫面、主畫面,以及大家預期智慧型手機所應提供的其他標準 App。Gaia 完全使用 HTML、CSS、JavaScript 實作而成。透過實作在 Gecko 層的開放 Web API,與其底層的作業系統溝通。第三方 App 均可安裝於 Gaia 層。</dd>
- <dt><a href="/en-US/docs/Gecko" title="/en-US/docs/Accessibility/AT-APIs/Gecko">Gecko</a></dt>
- <dd>Firefox OS App 的執行環境 (Runtime),也就是本層可支援所有的開放標準:HTML、CSS、JavaScript。本層另必須確保這些 API 可正確運作於 Gecko 支援的所有 OS。意即 Gecko 另包含了網路連線堆疊、圖形堆疊、配置引擎、JavaScript 虛擬機器、移植層。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Gonk">Gonk</a></dt>
- <dd>Gonk 是 Firefox OS 平台的底層作業系統,是由 Linux 核心 (以 <a href="http://source.android.com/">Android Open Source Project</a> 為架構),與使用者空間的硬體抽象層 (Hardware abstraction layer,HAL) 所組成。核心以及許多使用者空間的函式庫,均來自常見的開放源碼專案,如 Linux、libusb、bluez 等。HAL 的某些部分是與 AOSP 共享,如 GPS 或相機。你可將 Gonk 當成是簡單的 Linux 分支版本。Gonk 又是 Gecko 的移植目標;意即有一套 Gecko 可在 Gonk 上執行,就像是 Gecko 也有 Mac OS X、Windows、Android 等版本。因為 Firefox OS 可完整控制 Gonk,所以某些不能開放給其他 OS 用的介面,還是可開發給 Gecko 使用。舉例來說,Gecko 可直接存取 Gonk 的完整電話功能堆疊,並於 Gonk 上顯示緩衝區 (Frame buffer),但是其他 OS 不能進行類似的存取。</dd>
- <dt><a name="Jank">Jank</a></dt>
- <dd>此一詞彙常見於行動 App 領域,指在 APP 中執行了緩慢或沒有效率的程式碼,進而阻礙了 UI 更新並發商系統延遲或無回應的情形。Gaia 開發者使用不同的最佳化方法,要儘力避免此狀況發生。</dd>
-</dl>
-
-<h2 id="整體架構示意圖">整體架構示意圖</h2>
-
-<p>下圖比較了專利平台與 Firefox OS 之間的架構。</p>
-
-<p><img alt="on the left is a native mobile architecture stack, on the right is the Firefox OS architecture. they are similarm except that the native stack is all proprietary device functionality, and the Firefox OS stack is all done with open source and web technologies." src="https://mdn.mozillademos.org/files/9487/general-architecture.png" style="display: block; height: 488px; margin: 0px auto; width: 997px;"></p>
-
-<p>Firefox OS 即減去了 OS 與 App 層之間的原生 API 層。這種統合式的設計可減輕平台負擔並簡化安全機制,卻又不致犧牲效能,也不會影響智慧型手機的使用體驗。</p>
-
-<ol>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia">Gaia</a> 作為裝置的核心 Web App 與 UI 層,並全以 HTML5、CSS、JavaScript 撰寫而成,並有許多 API 可供 UI 程式碼存取手機硬體與 Gecko 功能。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Gecko">Gecko</a> 即為 Firefox OS 的 Web 引擎與表現層 (Presentation layer),作為 Web 內容與底層裝置的之間介面,進而將硬體接上 HTML。Gecko 亦提供 HTML5 剖析 (Parsing) 與繪圖引擎,並透過程式設計的方式,以安全的 Web API 存取硬體功能、更新作業,以及其他核心服務。</li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gonk">Gonk</a> 是 Firefox OS 堆疊中的核心層級元件,作為 Gecko 與底層硬體之間的介面。Gonk 可控制底層硬體,並將硬體功能告知 Gecko 中建構的 Web API。Gonk 可視為「黑盒子」,暗自進行所有複雜又零碎的背景作業,以於硬體層制定請求,進而控制行動裝置。</li>
- <li>行動裝置,就是執行 Firefox OS 的行動電話硬體。OEM 廠商則負責提供行動裝置。</li>
-</ol>
-
-<h2 id="特殊_Firefox_OS_架構">特殊 Firefox OS 架構</h2>
-
-<p><img alt="Firefox OS Architecture" src="/files/4605/FirefoxOS.png" style="display: block; height: 915px; margin: 0px auto; width: 754px;"></p>
-
-<h2 id="Firefox_OS_開機流程">Firefox OS 開機流程</h2>
-
-<p>本段將說明 Firefox OS 的開機流程,包含整個流程所牽涉的部份,以及相關部分在系統裡的位置。流程順序大致如下:最先從核心空間裡的開機載入器 (Bootloader) 開始,到原生程式碼中開始程序,進入 B2G 再到使用者空間的 Gecko,最後到 Gecko 裡的系統 App、視窗管理器、主畫面 App。而其他 App 也同樣依照上述程序執行。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/7491/bootup.png" style="height: 1979px; width: 2112px;"></p>
-
-<h3 id="開機程序">開機程序</h3>
-
-<p>在首次啟動 Firefox OS 裝置時,就會於主要的開機載入器 (bootloader) 中開始作業。自此,就如同一般作業系統程序,更高一階的開機相關載入器會載入執行,然後往上更高一階的載入器又會被接續執行,如此下去形成一串開機載入流程鏈,直到最後程序就會將執行權交到 Linux 核心。</p>
-
-<p>關於開機程序有幾點需要注意:</p>
-
-<ul>
- <li>開機載入器通常顯示裝置開機時的第一個畫面,一般為硬體製造商的標誌。</li>
- <li>開機載入器可將映像檔 (Image) 建構於裝置之中。不同的裝置另使用不同的通訊協定。大部分的手機均使用 <a href="http://android-dls.com/wiki/index.php?title=Fastboot">fastboot 協定</a>。但 Samsung Galaxy II 使用 odin 協定。</li>
- <li>在開機流程的尾聲,往往會載入數據機映像檔,並於數據機處理器上執行之。各款裝置的方法均有所不同。</li>
-</ul>
-
-<h3 id="Linux_核心">Linux 核心</h3>
-
-<p>Gonk 使用 Linux 核心的版本,與 Android 開放源碼專案 (<a href="http://source.android.com/" title="http://source.android.com/">Android Open Source Project,AOSP</a>) 所衍生使用的版本非常相似,但是並未沿用幾項 AOSP 所進行的修改。除外,雖然 Lunix 基本上已經相當穩定,但仍有些製造商會自行修改。</p>
-
-<p><a href="http://en.wikipedia.org/wiki/Linux_startup_process" title="http://en.wikipedia.org/wiki/Linux_startup_process">Linux 的啟動程序</a>已經可在網路上找到相當詳盡的文件說明,所以在此不再贅述。</p>
-
-<p>Linux 核心會啟動一些基本的程序 (Process)。在執行 init.rc 中定義的程序後,會再執行 <a href="https://github.com/mozilla-b2g/gonk-misc/blob/master/init.b2g.rc">init.b2g.rc</a> 以啟動基本核心程序,如 <code>b2g</code> (Firefox OS 基礎程序,內含 Gecko) 以及 <code>rild</code> (通話功能的相關程序,各晶片組多有不同),請見下方所述細節。和大部分的 Unix 作業系統一樣,最後會啟動使用者空間 (Userspace) 程序。</p>
-
-<p>在啟動 <code>init </code>程序之後,Linux 核心就會處理由使用者空間傳來的系統呼叫,並中斷來自於硬體裝置的類似呼叫。許多硬體功能均透過 <a href="http://en.wikipedia.org/wiki/Sysfs" title="http://en.wikipedia.org/wiki/Sysfs"><code>sysfs </code></a>揭露給使用者空間,以下便是 Gecko 讀取電池狀態的<a href="https://github.com/cgjones/mozilla-central/blob/master/hal/gonk/GonkHal.cpp#L277" title="https://github.com/cgjones/mozilla-central/blob/master/hal/gonk/GonkHal.cpp#L277">程式碼片段</a>:</p>
-
-<pre class="brush:cpp;">FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", "r");
-double capacity = dom::battery::kDefaultLevel * 100;
-if (capacityFile) {
- fscanf(capacityFile, "%lf", &amp;capacity);
- fclose(capacityFile);
-}</pre>
-
-<h3 id="更多有關_init_程序">更多有關 init 程序</h3>
-
-<p>Gonk 中的 <code>init</code> 程序,將處理必要的檔案系統並產生系統服務,之後就如同程序管理一般繼續待命,並將編譯指令碼 (也就是 <code>init*.rc</code> 檔案);指令碼內的指令則說明在啟動不同服務時所應進行的作業。</p>
-
-<p><code>init </code>程序必須處理一個相當關鍵的作業,即啟動 <code>b2g</code> 程序;這也是 Firefox OS 的核心。</p>
-
-<p>以下為 <code>init.rc</code> 中用以啟動 b2g 的程式碼:</p>
-
-<pre>service b2g /system/bin/b2g.sh
- class main
- onrestart restart media</pre>
-
-<div class="note">
-<p><strong>注意:</strong>Firefox OS 與 Android 的 init.rc 之間的差異,將各款裝置而有所不同。有時候只是附加 <code>init.b2g.rc</code>,但有時修改的幅度甚大。</p>
-</div>
-
-<h2 id="使用者空間_(Userspace)_的程序架構">使用者空間 (Userspace) 的程序架構</h2>
-
-<p>現在讓我們來看看高階一點的部分,到底Firefox OS的各個元件之間是如何運作互動的。下圖所描述的是Firefox OS的主要使用者空間程序。</p>
-
-<p>接著可進一步了解 Firefox OS 不同元件是如何運作互動。下圖呈現 Firefox OS 的主要使用者空間程序。</p>
-
-<p><img alt="Userspace diagram" src="https://developer.mozilla.org/files/3849/B2G%20userspace%20architecture.svg" style="float: right; height: 491px; position: relative; width: 520px;"></p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<div class="note">
-<p><strong>注意:</strong>由於 Firefox OS 尚處於開發階段,所以此示意圖可能隨時修改而非完全正確。</p>
-</div>
-
-<p>b2g 程序是主要的系統程序,能以高權限存取大部分的硬體;b2g 可溝通數據機、畫出顯示緩衝區 (Framebuffer),並與 GPS 或相機等硬體溝通。在系統內部,b2g 則執行 Gecko 層 (即以 libxul.so 所實作)。另可參考 <a href="#Gecko">Gecko</a> 以了解 Gecko 層的運作方式,以及 b2g 與 Gecko 層溝通的方法。</p>
-
-<h3 id="b2g">b2g</h3>
-
-<p>b2g 程序會生成許多低權限的內容程序 (Content process),並透過這些程序來載入 Web 的 App 與內容。這些程序會再透過訊息傳遞系統「<a href="/en-US/docs/IPDL" title="/en-US/docs/IPDL">IPDL</a>」溝通 Gecko 伺服器。</p>
-
-<p><code>b2g 程序所執行</code>的 libxul,即參照 <code>b2g/app/b2g.js </code>取得預設偏好設定。透過偏好設定,程序將開啟上述的 HTML 檔案「<code>b2g/chrome/content/shell.html</code>」,即於 <code>omni.ja</code> 檔案中編譯而得。而 <code>shell.html</code> 則包含了 <code>b2g/chrome/content/shell.js</code> 檔案,將觸發 Gaia 的「<code>system」</code>這個 App。</p>
-
-<h3 id="rild">rild</h3>
-
-<p><code>rild 為銜接</code>數據機處理器的介面,也是用以建構<strong>無線介面層 (Radio Interface Layer,RIL)</strong> 的常駐程式 (Daemon)。往往是由硬體製造商所撰寫的專屬程式碼,以溝通自家的數據機硬體。<code>rild 可讓用戶端</code>程式碼連接 <code>rild 本身</code>綁定的 Unix-domain socket。可經由以下類似的 <code>init 指令碼</code>啟動之:</p>
-
-<pre>service ril-daemon /system/bin/rild
- socket rild stream 660 root radio</pre>
-
-<h3 id="rilproxy">rilproxy</h3>
-
-<p>在 Firefox OS 中,<code>rild</code> 用戶端即屬於 <code>rilproxy</code> 程序,作為 <code>rild</code> 與 <code>b2g</code> 之間不具功能的傳送代理dumb forwarding proxy。為何需要此代理伺服器,就必須從實作細節來說明了。但簡單來說,proxy 確實有其存在的必要。<a href="https://github.com/mozilla-b2g/rilproxy" title="https://github.com/mozilla-b2g/rilproxy"><code>可到 GitHub 上找到 rilproxy</code> 原始碼</a>。</p>
-
-<h3 id="mediaserver">mediaserver</h3>
-
-<p><a href="https://github.com/android/platform_frameworks_base/tree/ics-mr0-release/media/libmediaplayerservice" title="https://github.com/android/platform_frameworks_base/tree/ics-mr0-release/media/libmediaplayerservice"><code>mediaserver</code> 程序</a>用以控制音訊與視訊的播放作業。Gecko 透過 Android 的遠端程序呼叫 (Remote Procedure Call,RPC) 和其溝通。某些可由 Gecko 撥放的媒體檔案 (如 OGG Vorbis 音訊、OGG Theora 視訊、<a href="http://www.webmproject.org/about/" title="http://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CDUQFjAA&amp;url=http%3A%2F%2Fwww.webmproject.org%2F&amp;ei=8Q84UOnoMoHH6wHZ44DwBA&amp;usg=AFQjCNHK9j6wyhUful5RmKCpU6b8GDfpYQ&amp;sig2=tCl8VxL3mCvrH86EyOwO_A">WebM</a> 視訊等),均是由 Gecko 解碼後直接傳送給 <code>mediaserver</code> 程序。其他的媒體檔案則是交由 <code>libstagefright</code> 解碼。<code>libstagefright 可存取特定</code>編碼與硬體編碼器 (Hardware encoder)。</p>
-
-<div class="note">
-<p><strong>注意:</strong>mediaserver 程序為 Firefox OS 的「暫時性」元件,主要是協助早期的開發作業。預計最快在 Firefox OS 2.0 階段就會移除。</p>
-</div>
-
-<h3 id="netd">netd</h3>
-
-<p><code>netd </code>程序可用來設定網路介面。</p>
-
-<h3 id="wpa_supplicant">wpa_supplicant</h3>
-
-<p><code>wpa_supplicant</code> 程序為標準 UNIX 樣式常駐程式,可處理 WiFi 存取點的連線作業。</p>
-
-<h3 id="dbus-daemon">dbus-daemon</h3>
-
-<p>dbus-daemon 用以建構 <a href="http://www.freedesktop.org/wiki/Software/dbus" title="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a> 訊息匯流系統,可供 Firefox OS 進行藍牙通訊作業。</p>
-
-<h2 id="Gecko">Gecko</h2>
-
-<p>如前所述,<a href="https://developer.mozilla.org/en-US/docs/Gecko" title="/en-US/docs/Gecko">Gecko</a> 即由 Web 標準 (<a href="https://developer.mozilla.org/en-US/docs/HTML" title="/en-US/docs/HTML">HTML</a>、<a href="https://developer.mozilla.org/en-US/docs/CSS" title="/en-US/docs/CSS">CSS</a>、<a href="https://developer.mozilla.org/en-US/docs/JavaScript" title="/en-US/docs/JavaScript">JavaScript</a>) 建構而成,並用以打造 Firefox OS 上所顯示的一切,另可控制手機硬體。Web App 則透過安全且受控制的 Web API (同樣以 Gecko 所建構而得) 來將 HTML5 連上硬體。Web API 可透過程式設計的方式,存取底層行動裝置硬體 (如電池或振動) 的功能,或取得儲存的資料 (如行事曆或聯絡資訊)。Web 內容亦可透過content invokes the accessible Web APIs within HTML5.</p>
-
-<p>App 是由相關 HTML5 網頁內容所組成。如果要撰寫 Web App 並於 Firefox OS 行動裝置上執行,則開發者也只要組合、封包、發佈此網頁內容即可。而在執行期間,即交由瀏覽器轉譯、編譯、換至此網頁內容。可參閱<a href="https://developer.mozilla.org/en-US/Apps">應用程式中心 (App Center)</a> 進一步了解。</p>
-
-<div class="note">
-<p><strong>注意:</strong>如果要搜尋 Gecko 的 Codebase,則可前往 <a href="http://dxr.mozilla.org" style="line-height: 1.5;">http://dxr.mozilla.org</a>,功能比較炫、參照功能不錯,但 Repo 較有限。亦可使用傳統的 <a href="http://mxr.mozilla.org" style="line-height: 1.5;">http://mxr.mozilla.org</a>,內含較多的 Mozilla 專案。</p>
-</div>
-
-<h3 id="Gecko_架構圖">Gecko 架構圖</h3>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/5027/securityframework.png" style="height: 591px; width: 979px;"></p>
-
-<ul>
- <li><strong>安全架構:</strong>包含
-
- <ul>
- <li><strong>Permission Manager</strong>:用以存取 Web API 功能的閘門。</li>
- <li><strong>Access Control List</strong>:存取 Web API 功能所必備的規則與許可。</li>
- <li><strong>Credential Validation</strong>:App 與使用者的驗證。</li>
- <li><strong>Permissions Store</strong>:存取 Web API 功能所必備的權限。</li>
- </ul>
- </li>
- <li><strong>Web API</strong>:標準 API 的集合,可將硬體功能提供予網頁內容,讓 Web App 能透過程式設計的方式,安全存取行動裝置底層硬體的功能,以及裝置所儲存\可用的資料。</li>
- <li><strong>I/O</strong>:銜接硬體與資料儲存區的介面。</li>
- <li><strong>軟體更新</strong>:取得\安裝更新檔至系統軟體與第三方 App。</li>
- <li><strong>內容配置與繪製</strong>:用以剖析、編譯、執行網頁內容的引擎,並可搭配格式資訊,將格式化過後的內容呈現於使用者眼前。</li>
- <li><strong>b2g 程序:</strong>(Gecko) 於高度權限的系統程序中執行,可存取行動電話的硬體功能。執行 App 屬於 b2g 的子程序。</li>
-</ul>
-
-<h3 id="和_Firefox_OS_相關的_Gecko_檔案">和 Firefox OS 相關的 Gecko 檔案</h3>
-
-<h4 id="b2g_2">b2g/</h4>
-
-<p>b2g 資料夾主要包含 Firefox OS 相關功能。</p>
-
-<h5 id="b2gchromecontent">b2g/chrome/content</h5>
-
-<p>內含於系統 App 上運行的 Javascript 檔。</p>
-
-<h5 id="b2gchromecontentshell.html">b2g/chrome/content/shell.html</h5>
-
-<p>Gaia 的進入點。如前所述,shell.html 會拉進 shell.js 與 settings.js。用於系統 App 的 HTML。</p>
-
-<pre class="brush: html">&lt;script type="application/javascript;version=1.8" src="chrome://browser/content/settings.js"&gt; &lt;/script&gt;
-&lt;script type="application/javascript;version=1.8" src="chrome://browser/content/shell.js"&gt; &lt;/script&gt;</pre>
-
-<p><code>settings.js 裡面是系統預設的設定參數。</code></p>
-
-<h5 id="b2gchromecontentshell.js">b2g/chrome/content/shell.js</h5>
-
-<p><code>shell.js 是載入 Gaia「system」App 的第一個指令碼。</code></p>
-
-<p><code>shell.js 將匯入所有必要的模組、註冊關鍵的監聽器、定義</code> <code style="font-style: normal; line-height: 1.5;">sendCustomEvent 與<font face="Open Sans, sans-serif"> </font></code><code style="font-style: normal; line-height: 1.5;">sendChromeEvent 以溝通 </code>Gaia<code style="font-style: normal; line-height: 1.5;">、提供 webapp 安裝輔助程式:indexedDB 配額、遠端除錯器、鍵盤助手、螢幕截圖工具。</code></p>
-
-<p>不過<code> shell.js</code> 最重要的功能,則是啟動 Gaia 的<code>「system」</code>App,然後將整體系統相關的管理作業交給該「<code>system</code>」App。</p>
-
-<pre class="brush: js">let systemAppFrame =
- document.createElementNS('http://www.w3.org/1999/xhtml', 'html:iframe');
- ...
- container.appendChild(systemAppFrame);</pre>
-
-<h5 id="b2gappb2g.js">b2g/app/b2g.js</h5>
-
-<p>此指令碼包含預先定義的設定,就像是瀏覽器的 about:config,以及 Gaia 的 pref.js。這些設定值另可透過「設定 (Settings)」App 變更,也可用 Gaia 建置指令碼中的 Gaia’s user.js 覆寫之。</p>
-
-<h4 id="domAPI">/dom/{API}</h4>
-
-<p>新實作的 API (post-b2g) 會位於 <code>dom/ 資料夾。</code>舊 API 位於 <code>dom/base</code>,例如<code>navigator.cpp</code>。</p>
-
-<h5 id="domapps">/dom/apps</h5>
-
-<p><code>將載入 .jsm。而</code> <code>.js</code> API 實作即如 <code>webapp.js 安裝、getSelf 等。</code></p>
-
-<h5 id="domappsPermissionsTable.jsm">dom/apps/PermissionsTable.jsm</h5>
-
-<p>所有的存取權限都定義在 <a href="http://mxr.mozilla.org/mozilla-central/source/dom/apps/src/PermissionsTable.jsm">PermissionsTable.jsm</a> 之中。</p>
-
-<h4 id="domwebidl">/dom/webidl</h4>
-
-<p>WebIDL是用以定義 Web API 的語言,請參閱 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings">WebIDL_bindings</a> 了解所支援的屬性。</p>
-
-<h4 id="halgonk">/hal/gonk</h4>
-
-<p>此目錄包含 gonk 銜接層 (Port layer) 的相關檔案。</p>
-
-<h4 id="所產生的檔案">所產生的檔案</h4>
-
-<h5 id="modulelibprefsrcinitall.js">module/libpref/src/init/all.js</h5>
-
-<p>內有全部的設定檔。</p>
-
-<h5 id="systemb2g_omni.ja_and_omni.js">/system/b2g/ omni.ja and omni.js</h5>
-
-<p>內有裝置內資源所適用的樣式。</p>
-
-<h3 id="處理輸入事件">處理輸入事件</h3>
-
-<p>Gecko 內絕大多數的行動,都是由使用者的行動所觸發,可用輸入事件為代表 (如按下按鈕、觸碰裝置的螢幕等)。這些事件必須透過 <code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAppShell" title="">nsIAppShell</a></code> 的 <a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsAppShell.cpp" rel="custom">Gonk implementation</a> (為 Gecko 介面之一,作為 Gecko App 的主要進入點),進入到Gecko。也就是說,輸入裝置驅動程式將呼叫 <code>nsAppShell</code> 物件 (代表 Gecko 子系統) 上的函式,來將事件發送到使用者介面。</p>
-
-<p>例如:</p>
-
-<pre class="brush:cpp;">void GeckoInputDispatcher::notifyKey(nsecs_t eventTime,
- int32_t deviceId,
- int32_t source,
- uint32_t policyFlags,
- int32_t action,
- int32_t flags,
- int32_t keyCode,
- int32_t scanCode,
- int32_t metaState,
- nsecs_t downTime) {
- UserInputData data;
- data.timeMs = nanosecsToMillisecs(eventTime);
- data.type = UserInputData::KEY_DATA;
- data.action = action;
- data.flags = flags;
- data.metaState = metaState;
- data.key.keyCode = keyCode;
- data.key.scanCode = scanCode;
- {
- MutexAutoLock lock(mQueueLock);
- mEventQueue.push(data);
- }
- gAppShell-&gt;NotifyNativeEvent();
-}</pre>
-
-<p>這些事件來自於Linux標準<code>input_event</code>系統. Firefox OS在其上添加了一層簡單的<a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/libui/InputReader.cpp" rel="custom">抽象層</a>,提供了一些像是事件過濾等不錯的功能。產生事件的程式碼在<a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/libui/EventHub.cpp" rel="custom">widget/gonk/libui/EventHub.cpp</a>裡的<code>EventHub::getEvents()方法。</code></p>
-
-<p>Gecko接收到事件後,這些事件會透過<code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsAppShell.cpp" rel="custom">nsAppShell</a>發送到DOM:</code></p>
-
-<pre class="brush:cpp;">static nsEventStatus sendKeyEventWithMsg(uint32_t keyCode,
- uint32_t msg,
- uint64_t timeMs,
- uint32_t flags) {
- nsKeyEvent event(true, msg, NULL);
- event.keyCode = keyCode;
- event.location = nsIDOMKeyEvent::DOM_KEY_LOCATION_MOBILE;
- event.time = timeMs;
- event.flags |= flags;
- return nsWindow::DispatchInputEvent(event);
-}
-</pre>
-
-<p>之後,事件有可能被Gecko處理掉或是當作<a href="/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events" style="line-height: 1.5;" title="/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events">DOM事件</a>被<span style="line-height: 1.5;">發送到網頁應用程式做進一步處裡。</span></p>
-
-<h3 id="影像繪圖">影像繪圖</h3>
-
-<p>在最底層,Gecko利用 <a href="http://www.khronos.org/opengles/2_X/" title="http://www.khronos.org/opengles/2_X/">OpenGL ES 2.0</a> 向包有硬體影格緩衝區(frame buffers)的GL context物件繪圖,這是由Gonk所實作的<code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsWindow.cpp" rel="custom">nsWindow</a>完成</code>:</p>
-
-<pre class="brush:cpp;">gNativeWindow = new android::FramebufferNativeWindow();
-sGLContext = GLContextProvider::CreateForWindow(this);</pre>
-
-<p><code>FramebufferNativeWindow類別(</code>class)是直接從Android而來,請見<code><a href="https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/libs/ui/FramebufferNativeWindow.cpp" title="https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/libs/ui/FramebufferNativeWindow.cpp">FramebufferNativeWindow.cpp</a>;使用了</code><strong>gralloc</strong> API存取繪圖驅動,好配對影格緩衝裝置的緩衝到記憶體之中。</p>
-
-<p>Gecko透過圖層(Layers)系統合成螢幕上的影像,大體而言如下:</p>
-
-<ol>
- <li>Gecko將不同部分的記憶體分頁(pages)畫入記憶體緩衝,有時後這些緩衝存在系統記憶體,有時候因為Gecko會直接畫入視訊記憶體(video memory),所以這些緩衝也可能會是配對在Gecko定址空間的材質(textures) ,以上的工作主要是由<code><a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#83" title="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#201">BasicThebesLayer::PaintThebes()</a>方法完成。</code></li>
- <li>Gecko利用OpenGL命令將這些材質合成起來,合成工作由<code><a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/ThebesLayerOGL.cpp#124" title="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#201">ThebesLayerOGL::RenderTo()</a>方法執行。</code></li>
-</ol>
-
-<p>因為有關Gecko如何處理影像繪圖的作法已經超出本文範圍,所以本文不再做進一步討論了。</p>
-
-<h3 id="硬體抽象層(Hardware_Abstraction_Layer_HAL)">硬體抽象層(Hardware Abstraction Layer, HAL)</h3>
-
-<p>Gecko HAL是Gecko接口層之一,它使用高階層Gecko能取用的C++ API存取跨平台間的底層系統介面,這些API以每個平台為基礎實作在Gecko HAL之內。Gecko的Javacsript程式碼並不能看到這個HAL層。</p>
-
-<h4 id="HAL如何運作">HAL如何運作</h4>
-
-<p>讓我們先來看看<a href="/zh-TW/docs/Web/API/Window/navigator/vibrate" title="The documentation about this has not yet been written; please consider contributing!"><code>Vibration</code></a> API。這個Gecko HAL API被定義在<a href="https://dxr.mozilla.org/mozilla-central/source/hal/Hal.h" rel="custom">hal/Hal.h</a>,基本上你可以看到如下函式(為了說明需要,經過函式簽名(function signature)簡化):</p>
-
-<pre>void Vibrate(const nsTArray&lt;uint32&gt; &amp;pattern);</pre>
-
-<p>Gecko呼叫這個函式來根據某個特定型態開啟震動(另外有一個對應的函式用來關閉震動)。Gonk對這個函式的實作在<a href="https://dxr.mozilla.org/mozilla-central/source/hal/gonk/GonkHal.cpp" rel="custom">hal/gonk/GonkHal.cpp</a>:</p>
-
-<pre class="brush:cpp;">void Vibrate(const nsTArray&lt;uint32_t&gt; &amp;pattern) {
- EnsureVibratorThreadInitialized();
- sVibratorRunnable-&gt;Vibrate(pattern);
-}
-</pre>
-
-<p>下面以<code style="font-style: normal; line-height: 1.5;">VibratorRunnable::Run()實作的</code><span style="line-height: 1.5;">程式碼發送震動</span><span style="line-height: 1.5;">開啟</span><span style="line-height: 1.5;">請求到另一個執行緒,其中主要的迴圈部分如下:</span></p>
-
-<pre class="brush:cpp;">while (!mShuttingDown) {
- if (mIndex &lt; mPattern.Length()) {
- uint32_t duration = mPattern[mIndex];
- if (mIndex % 2 == 0) {
- vibrator_on(duration);
- }
- mIndex++;
- mMonitor.Wait(PR_MillisecondsToInterval(duration));
- }
- else {
- mMonitor.Wait();
- }
-}
-</pre>
-
-<p><code>vibrator_on()便是打開震動馬達的Gonk HAL API,這個函式透過sysfs向內部核心驅動程式送出訊息,寫入值到核心物件之中。</code></p>
-
-<h4 id="HAL_API退回替代(Fallback)實作">HAL API退回替代(Fallback)實作</h4>
-
-<p>Gecko HAL API 跨平台支援。當為沒有震動馬達的平台(如桌上型電腦)建置Gecko,則另一個HAL退回替代API會被使用,這個替代API實作於<a href="https://dxr.mozilla.org/mozilla-central/source/hal/fallback/FallbackVibration.cpp" rel="custom">hal/fallback/FallbackVibration.cpp</a>:</p>
-
-<pre class="brush:cpp;">void Vibrate(const nsTArray&lt;uint32_t&gt; &amp;pattern) {
-}</pre>
-
-<h4 id="沙箱(Sandbox)實作">沙箱(Sandbox)實作</h4>
-
-<p>因為大多數的網頁內容都是在低權限的內容程序運行,所以我們無法確保這些程序有權限去,例如,打開震動馬達,除此之外,為了避免出現程序爭相啟動震動的狀況出現,採用中央控制的作法較為理想。在Gecko HAL,透過sandbox作法可以達到中央控制的目標;其實sandbox也就是一個由內容程序發出到Gecko"伺服器"的<span style="line-height: 1.5;">代理請求,這個代理請求式透過IPDL送出。</span></p>
-
-<p>以震動為例,這是由<a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/SandboxHal.cpp" rel="custom">hal/sandbox/SandboxHal.cpp</a>所實作的<code>Vibrate()完成</code>:</p>
-
-<pre class="brush:cpp;">void Vibrate(const nsTArray&lt;uint32_t&gt;&amp; pattern, const WindowIdentifier &amp;id) {
- AutoInfallibleTArray&lt;uint32_t, 8&gt; p(pattern);
-
- WindowIdentifier newID(id);
- newID.AppendProcessID();
- Hal()-&gt;SendVibrate(p, newID.AsArray(), GetTabChildFrom(newID.GetWindow()));
-}</pre>
-
-<p>這會發送一個 PHal 介面定義的訊息,亦即<span style="line-height: 1.5;">IPDL的<a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/PHal.ipdl" rel="custom">hal/sandbox/PHal.ipdl</a>內所描述的。其中呼叫的函式大致如下:</span></p>
-
-<pre>Vibrate(uint32_t[] pattern);</pre>
-
-<p>訊息的接收端是<code>HalParent::RecvVibrate()函式,這個函式定義在</code><a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/SandboxHal.cpp" rel="custom">hal/sandbox/SandboxHal.cpp</a>裡面,大致如下:</p>
-
-<pre class="brush:cpp;">virtual bool RecvVibrate(const InfallibleTArray&lt;unsigned int&gt;&amp; pattern,
- const InfallibleTArray&lt;uint64_t&gt; &amp;id,
- PBrowserParent *browserParent) MOZ_OVERRIDE {
-
- hal::Vibrate(pattern, newID);
- return true;
-}</pre>
-
-<p>本段範例雖然有省略一些相關性不高的部分,不過確實的說明訊息傳遞是如何由Gecko到Gonk,再到Gonk HAL實作Vibrate(),最後到震動馬達驅動程式。</p>
-
-<h3 id="DOM_APIs">DOM APIs</h3>
-
-<p><strong>DOM介面</strong>是網頁根本上和Gecko溝通的方法,如果想知道更多這方面的細節,請參考<a href="/en-US/docs/DOM/About_the_Document_Object_Model" title="/en-US/docs/DOM/About_the_Document_Object_Model">關於DOM</a>。 DOM介面是用<a href="/en-US/docs/XPIDL" title="/en-US/docs/XPIDL">IDL</a>定義的,其中包括了外部函式介面(foreign function interface, FFI)以及介於javascript和C++的物件模型(object model, OM) 。</p>
-
-<p>像是vibration API便是透過IDL讓網頁內容使用,這部分程式碼定義在<code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/interfaces/base/nsIDOMNavigator.idl" rel="custom">nsIDOMNavigator.idl</a>:</code></p>
-
-<pre>[implicit_jscontext] void mozVibrate(in jsval aPattern);</pre>
-
-<p>mozVibrate(冠有廠商前綴的函式,這個函式背後的震動規格尚未定案)接受<code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/Jsval" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT">jsval</a>型態的參數,也就是Javascript的值。IDL編譯器<font face="Open Sans, sans-serif">,</font></code><code style="line-height: 1.5;"><a href="/en-US/docs/XPIDL/xpidl" style="line-height: 1.5;" title="/en-US/docs/XPIDL/xpidl">xpidl</a>,會產生C++的介面,這個介面會由</code><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;"><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/Navigator.cpp" rel="custom">Navigator.cpp</a>內的</span><code style="font-style: normal; line-height: 1.5;">Navigator類別實作之。</code></p>
-
-<pre class="brush:cpp;">NS_IMETHODIMP Navigator::MozVibrate(const jsval&amp; aPattern, JSContext* cx) {
- // ...
- hal::Vibrate(pattern);
- return NS_OK;
-}</pre>
-
-<p>這個函式最關鍵的部分在於呼叫 hal::Vibreate() 將控制權由DOM移交給Gecko HAL,自此我們便會如前所述地進入HAL層,最後到達驅動程式。在上層的 DOM 並不在意現在是在哪個平台上執行(Gonk, WIndows, Mac OS X等等),DOM 也不在意現在是內容程序的程式碼在跑或是Gecko伺服器的在跑,所有的一切都交由底層系統處理。</p>
-
-<p>vibration API相對單純,適合用於說明,而<a href="/en-US/docs/API/WebSMS" title="/en-US/docs/API/WebSMS">SMS API</a> 便是比較複雜的API,它用到自己的"遠端"層將內容程序和伺服器連接起來。</p>
-
-<h2 id="無線介面層(Radio_Interface_Layer_RIL)">無線介面層(Radio Interface Layer, RIL)</h2>
-
-<p><a href="#The_userspace_process_architecture">The userspace process architecture</a>段落已經提過RIL,這邊我們將更進一步檢視各個元件是如何互動運作。</p>
-
-<p>和RIL有關的元件有:</p>
-
-<dl>
- <dt><code>rild</code></dt>
- <dd>和特定數據機韌體溝通的背景程序(daemon)。</dd>
- <dt><code>rilproxy</code></dt>
- <dd>rild和Gecko b2g程序之間訊息傳遞的代理背景程序(daemon)。rilproxy的存在解決了無法和rild直接溝通的問題,因為rild只可以在radio群組內溝通。</dd>
- <dt><code>b2g</code></dt>
- <dd>實作Gecko的程序,又稱為<strong>chrome process</strong>。其中和RIL相關的部分有<a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">dom/system/gonk/ril_worker.js</a>(這是一個worker執行緒,會透過rilproxy和rild溝通,並且實作了無線狀態機(radio state machine))以及<code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code>介面(是主執行緒的<a href="/en-US/docs/XPCOM" style="line-height: 1.5;" title="/en-US/docs/XPCOM">XPCOM</a>服務,主要是作為ril_worker.js和Gecko各元件,包括Gecko內容程序,之間的訊息傳遞<span style="line-height: 1.5;">)。</span></dd>
- <dt>Gecko's content process</dt>
- <dd><code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRILContentHelper" title="">nsIRILContentHelper</a></code>介面會提供XPCOM服務,有了這個服務,Gecko內容程序會使用到的DOM API,例如<a href="/en-US/docs/API/WebTelephony" title="/en-US/docs/API/WebTelephony">Telephony</a>與<a href="/en-US/docs/API/WebSMS" title="/en-US/docs/API/WebSMS">SMS</a> API,便能夠和Chrome程序的無線介面溝通。</dd>
-</dl>
-
-<h3 id="範例_Example_Communicating_from_rild_to_the_DOM">範例: Example: Communicating from rild to the DOM</h3>
-
-<p>讓我們來看看一段例子,看一下系統底層是如何和DOM程式碼溝通。當數據機接收到來電時,它會透過專屬機制通知rild,rild接著按照<code style="line-height: 1.5;"><a href="https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h" style="line-height: 1.5;" title="https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h">ril.h</a>內定義的</code><span style="line-height: 1.5;">"open"協定發送訊息到rild客戶端,以來電通話為例,</span><code style="font-style: normal; line-height: 1.5;">RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code><span style="line-height: 1.5;"> 訊息會被rild發送至rilporxy。</span></p>
-
-<p>實作在<code><a href="https://github.com/mozilla-b2g/rilproxy/blob/master/src/rilproxy.c" title="https://github.com/mozilla-b2g/rilproxy/blob/master/src/rilproxy.c">rilproxy.c</a>的rilproxy會透過以下程式碼,和rild</code><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;">建立</span><span style="font-family: courier new,andale mono,monospace; font-style: inherit; font-weight: inherit; line-height: 1.5;">連線:</span></p>
-
-<pre class="brush:cpp;">ret = read(rilproxy_rw, data, 1024);
-
-if(ret &gt; 0) {
- writeToSocket(rild_rw, data, ret);
-}</pre>
-
-<p>一旦從rild那裏取回訊息後,訊息便會經由連接rilproxy和Gecko的socket傳給Gecko,Gecko是藉由<a href="https://dxr.mozilla.org/mozilla-central/source/ipc/ril/Ril.cpp" rel="custom">IPC thread</a>接收訊息:</p>
-
-<pre class="brush:cpp;">int ret = read(fd, mIncoming-&gt;Data, 1024);
-// ... handle errors ...
-mIncoming-&gt;mSize = ret;
-sConsumer-&gt;MessageReceived(mIncoming.forget());
-</pre>
-
-<p>訊息的接收端是<a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/SystemWorkerManager.cpp" rel="custom">SystemWorkerManager</a>,然後訊息又會被重新打包發送到<code>{source("dom/system/gonk/ril_worker.js", "ril_worker.js")}}執行緒,這個</code><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;">ril_worker.js</span><code style="font-style: normal; line-height: 1.5;">實做了RIL狀態機(</code><span style="line-height: 1.5;">RIL state machine); 這其中的過程是透過 </span><code style="font-style: normal; line-height: 1.5;">RILReceiver::MessageReceived()函式完成</code><span style="line-height: 1.5;">:</span></p>
-
-<pre class="brush:cpp;">virtual void MessageReceived(RilRawData *aMessage) {
- nsRefPtr&lt;DispatchRILEvent&gt; dre(new DispatchRILEvent(aMessage));
- mDispatcher-&gt;PostTask(dre);
-}</pre>
-
-<p><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;">訊息</span><span style="line-height: 1.5;">傳遞到</span><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;">ril_worker.js執行緒後,onRILMessage()函數接著會被呼叫。其中呼叫方法是利用Javascript API函式</span><code style="font-style: normal; line-height: 1.5;"><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>()</code><span style="line-height: 1.5;">:</span></p>
-
-<pre>return JS_CallFunctionName(aCx, obj, "onRILMessage", NS_ARRAY_LENGTH(argv),
- argv, argv);</pre>
-
-<p><code>onRILMessage()定義在</code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">dom/system/gonk/ril_worker.js</a>中;然後訊息會被切割成包裹,之後每一個包裹會被送給適當的處理函式:</p>
-
-<pre class="brush:js;">handleParcel: function handleParcel(request_type, length) {
- let method = this[request_type];
- if (typeof method == "function") {
- if (DEBUG) debug("Handling parcel as " + method.name);
- method.call(this, length);
- }
-}
-</pre>
-
-<p>ril_worker.js對每一個請求類型有實作一個同名的處理函式,所以程式碼能夠簡單地取得請求類型名稱,然後再比對是否有對應的函式存在,如果有便呼叫對應函式起來處理。</p>
-
-<p><code><font face="Open Sans, sans-serif">以</font>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code>為例,下面的處理函式會被呼叫:</p>
-
-<pre class="brush:js;">RIL[UNSOLICITED_RESPONSE_CALL_STATE_CHANGED] = function UNSOLICITED_RESPONSE_CALL_STATE_CHANGED() {
- this.getCurrentCalls();
-};</pre>
-
-<p>當收到訊息通知後,通話狀態也跟著改變,所以狀態機接著呼叫getCurrentCall()取得目前通話狀態:</p>
-
-<pre class="brush:js;">getCurrentCalls: function getCurrentCalls() {
- Buf.simpleRequest(REQUEST_GET_CURRENT_CALLS);
-}</pre>
-
-<p>這樣會回傳一個請求給rild,要求目前所有進行中通話的狀態。這個請求會沿著<code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code> 訊息之前所行進過的路走,只不過方向相反(從<span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">ril_worker.js</code><span style="line-height: 1.5;"> 到 </span><code style="font-style: normal; line-height: 1.5;">SystemWorkerManager</code><span style="line-height: 1.5;"> 、到 </span><code style="font-style: normal; line-height: 1.5;">Ril.cpp、</code><span style="line-height: 1.5;">再到</span><code style="font-style: normal; line-height: 1.5;">rilproxy,最後是</code><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">rild</code><span style="line-height: 1.5;"> socket</span><span style="line-height: 1.5;">)。</span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">rild</code><span style="line-height: 1.5;"> 然後會回應請求,再回到ril_worker.js的</span><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;">REQUEST_GET_CURRENT_CALLS訊息處理器,整個過程是雙向溝通。</span></p>
-
-<p>通話狀態然後會被處理,和之前的狀態比較,如果狀態有變更,ril_worker.js 會再通知在主執行緒上的<code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code>服務:</p>
-
-<pre class="brush:js;">_handleChangedCallState: function _handleChangedCallState(changedCall) {
- let message = {type: "callStateChange",
- call: changedCall};
- this.sendDOMMessage(message);
-}</pre>
-
-<p><code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code>實作在<a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/RadioInterfaceLayer.js" rel="custom">dom/system/gonk/RadioInterfaceLayer.js</a>,而訊息是透過onmessage()收到:</p>
-
-<pre class="brush:js;"> onmessage: function onmessage(event) {
- let message = event.data;
- debug("Received message from worker: " + JSON.stringify(message));
- switch (message.type) {
- case "callStateChange":
- // This one will handle its own notifications.
- this.handleCallStateChange(message.call);
- break;
- ...
-</pre>
-
-<p>之後訊息會透過父程序訊息管理器(Parent Process Message Manager, PPMM)送到內容程序:</p>
-
-<pre class="brush:js;">handleCallStateChange: function handleCallStateChange(call) {
- [some internal state updating]
- ppmm.sendAsyncMessage("RIL:CallStateChanged", call);
-}</pre>
-
-<p>內容程序透過<code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRILContentHelper" title="">nsIRILContentHelper</a></code> 服務的<span style="background-color: rgba(234, 239, 242, 0.247059); font-family: consolas,monaco,andale mono,monospace; font-size: 1rem; line-height: 19px; white-space: pre;">receiveMessage()從子</span><span style="line-height: 1.5;">程序訊息管理器(</span><span style="line-height: 1.5;">Child Process Message Manager, CPMM)那裡</span><span style="background-color: rgba(234, 239, 242, 0.247059); font-family: consolas,monaco,andale mono,monospace; font-size: 1rem; line-height: 19px; white-space: pre;">接受訊息:</span></p>
-
-<pre class="brush:js;">receiveMessage: function receiveMessage(msg) {
- let request;
- debug("Received message '" + msg.name + "': " + JSON.stringify(msg.json));
- switch (msg.name) {
- case "RIL:CallStateChanged":
- this._deliverTelephonyCallback("callStateChanged",
- [msg.json.callIndex, msg.json.state,
- msg.json.number, msg.json.isActive]);
- break;</pre>
-
-<p>接著,每一個電話callback物件的<code><a href="https://developer.mozilla.org/zh-TW/docs/XPCOM_Interface_Reference/nsIRILTelephonyCallback#callStateChanged()">nsIRILTelephonyCallback.callStateChanged()</a></code>方法會被呼叫;每一個有存取<a href="/zh-TW/docs/Web/API/Window/navigator/mozTelephony" title="The documentation about this has not yet been written; please consider contributing!"><code>window.navigator.mozTelephony</code></a> API的網頁應用程式會註冊這樣一個callback物件,這個callback物件會發送事件到網頁應用程式,如現階段通話物件狀態改變或有新通話來電事件。</p>
-
-<pre class="brush:cpp;">NS_IMETHODIMP Telephony::CallStateChanged(PRUint32 aCallIndex, PRUint16 aCallState,
- const nsAString&amp; aNumber, bool aIsActive) {
- [...]
-
- if (modifiedCall) {
- // Change state.
- modifiedCall-&gt;ChangeState(aCallState);
-
- // See if this should replace our current active call.
- if (aIsActive) {
- mActiveCall = modifiedCall;
- }
-
- return NS_OK;
- }
-
- nsRefPtr&lt;TelephonyCall&gt; call =
- TelephonyCall::Create(this, aNumber, aCallState, aCallIndex);
- nsRefPtr&lt;CallEvent&gt; event = CallEvent::Create(call);
- nsresult rv = event-&gt;Dispatch(ToIDOMEventTarget(), NS_LITERAL_STRING("incoming"));
- NS_ENSURE_SUCCESS(rv, rv);
- return NS_OK;
-}</pre>
-
-<p>應用程式收到事件後可以跟著進行更新使用者介面等等:</p>
-
-<pre class="brush:js;">handleEvent: function fm_handleEvent(evt) {
- switch (evt.call.state) {
- case 'connected':
- this.connected();
- break;
- case 'disconnected':
- this.disconnected();
- break;
- default:
- break;
- }
-}</pre>
-
-<p>更進一步的範例請見<code style="line-height: 1.5;"><a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js" style="line-height: 1.5;" title="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js">撥號應用程式的</a></code><code style="line-height: 1.5;"><a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js" style="line-height: 1.5;" title="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js">handleEvent()</a>。</code></p>
-
-<h3 id="3G_data">3G data</h3>
-
-<p>有一個 RIL 訊息會向電信服務(cellular service)發起數據請求(data call),這會啟動數據機的數據傳輸狀態。數據請求會開啟 Linux 核心的<a href="https://zh.wikipedia.org/wiki/Point-to-Point Protocol" title="Point-to-Point Protocol">Point-to-Point Protocol</a> (PPP) 介面裝置,這個裝置能夠透過使用者介面設定。</p>
-
-<h3 id="相關DOM_APIs">相關DOM APIs</h3>
-
-<p>以下是和 RIL 溝通相關的DOM APIs:</p>
-
-<ul>
- <li><a href="/en-US/docs/API/WebTelephony/Introduction_to_WebTelephony" title="/en-US/docs/API/WebTelephony/Introduction_to_WebTelephony">Telephony API</a></li>
- <li><a href="/en-US/docs/API/WebSMS/Introduction_to_WebSMS" title="/en-US/docs/API/WebSMS/Introduction_to_WebSMS">SMS API</a></li>
- <li>Mobile Connection API</li>
-</ul>
-
-<h2 id="WiFi">WiFi</h2>
-
-<p>Firefox OS 的 WiFi 後端使用 <code>wpa_supplicant</code> 處裡大部份工作。所以說WiFi 後端的主要工作是管理請求者(supplicant),還有輔助一些任務,例如載入 WiFi 驅動程式和開關網路介面;從根本上來看,WiFi 後端就是一個狀態機(state machine),而其狀態會跟隨請求者狀態。</p>
-
-<div class="note">
-<p><strong>Note:</strong> 許多 WiFi 有關的有趣東西都和 wpa_supplicant 程序可能的狀態變更息息相關。</p>
-</div>
-
-<p>WiFi 元件的實作可以分成兩份檔案:</p>
-
-<dl>
- <dt><a href="https://dxr.mozilla.org/mozilla-central/source/dom/wifi/DOMWifiManager.js" rel="custom">dom/wifi/DOMWifiManager.js</a></dt>
- <dd>實作網頁內容所看到的API;定義在 <code><a href="/zh-TW/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWifi.idl" title="">nsIWifi.idl</a></code>.</dd>
- <dt><a href="https://dxr.mozilla.org/mozilla-central/source/dom/wifi/WifiWorker.js" rel="custom">dom/wifi/WifiWorker.js</a></dt>
- <dd>實作狀態機和驅動請求者的程式碼。</dd>
-</dl>
-
-<p>這兩份檔案利用<a href="/en-US/docs/The_message_manager" title="/en-US/docs/The_message_manager">訊息管理員(message manager)</a> 溝通。 後端聆聽請求訊息,比如說"連接",然後回應訊息當請求行動完成後;DOM 端聆聽回應以及狀態改變和資訊更新的訊息。</p>
-
-<div class="note">
-<p><strong>Note:</strong> 任何同步 DOM API 都會藉由快取資料來實作,同步訊息會盡量避免。</p>
-</div>
-
-<h3 id="WifiWorker.js">WifiWorker.js</h3>
-
-<p>這份檔案實作了 WiFi 介面背後的主要邏輯,由 SystemWorkerManager 喚起,然後運行在 chrome 程序裡(對多執行緒版本來說)。 WifiWorker.js 可以切成兩塊: 一個巨大無名函式與 WifiWorker;無名函式會產出 WifiManager,為本地提供 API,包含和請求者連線以及可取得的掃描結果等事件通知,它會回應請求的資訊,控管和請求者連線的細節,遵照 API 使用客戶的指示行動。</p>
-
-<p>WifiManager 和 DOM 中間是 WifiWorker 物件。WifiWorker 根據事件行動並且轉傳事件給 DOM,反過來,它也會收到 DOM 傳過來的請求,並且對請求者(supplicant)採取適當的動作,WifiWorker 也會維護請求者的狀態資訊和下不步行動的資訊。</p>
-
-<h3 id="DOMWifiManager.js">DOMWifiManager.js</h3>
-
-<p>實作 DOM API,負責在呼叫方和 WiFi worker 之間傳遞訊息。</p>
-
-<div class="note">
-<p><strong>Note:</strong> 為了避免和 chrome 程序之間同步訊息,WiFi Manager 需要根據收到的事件快取狀態。</p>
-</div>
-
-<p>有一個同步訊息,那就是當 DOM API 初始化時為了取得請求者(supplicant)當下的狀態。</p>
-
-<h3 id="DHCP">DHCP</h3>
-
-<p>DHCP 和 DNS 由標準 Linux DHCP 客戶端,dhcpcd,負責。當網路連線中斷後,因為無法運作,Firefox OS 會終止 dhcpcd,直到又重新連上網路,dhcpcd 會被再重啟。<code>dhcpcd</code> 也負責設定預設路徑(route)。</p>
-
-<h2 id="Network_Manager">Network Manager</h2>
-
-<p>Network Manager 負責設定 3G 數據和 WiFi 元件的網路介面。</p>
-
-<h2 id="程序與執行緒">程序與執行緒</h2>
-
-<p>Firefox OS 採用 POSIX threads 實現所有應用程式的執行緒,這包括了應用成程式主執行緒、Web Worker 和輔助執行緒。Nice值決定了程序和執行緒的執行優先順序,然後再依賴 Linux 核心排程器先後執行;根據程序不同的狀態會有不同的Nice值。目前有7種Nice層級:</p>
-
-<table class="standard-table">
- <caption>程序執行優先順序</caption>
- <thead>
- <tr>
- <th scope="col">優先順序</th>
- <th scope="col">Nice</th>
- <th scope="col">用於</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><code>MASTER</code></td>
- <td>0</td>
- <td>主 b2g process</td>
- </tr>
- <tr>
- <td><code>FOREGROUND_HIGH</code></td>
- <td>0</td>
- <td>持有 CPU wakelock 的程式</td>
- </tr>
- <tr>
- </tr>
- <tr>
- <td><code>FOREGROUND</code></td>
- <td>1</td>
- <td>前景(foreground)程式</td>
- </tr>
- <tr>
- <td><code>FOREGROUND_KEYBOARD</code></td>
- <td>1</td>
- <td>鍵盤程式</td>
- </tr>
- <tr>
- <td><code>BACKGROUND_PERCEIVABLE</code></td>
- <td>7</td>
- <td>音樂播放背景(background)程式</td>
- </tr>
- <tr>
- <td><code>BACKGROUND_HOMESCREEN</code></td>
- <td>18</td>
- <td>主畫面程式</td>
- </tr>
- <tr>
- <td><code>BACKGROUND</code></td>
- <td>18</td>
- <td>其他背景程式</td>
- </tr>
- </tbody>
-</table>
-
-<p>有些層級的 Nice 值雖然一樣,不過記憶體不足時的終止行為不一樣。所有的優先順序可以在建置時調整,相關的程式碼請見<a href="http://hg.mozilla.org/mozilla-central/file/54e8c6492dc4/b2g/app/b2g.js#l610"><code>b2g/app/b2g.js</code></a>。</p>
-
-<p>一個程序(process)之內,主執行緒繼承了該程序的 Nice 值,而 Web Worker 執行緒所得到的 Nice 值為主執行緒的加一點,所以優先權較低,這麼做是為了避免耗費 CPU 資源的worker 拖慢的主執行續的運作。程序優先順趣會因為事件發生而變化,比如說當一個程式由前景轉到背景時、一個新的程式啟動、現存程式取得 CPU wakelock,一旦程序的執行優先權變動,旗下所屬的執行緒的執行優先權也會跟著變動。</p>
-
-<div class="note">
-<p><strong>Note:</strong> cgroups 目前沒有在資源管理用上,因為在某些裝置和核心上並不可靠。</p>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html b/files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html
deleted file mode 100644
index 3924fbf5a6..0000000000
--- a/files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html
+++ /dev/null
@@ -1,111 +0,0 @@
----
-title: Gaia UI Tests Run Tests
-slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests
-translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests
----
-<div class="warning">
- <p>這個頁面尚未完成。請有志一同的夥伴幫忙補充。<br>
- 有任何意見都可以寄到 gaia-ui-automation@mozilla.org。</p>
-</div>
-<h2 id="Running_Tests">Running Tests</h2>
-<p>    Basically, we can run gaia-ui-tests on a device with marionette server, emulators, and desktop B2G. However, please notice again that you should <u><strong>choose the right branch</strong></u> of gaia-ui-tests describing your B2G the best as we talked on previous section.</p>
-<h3 id="Testing_on_Devices">Testing on Devices</h3>
-<p>    First of all, connect your device through USB to computer, and then forward the package from the phone to computer port:</p>
-<pre>adb forward tcp:2828 tcp:2828
-</pre>
-<p>    <a name="adb_forward_error">You might get weird error</a>, such as "no permission", from the command above. In that case, you could try to do the commands below:</p>
-<pre>adb kill-server
-sudo adb devices
-adb forward tcp:2828 tcp:2828
-</pre>
-<p>    It's almost all done before you start to run your tests! Before you start to run the test, read through <a href="https://developer.mozilla.org/en-US/docs/Gaia_Test_Runner#Risks" title="https://developer.mozilla.org/en-US/docs/Gaia_Test_Runner#Risks">this warning</a> in order to start gaia-ui-tests correctly.<br>
-     Now, you can send this command to execute all gaiatests:</p>
-<pre><code>gaiatest &lt;gaia_ui_tests folder&gt;/tests/ --address=localhost:2828 --type=b2g-xfail &lt;your manifest file location&gt;</code>
-</pre>
-<p>    Or, if you want to run solely one file, just do:</p>
-<pre><code>gaiatest &lt;file&gt; --address=localhost:2828 --type=b2g-xfail &lt;your manifest file location&gt;</code>
-</pre>
-<p>    After the test, you will see all the result on pass/fail. And, for each individual test, it might have more information that you can go through. Here are some common examples you might be able to see:</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <td style="text-align: center;"><strong>Error Message </strong></td>
- <td style="text-align: center;"><strong>Corresponding Actions</strong></td>
- </tr>
- <tr>
- <td>error: [Errno 111] Connection refused</td>
- <td>reissue adb forward command</td>
- </tr>
- <tr>
- <td>Element ... not visible before timeout</td>
- <td>make sure the element would display on the app you test</td>
- </tr>
- <tr>
- <td>TimeoutException: Condition timed out</td>
- <td>make sure the condition on the app is the same as your expectations</td>
- </tr>
- <tr>
- <td>broken pip</td>
- <td>mostly bad marionette server issue</td>
- </tr>
- </tbody>
-</table>
-<p> </p>
-<h3 id="Testing_on_Emulator">Testing on Emulator</h3>
-<p><strong>Automatically launched emulator</strong></p>
-<div class="geckoVersionNote">
- <p>TODO</p>
-</div>
-<p><strong>Mannually launched emulator</strong></p>
-<div class="geckoVersionNote">
- <p>TODO</p>
-</div>
-<h3 id="Testing_on_Desktop_B2G">Testing on Desktop B2G</h3>
-<p>    After you downloaded the Gaia UI test from GitHub, you also can use <span class="author-g-bbktpz122z7l6tqfmcrf">desktop build to run the tests.</span><span class="author-g-bbktpz122z7l6tqfmcrf"> The Firefox OS desktop client, also called the </span><span class="author-g-bbktpz122z7l6tqfmcrf i"><i>B2G desktop client</i></span><span class="author-g-bbktpz122z7l6tqfmcrf">,  lets you run Gaia and Web apps in a Gecko-based environment somewhat  similar to an actual device. It doesn't emulate device hardware, so it's  not adequate for testing device APIs, and isn't a replacement for  testing on actual hardware. However, it does have a several APIs enabled  that aren't available on Firefox such as the Contacts and Settings  APIs. It can therefore be useful during the development of your  application, or while working on the Gaia user interface itself.</span></p>
-<p>    You can download the latest build of the desktop client from <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g18/">this location</a>, but make sure you download the appropriate file for your operating system.</p>
-<ul>
- <li><strong>Mac</strong>: b2g-[VERSION].multi.mac64.dmg</li>
- <li><strong>Linux (32bit)</strong>: b2g-[VERSION].multi.linux-i686.tar.bz2</li>
- <li><strong>Linux (64bit)</strong>: b2g-[VERSION].multi.linux-x86_64.tar.bz2</li>
-</ul>
-<div class="note">
- <p>Note 1: Unfortunately, due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=832469">Bug 832469</a> the nightly desktop builds do not currently work on Windows, so you will need either Mac or Linux to continue :</p>
- <p>Note 2: If you do not have the required operating systems installed on your machine, a virtual machine is fine as well.</p>
-</div>
-<p>    Once downloaded, you will need to extract the contents to a local folder. For the purposes of the rest of this guide, I’ll refer to this location as<code> <strong>$B2G_HOME</strong></code>.<br>
- Add the following line to your gaia/profile/user.js file,</p>
-<pre><code>user_pref('marionette.force-local', true)</code></pre>
-<p>which on :</p>
-<ul>
- <li><strong>Mac</strong> is located in $B2G_HOME/B2G.app/Contents/MacOS</li>
- <li><strong>Linux</strong> is located in $B2G_HOME/b2g</li>
-</ul>
-<p>    Because we’re running against the desktop client we must filter out all tests that are unsuitable. To run the tests, use the following command:</p>
-<pre><code>gaiatest --address=localhost:2828 --type=b2g-antenna-bluetooth-carrier-camera-sdcard-wifi-xfail &lt;your manifest file location&gt;</code>
-</pre>
-<h2 id="Test_Variables">Test Variables</h2>
-<p>    There is one warning previously mentioned here. Please do read <a href="https://developer.mozilla.org/en-US/docs/Gaia_Test_Runner#Risks" title="https://developer.mozilla.org/en-US/docs/Gaia_Test_Runner#Risks">the warning</a> before you setup your json test variables file.</p>
-<p>    We use the --testvars option to pass in local variables, particularly those that cannot be checked into the repository. For example in gaia-ui-tests these variables can be your private login credentials, phone number or details of your WiFi connection.</p>
-<p>    To use it, copy testvars_template.json to a different filename but add it into .gitignore so you don't check it into your repository.</p>
-<p>    When running your tests add the argument: --testvars=(filename).json</p>
-<p><strong>Variables</strong></p>
-<p><code>this_phone_number (string)</code> The phone number of the SIM card in your device. Prefix the number with '+' and your international dialing code.</p>
-<p><code>remote_phone_number (string)</code> A phone number that your device can call during the tests (try not to be a nuisance!). Prefix the number with '+' and your international dialing code.</p>
-<p><code>wifi.ssid (string)</code> This is the SSID/name of your WiFi connection. Currently this supports WPA/WEP/etc. You can add WiFi networks by doing the following (remember to replace "KeyManagement" and "wep" with the value your network supports) :</p>
-<p><code>"wifi": { "ssid": "MyNetwork", "keyManagement": "WEP", "wep": "MyPassword" } </code></p>
-<p><code>WPA-PSK: "wifi": { "ssid": "MyNetwork", "keyManagement": "WPA-PSK", "psk": "MyPassword" } </code></p>
-<p><code>Marketplace: "marketplace": { "username": "MyUsername", "password": "MyPassword" } </code></p>
-<div class="note">
- <p>Due to <a href="http://bugzil.la/775499">Bug 775499</a>, WiFi connections via WPA-EAP are not capable at this time.</p>
-</div>
-<p> </p>
-<h2 id="Test_Parameters">Test Parameters</h2>
-<p>    As you see in the last command we gave out on previous sections, there are many test variables for you to know. You can do this to get more information:</p>
-<pre>gaiatest --help</pre>
-<p> </p>
-<h2 id="Test_Data_Prerequisites">Test Data Prerequisites</h2>
-<p>Occasionally a test will need data on the hardware that cannot be set during the test setUp. The following tests need data set up before they can be run successfully:</p>
-<p><u><code>test_ftu</code></u> Requires a single record/contact saved onto the SIM card to test the SIM contact import</p>
-<p> </p>
-<p style="text-align: center;"><strong>Go to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/gaia-ui-tests/Gaia_UI_Tests_Write_Tests" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests">"Writing Tests"</a> section</strong></p>
-<p style="text-align: center;"> </p>
diff --git a/files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/index.html b/files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/index.html
deleted file mode 100644
index 2c11cea761..0000000000
--- a/files/zh-tw/archive/b2g_os/automated_testing/gaia-ui-tests/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Gaia UI Tests Guidelines
-slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests
-translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests
----
-<div class="summary">
- <p>Gaia-ui-tests 是 Mozilla 的一套用於自動測試 Gaia UI 的架構。所有的測試都是以 Python 撰寫,佐以少數的 Javascript 來與 Firefox OS 的 API 溝通。此一系列的教學文章將會描述如何設定環境、撰寫及執行測試。</p>
-</div>
-<p>Gaia-ui-tests uses <strong>Gaiatest</strong>, a Python package based around <a href="https://developer.mozilla.org/en-US/docs/Marionette" title="https://developer.mozilla.org/en-US/docs/Marionette">Marionette</a>. Gaiatest is designed to wrap HTML locators, Marionette calls and API calls together for interoperble communication and functionality. Marionette is based on the W3C standard developed for the <a href="http://docs.seleniumhq.org/projects/webdriver/" title="http://docs.seleniumhq.org/projects/webdriver/">Selenium WebDriver</a> a programming interface for browser automation. If you have used WebDriver and page/app objects before then you will find using Marionette and gaiatest easy.</p>
-<h2 id="Getting_started_with_Gaia_UI_tests">Getting started with Gaia UI tests</h2>
-<p>For those keen to get started with automated testing on Gaia/Firefox OS we have a tutorial series that will help you go from nothing to writing your own tests. Once you've completed this tutorial you'll have enough knowledge of testing, Firefox OS and Marionette to get started as a Mozilla tests contributor. It is <strong>highly</strong> recommended that you complete this tutorial if you wish to become a contributor.</p>
-<dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start">Part 1: Getting started with Marionette and Firefox OS</a></dt>
- <dd>
- This article covers installing the tools you need to get started with running tests, such as B2G Desktop, Python and Marionette.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions">Part 2: Basic interactions with Firefox OS using Marionette</a></dt>
- <dd>
- An overview of the basic commands you will use to manipulate Firefox OS via Marionette.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests">Part 3: Upgrading our code into a reusable test</a></dt>
- <dd>
- Moving on, in this article we will assemble some basic commands into a simple test inside a Python file so they can all be run as a single entity.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup">Part 4: Re-using commands to set up Firefox OS</a></dt>
- <dd>
- Here we look at moving some of the commands into Python methods to promote code reuse.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner">Part 5: Introducing a test runner</a></dt>
- <dd>
- A test runner is a central feature of any good test suite, allowing you to run multiple tests and report and aggregate results. In this article we will explore the basics of Python's unittest runner.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class">Part 6: Using tuples, and Marionette's By class</a></dt>
- <dd>
- This time around we explain how to further reduce duplication of code, by storing repeated locators in tuples and simplifying the syntax with Marionette's <code>By</code> class.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests">Part 7: Writing your own tests</a></dt>
- <dd>
- Now the basics and behind you, and it is time to start to writing your own tests! Here we give you some tool recommendations to make the work easier, and suggest some tests to try your hand at writing.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class">Part 8: Using a base class</a></dt>
- <dd>
- In its current state, our test file contains all the test runner code. This is ok for now, but as soon as you start to run many test files it will mean a lot of duplication. Here we solve this problem by abstracting the test runner code into a separate Python class.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_9_app_objects">Part 9: Reducing duplication with app objects</a></dt>
- <dd>
- As a final improvement to the code's maintainability, in this article we explore abstracting code that handles interaction with specific Firefox OS apps out into Python app objects.</dd>
-</dl>
-<h2 id="Advanced_topics">Advanced topics</h2>
-<p>One you've got the basics of writing and running tests under your belt, you way want to move on to some more involved or advanced work, such as running the full gaia-ui-tests tests suite, or logging power draw as the result of a test.</p>
-<dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests" title="Gaia UI Tests Run Tests">Running the gaia-ui-tests</a></dt>
- <dd>
- Guides to running the gaia-ui-tests suite against real Firefox OS devices and <a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a> in a variety of configurations.</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Gathering_power_draw_data_using_gaiatest">Gathering Power Draw</a></dt>
- <dd>
- How to use gaiatest to log power draw while a test is running.</dd>
-</dl>
-<h2 id="See_also">See also</h2>
-<p><a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/python/gaia-ui-tests">Gaia-ui-tests main repository</a></p>
-<h2 id="QuestionsCommentsConcerns"><span class="mw-headline" id="Questions.2FComments.2FConcerns">Questions/Comments/Concerns </span></h2>
-<p>This project is at a fairly early stage, and your feedback would be greatly appreciated:</p>
-<ul>
- <li>Send mails to the <a href="http://mailto:_gaia-ui-automation@mozilla.org">gaia-ui-automation@mozilla.org</a> list.</li>
- <li>Alternatively, find us on <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a> at channels #ateam, #mozwebqa, and #moztpeqa.</li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/automated_testing/index.html b/files/zh-tw/archive/b2g_os/automated_testing/index.html
deleted file mode 100644
index 66f4eb520d..0000000000
--- a/files/zh-tw/archive/b2g_os/automated_testing/index.html
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: 測試 Boot to Gecko
-slug: Archive/B2G_OS/Automated_testing
-translation_of: Archive/B2G_OS/Automated_testing
----
-<p>因為 Boot to Gecko 還在開發中,不久的將來即將有對新硬體的支援,因此如何做測試就是很重要的事情。這個頁面提供了從多種方面測試 Boot to Gecko 的文章及資訊。</p>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h3 id="Documentation" name="Documentation">Unit testing</h3>
- <ul>
- <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Gaia_Unit_Tests" title="/en-US/docs/Mozilla/Boot_to_Gecko/Gaia_Unit_Tests">Gaia Unit Tests</a></li>
- <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_Mochitests" title="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_Mochitests">Mochitests</a></li>
- </ul>
- <dl>
- </dl>
- <h3 id="Documentation" name="Documentation">Miscellaneous testing topics</h3>
- <dl>
- <dt>
- <a href="/en-US/docs/Debugging/Debugging_OpenGL" title="/en-US/docs/Debugging/Debugging_OpenGL">Debugging OpenGL</a></dt>
- <dd>
- How to debug OpenGL code on Boot to Gecko.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Feature_support_chart" title="/en-US/docs/Mozilla/Boot_to_Gecko/Feature support chart">Feature support chart</a></dt>
- <dd>
- A chart of what features are supported by the different builds of Boot to Gecko.</dd>
- </dl>
- <h3 id="Documentation" name="Documentation">Marionette for Boot to Gecko</h3>
- <ul>
- <li><a class="link-https" href="https://wiki.mozilla.org/Auto-tools/Projects/Marionette" title="https://wiki.mozilla.org/Auto-tools/Projects/Marionette">The Marionette Test Automation Framework</a></li>
- <li><a href="/en/Marionette" title="https://developer.mozilla.org/en/Marionette">Marionette on MDN</a></li>
- </ul>
- <h4 id="Gaia_Unit_Tests">Gaia Unit Tests</h4>
- <ul>
- <li><a href="/en/Mozilla/Boot_to_Gecko/Gaia_Unit_Tests" title="https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Gaia_Unit_Tests">Running/Writing Unit Tests</a></li>
- </ul>
- <h4 id="Marionette_Tutorials">Marionette Tutorials</h4>
- <ul>
- <li><a href="/en/Mozilla/Boot_to_Gecko/Setting_Up_Marionette_for_B2G" title="Building B2G for QEMU Emulator">Setting up Marionette for Boot to Gecko</a></li>
- <li><a href="/en/Mozilla/Boot_to_Gecko/Marionette_for_Interactive_Python" title="https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Marionette_for_Interactive_Python">Marionette for Interactive Python</a></li>
- <li>Marionette for QEMU emulator</li>
- </ul>
- <h4 id="Writing_Tests_For_Marionette">Writing Tests For Marionette</h4>
- <ul>
- <li><a href="/en/Marionette/Marionette_Python_Tests" title="en/Marionette/Marionette_Python_Tests">Marionette Python Tests</a></li>
- <li><a href="/en-US/docs/Marionette/Marionette_JavaScript_Tests" title="/en-US/docs/Marionette/Marionette_JavaScript_Tests">Marionette JavaScript Tests</a></li>
- <li><a href="/en/Marionette/Running_Tests" title="en/Marionette/Running_Tests">Running Marionette Tests</a></li>
- </ul>
- <p><span class="alllinks"><a href="/Special:Tags?tag=B2G&amp;language=en" title="Special:Tags?tag=B2G&amp;language=en">View All...</a></span></p>
- </td>
- <td>
- <h3 id="Community" name="Community">Getting help from the community</h3>
- <p>If you're working with Boot to Gecko, or developing applications you'd like to run on Boot to Gecko based devices, there are community resources to help you!</p>
- <ul>
- <li>Consult the Boot to Gecko forum: <ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-b2g"> 郵件討論</a></li>
-
-
- <li><a href="http://groups.google.com/group/mozilla.dev.b2g"> 新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.b2g/feeds"> feed 消息來源</a></li>
-</ul></li>
- </ul>
- <ul>
- <li>Ask your question on the Mozilla IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a></li>
- </ul>
- <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Don't forget about the <em>netiquette</em>...</a></span></p>
- <br>
- <h3 id="Related_Topics" name="Related_Topics">Related topics</h3>
- <ul>
- <li><a href="/en/HTML" title="en/HTML">QA</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/building/index.html b/files/zh-tw/archive/b2g_os/building/index.html
deleted file mode 100644
index 9e5c54202c..0000000000
--- a/files/zh-tw/archive/b2g_os/building/index.html
+++ /dev/null
@@ -1,124 +0,0 @@
----
-title: 建置 Boot to Gecko
-slug: Archive/B2G_OS/Building
-translation_of: Archive/B2G_OS/Building
----
-<div>
- </div>
-<p>當您已經建立好編譯的系統、第一次成功地抓了程式碼以及設定好程式碼,您就可以編譯 Boot to Gecko。</p>
-<h2 id="更新程式碼">更新程式碼</h2>
-<p>如果您不是第一次編譯B2G,您需要在編譯之前先抓取最新的程式碼。您可以執行以下指令來更新B2G工具及相依套件:</p>
-<pre>git pull
-./repo sync
-</pre>
-<p>您可以藉由指定名稱來更新某部分的倉儲:</p>
-<pre>./repo sync gaia
-</pre>
-<p>repo指令也有其他您可能會有興趣的選項可用;您可執行 <span style="font-family: 'Courier New', 'Andale Mono', monospace;">repo help </span>指令來獲取有用的資訊。</p>
-<h2 id="編譯">編譯</h2>
-<div class="note">
- <p>注意:在編譯前,您可以設置一個 <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">.userconfig 檔案來訂製這次編譯。</span><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file" title="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file">使用 .userconfig 檔案來客製</a> <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">有更多詳細資訊。</span></p>
-</div>
-<p>執行 <span style="font-family: 'Courier New', 'Andale Mono', monospace;">build.sh 就可以開始編譯 Boot to Gecko:</span></p>
-<pre>cd B2G
-./build.sh
-</pre>
-<p>是時候該再喝杯咖啡,或小睡一下了(尤其是第一次編譯)。</p>
-<h3 id="專程編譯某些模組">專程編譯某些模組</h3>
-<p>如果您只想要編譯某個模組,例如 Gecko,您可以指定名稱:</p>
-<pre>./build.sh gecko
-</pre>
-<p>您也可以用這個指令來取得您編譯的模組的列表:</p>
-<pre>./build.sh modules
-</pre>
-<h3 id="設定要使用的處理器數目">設定要使用的處理器數目</h3>
-<p>B2G 的編譯 scripts 預設使用系統的 cores 數量加二作為平行工作的數量。您可以再執行 <code>build.sh</code> 的時候指定 <code>-j </code>參數來改變這個預設值。如果您想要把編譯工作丟到背景、並且減輕 CPU 負載來做其他事情的話,這對您就很方便。當您面臨到編譯問題時,如果您一次就只執行一個編譯工作的話、設定處理器數目也可以讓您更容易讀取編譯的錯誤輸出,真的很方便。</p>
-<p>舉例來說,設定同時只會有兩個工作來編譯:</p>
-<pre>./build.sh -j2
-</pre>
-<p>對於此對常見的使用案例就是防止不要平行編譯。這會讓編譯的輸出更加容易閱讀,更容易釐清編譯的問題。執行下面指令:</p>
-<pre>./build.sh -j1
-</pre>
-<h3 id="多語系編譯">多語系編譯</h3>
-<p>建立多語系的編譯版本:</p>
-<h4 id="Gaia">Gaia</h4>
-<ol>
- <li>決定要用哪個 Gaia 語系檔。這邊我們用 <a href="http://hg.mozilla.org/integration/gaia-nightly/file/e2eed5263e77/shared/resources/languages-dev.json"><code>locales/languages_dev.json</code></a> 和 <a href="http://hg.mozilla.org/integration/gaia-nightly/file/e2eed5263e77/shared/resources/languages-all.json"><code>locales/languages_all.json</code></a> 當做我們 Gaia 的語系檔。</li>
- <li>Clone the appropriate locales</li>
- <li>從 <a href="http://hg.mozilla.org/gaia-l10n">http://hg.mozilla.org/gaia-l10n</a> 複製適當的語系到目錄下;<code>這裡我們放於 gaia-l10n/</code> 下。接著您會需要將列於語系檔之內的美個語系的倉儲(repo)都複製下來。</li>
- <li>您需要將上面步驟二目錄的絕對路徑設定在<code> LOCALE_BASEDIR</code> 環境變數中。也要把步驟一中檔案的絕對路徑設定在 <code>LOCALES_FILE</code> 環境變數中。</li>
-</ol>
-<p>如例:</p>
-<pre>export LOCALE_BASEDIR=$PWD/gaia-l10n
-export LOCALES_FILE=$PWD/gecko/gaia/shared/resources/languages-dev.json
-</pre>
-<h4 id="Gecko">Gecko</h4>
-<ol>
- <li>決定要用哪個 Gecko 語系檔。這邊我們用 <a href="http://hg.mozilla.org/releases/mozilla-b2g18/file/default/b2g/locales/all-locales">b2g/locales/all-locales</a> 當做我們的 Gecko 語系檔。</li>
- <li>複製適當的語系到目錄下;像是 <code>gecko-l10n/</code> 。
- <ul>
- <li>mozilla-central 要用 <a href="http://hg.mozilla.org/l10n-central/">http://hg.mozilla.org/l10n-central/</a></li>
- <li>mozilla-aurora 要用 <a href="http://hg.mozilla.org/releases/l10n/mozilla-aurora/">http://hg.mozilla.org/releases/l10n/mozilla-aurora/</a></li>
- <li>mozilla-beta 或 mozilla-b2g18 則是 <a href="http://hg.mozilla.org/releases/l10n/mozilla-beta/">http://hg.mozilla.org/releases/l10n/mozilla-beta/</a></li>
- </ul>
- </li>
- <li>複製 <a href="http://hg.mozilla.org/build/compare-locales">compare-locales</a>.</li>
- <li>
- <p>將步驟二目錄的絕對路徑設定在 <code>L10NBASEDIR </code>環境變數中。將步驟一中的語系以空白分隔方式設定在 <code>MOZ_CHROME_MULTILOCALE </code>環境變數中。</p>
- </li>
- <li>
- <p>將 <code>compare-locales/scripts</code> 目錄加入到 <code>PATH</code> 變數、 <code>compare-locales/lib</code> 加入到 <code>PYTHONPATH</code> 變數中.</p>
- 如例:
- <pre>export L10NBASEDIR=$PWD/gecko-l10n
-export MOZ_CHROME_MULTILOCALE="ja zh-TW"
-export PATH="$PATH:$PWD/compare-locales/scripts"
-export PYTHONPATH="$PWD/compare-locales/lib"
-</pre>
- <p>當您完成這些設定之後,就可以執行 build.sh 了。</p>
- <p>看起來您也可以用<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=818560#c9/"> .userconfig</a> 來做這些事情。</p>
- <p>當我們整理好之後,可能會修改這些指令。</p>
- </li>
-</ol>
-<h2 id="已知的錯誤">已知的錯誤</h2>
-<ul>
- <li>
- <h3 id="KeyedVector.h19331_error_indexOfKey_was_not_declared_in_this_scope">KeyedVector.h:193:31: error: indexOfKey was not declared in this scope</h3>
- </li>
-</ul>
-<p>當您的 gcc 版本太新的時候會出現這個錯誤。請安裝 gcc/g++/g++-multilib 4.6.x 版本.</p>
-<p><a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites">設置您的編譯環境</a> 有更多資訊。</p>
-<div class="note">
- <p><strong>社群上的提醒:</strong> 用 4.7.x 加上修改一些 B2G 程式碼可能可以 (gcc 會告訴你要改哪些地方) 但是這邊就沒人能幫你了!但是不改就不會碰到這些問題。</p>
-</div>
-<ul>
- <li>
- <h3 id="arm-linux-androideabi-g_Internal_error_Killed_program_cc1plus">arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)</h3>
- </li>
-</ul>
-<p>如果看到這個訊息,通常是代表記憶體不夠。在執行 <code>./build.sh </code>之前請確認有足夠的記憶體,如果您的系統記憶體有4G的話,應該可以跑的很順利。</p>
-<ul>
- <li>
- <h3 id="If_you_get_build_errors_while_the_build_system_is_running_tests">If you get build errors while the build system is running tests</h3>
- </li>
-</ul>
-<p>有時候(尤其是在作業系統或是編譯工具更新後)您在編譯系統執行編譯後測試時,會碰到一些靈異現象就像下面這樣:</p>
-<pre>Generating permissions.sqlite...
-test -d profile || mkdir -p profile
-run-js-command permissions
-WARNING: permission unknown:offline-app
-WARNING: permission unknown:indexedDB-unlimited
-build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add]
-make[1]: *** [permissions] Error 3
-make: *** [gaia/profile.tar.gz] Error 2</pre>
-<p>這種情況下試著刪除 <code>gaia/xulrunner-sdk </code>目錄然後再重新抓程式碼:</p>
-<pre>rm -r gaia/xulrunner-sdk
-</pre>
-<p>這樣會刪掉由編譯系統自動抓取、預先編譯的 <a href="/en-US/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a>;在下一次編譯的時候,XULRunner 會再被自動抓取一份。</p>
-<h2 id="接著的步驟">接著的步驟</h2>
-<p>在編譯後,下個步驟就取決於您編譯的 Boot to Gecko 是給模擬器還是給實體手機;細節請參考下列文章:</p>
-<ul>
- <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators">使用 B2G 模擬器</a></li>
- <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">使用 B2G 的電腦桌面 client 程式</a></li>
- <li><a href="https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Installing_Boot_to_Gecko_on_a_mobile_device" title="en/Mozilla/Boot_to_Gecko/Installing Boot to Gecko on a mobile device">將 Boot to Gecko 安裝於行動裝置</a></li>
- <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard" title="en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard">將 Boot to Gecko 安裝於 pandaboard</a></li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html b/files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html
deleted file mode 100644
index 0dc0cd18b7..0000000000
--- a/files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: Firefox OS 建置程序摘要
-slug: >-
- Archive/B2G_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_process_summary
-translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary
----
-<div class="summary">
- <p><font><font>建置</font></font><font><font>和安裝Firefox OS需要大量的時間,網路頻寬和電腦計算能力。</font><font>不幸的是,一路上事情很容易出問題,所以</font><font>此頁面列出了<font><font>建置</font></font>的目標和步驟,希望</font></font><font><font>可以在用戶<font><font><font><font>建置的</font></font>過程中</font></font><font><font>幫上忙</font></font>。</font><font>至於每一步驟的細節,會在其他文</font></font>件討論<font><font>。</font></font></p>
-</div>
-<div class="note">
- <p><span style="font-weight: bold;"><font><font>注:</font></font></span><font><font>Firefox OS<font><font>建置</font></font>過程會提及到“B2G”或“Boot2Gecko”。</font><font>“Boot2Gecko”是Firefox OS專案的原始代號名稱。</font></font></p>
-</div>
-<h2 id="建置目標:4個“映像”檔"><font><font><font><font>建置</font></font>目標:4個“映像”檔</font></font></h2>
-<p><font><font><font><font>建置</font></font>的目標是建立4個可以被複製到Firefox OS設備的映像檔。</font></font></p>
-<table style="width: 90%; vertical-align: top; margin: 4px auto;">
- <tbody>
- <tr>
- <td><b><font><font>boot.img</font></font></b></td>
- <td><font><font>Linux核心和根檔案系統映像檔(root filesystem image),後者提供<font><font>一套</font></font>可用的基本Unix工具。</font></font></td>
- </tr>
- <tr>
- <td><b><font><font>system.img</font></font></b></td>
- <td><font><font>Firefox的操作系統核心,包括部分<font><font>的</font></font>Gonk,Gecko的接口,可執行b2g檔。</font></font></td>
- </tr>
- <tr>
- <td><b><font><font>userdata.img</font></font></b></td>
- <td>
- <p><font><font>使用者的</font></font><font><font>Gecko profile</font></font><font><font>以及Gaia網頁應用程式。</font></font></p>
- </td>
- </tr>
- <tr>
- <td><b><font><font>recovery.img</font></font></b></td>
- <td><font><font>Linux核心和根<font><font>檔案系統</font></font>映像檔,另外還有簡單的工具,好讓使用戶能夠從問題中<font><font>修復</font></font>。</font></font></td>
- </tr>
- </tbody>
-</table>
-<p><font><font>一旦四個映像檔產生好後,它們可以被轉移到一個裝置。</font></font></p>
-<p><font><font>Firefox OS是建立在Android開源專案上(Android Open Source Project, AOSP)。</font><font>AOSP的</font></font><code><font><font>ADB</font></font></code><font><font>和</font></font><code><font><font>fastboot工具</font></font></code><font><font>提供了十分好用的方法來存取和操作設備。</font></font><font><font>值得一提的是</font></font><font><font><code>adb reboot-bootloader命令</code></font></font><font><font>可以讓已經</font></font><font><font>連接上的裝置重開機,並且暫停至bootloader早期階段,在這個早期階段中可以下<code>fastboot flash $partition $image命令</code></font></font><font><font><code>,把映像檔複製到裝置之上</code>。</font></font></p>
-<h3 id="開機映像檔(The_Boot_image)"><font><font>開機映像檔(The Boot image)</font></font></h3>
-<p><font><font>boot.img(開機映像檔)</font></font><font><font>包含Linux核心和初始根磁碟分區,boot.img</font></font><font><font>提供核心軟體工具和初始化腳本。為了效率考量,</font><font><font><font>初始根磁碟分區會</font></font>被複製到記憶體之中,因此被稱為“ramdisk”。boot.img</font><font>將被複製到設備上的“啟動”(boot)分區</font></font><code>,而在裝置的檔案系統運作時,<font><font>ramdisk的內容是可以在根目錄底下看見,比如說下adb shell指令</font></font></code><font><font>。</font></font></p>
-<p><font><font>boot.img還<font><font>在根目錄下的<code><font><font>default.prop</font></font></code>文<font><font><font><font>件</font></font></font></font>裡</font></font>建立了root用戶的權限</font></font><font><font>。</font></font></p>
-<p><font><font>另外也可以通過檔案<font><font>檢查</font></font>,分割<font><font>檔案</font></font>到核心和ramdisk映像檔,<font><font>修改從</font></font>ramdisk映像抓出來的內容,並重新組裝ramdisk映像檔,然後重新建置boot.img,這樣來修改現存的開機映像檔 。</font><font><font><font>例如請參考</font></font></font></font><font><font><a href="http://k.japko.eu/alcatel-otf-hackers-guide-1.html">Alcatel One Touch Fire Hacking (Mini)</a></font></font><font><font>指南。</font></font></p>
-<p><font><font>可以在安裝<font><font><font><font>開機映像檔</font></font></font></font>前測試<font><font><font><font>開機映像檔。</font></font></font></font></font></font>首先讓裝置開機後暫停於bootloader,然後下<code>fastboot boot /some/path/to/boot.img命令來開機進入尚未安裝的boot.img。</code></p>
-<h3 id="系統映像"><font><font>系統映像</font></font></h3>
-<p><font><font>系統映像檔(</font></font><code><font><font>system.img</font></font></code><font><font>)是Firefox OS的核心:</font></font></p>
-<ul>
- <li><strong><font><font>Gonk</font></font></strong><font><font>:操作系統的底層元件</font></font></li>
- <li><strong>Gecko</strong><font><font>:Firefox的HTML和JavaScript引擎</font></font></li>
- <li><strong><font><font>B2G</font></font></strong><font><font>:操作系統核心運行程序。</font></font></li>
-</ul>
-<div class="note">
- <p><font><font>有<font><font>關於平台架構的更多資訊,</font></font>請見</font></font><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform"><font><font>Firefox OS平台</font></font></a><font><font>指南。</font></font></p>
-</div>
-<p><font><font>system.img會被複製到system分區,而在檔案系統運作時會在/system/目錄底下。</font></font></p>
-<div class="note">
- <p><strong><font><font>注</font></font></strong><font><font>:system.img提供了許多裝置會用到的二進位大型物件(BLOB),特別是RIL(Radio Interface Layer)的blob控制了設備上的蜂巢式行動網路(cellular radio network)。</font></font></p>
-</div>
-<h3 id="用戶資料映像檔"><font><font>用戶資料映像檔</font></font></h3>
-<p><font><font>用戶資料應像檔(</font></font><code><font><font>userdata.img</font></font></code><font><font>)提供了運行中載入的各種Gaia應用程式。</font></font></p>
-<p><font><font><code><font><font>userdata.img會被複製到裝置的userdata分區,然後檔案系統</font></font></code></font></font><font><font><code>運作時會在/data/目錄底下。值得一提的是</code></font></font><font><font><code>/data/b2g/目錄含有使用者的Gecko profile,而/data/local/webapps/目錄則含有使用者實際可以用的網頁應用程式</code></font></font><font><font>。</font></font></p>
-<h3 id="復原映像檔"><font><font>復原映像檔</font></font></h3>
-<p><font><font>復原映像檔(</font></font><code><font><font>recovery.img</font></font></code><font><font>)包含了和boot.img相同的核心和類似的ramdisk。</font><font>然而,<code><font><font>recovery.img</font></font></code>採用不同的初始化腳本,所以使用者</font></font><font><font>會被導引到另一個介面,這個介面會有可以透過裝置實體按鍵來操作的復原指令。</font></font></p>
-<p><font><font><code><font><font>recovery.img會被複製到recovery分區,檔案系統運作時並不會掛載復原映像檔。</font></font></code></font></font></p>
-<h2 id="構建過程:準備,設定,建置,安裝"><font><font>構建過程:準備,設定,建置,安裝</font></font></h2>
-<p><font><font>建置和安裝Firefox OS的整個過程包括四個步驟:</font></font></p>
-<table style="width: 90%; vertical-align: top; margin: 4px auto;">
- <tbody>
- <tr>
- <td><b><font><font>準備</font></font></b></td>
- <td><font><font>取得建置需要的程式和檔案,如正確的編譯器和函式庫。</font></font></td>
- </tr>
- <tr>
- <td><b><font><font>配置</font></font></b></td>
- <td><font><font>下載原始碼,並創建</font></font><code><font><font>.configure</font></font></code><font><font>檔定義環境變數</font></font>,例如路徑等。</td>
- </tr>
- <tr>
- <td><b><font><font>建置</font></font></b></td>
- <td>
- <p><font><font>建置使用者</font></font><font><font>的Gaia個人檔案和Gaia網頁應用程式。</font></font></p>
- </td>
- </tr>
- <tr>
- <td><b><font><font>安裝</font></font></b></td>
- <td><font><font>在設備上安裝檔案。</font></font></td>
- </tr>
- </tbody>
-</table>
-<p> </p>
-<h3 id="準備"><font><font>準備</font></font></h3>
-<p><font><font>一開始需要準備好<font><font>建置需要的程式和檔案,如正確的編譯器和函式庫</font></font>。</font></font></p>
-<p><font><font>這個步驟可以通過手動執行或使用腳本來完成。</font><font>詳情將在</font></font><font><font><a href="/en-US/Firefox_OS/Firefox_OS_build_prerequisites" title="火狐OS建立的先決條件"><font><font>建置Firefox </font></font></a>OS的先決條件</font></font><font><font>頁面<font><font>討論</font></font>。</font></font></p>
-<div class="note">
- <p><strong><font><font>注</font></font></strong><font><font>:在UNIX和類UNIX的機器,</font></font><font><font>我們可以利用which指令,搭配需要的程式名稱當作變數,來檢查這些需要的工具是否存在。</font></font></p>
-</div>
-<h3 id="設定"><font><font>設定</font></font></h3>
-<p><font><font>接著我們需要複製一份Firefox OS(B2G)的原始碼,通常可以透過git從B2G專案那裡複製一份,另外我們也需要產生一份.config檔,這個檔案會定義建置用的變數。</font></font></p>
-<p><font><font>設定會執行</font></font><code><font><font>config.sh</font></font></code><font><font>腳本。</font><font>詳情請見</font></font><a href="/en-US/Firefox_OS/Preparing_for_your_first_B2G_build" title="準備進行首次B2G構建"><font><font>準備進行首次B2G建置</font></font></a><font><font>頁面。</font></font></p>
-<p><font><font>configure腳本需要一個參數,指定建置的裝置種類。</font><font>建置名稱是和CPU架構而非裝置相關的代碼<font><font>名稱,目前可取得的代碼名稱請見<a href="/en-US/Firefox_OS/Phones"><font><font>這裡</font></font></a>。</font></font></font></font></p>
-<p><font><font>設定步驟也將使用Android開源專案的repo</font></font><font><font>工具,來下載(或<font><font>更新)建置的原始碼到/repo/project目錄下。這個步驟會下載大量的</font></font></font></font><font><font>檔案並且花費不少時間。</font></font></p>
-<h3 id="建置"><font><font>建置</font></font></h3>
-<p><font><font>建置步驟實際上將編譯所有的原始碼,並且生成的映像檔。</font></font></p>
-<p><font><font>建置會執行</font></font><code><font><font>build.sh</font></font></code><font><font>腳本。</font><font>詳情請見</font></font><a href="/en-US/Firefox_OS/Building" title="建築"><font><font>建置Firefox OS</font></font></a><font><font>頁面。</font></font></p>
-<p><font><font>基本上建置十分單調,這個步驟就是從AOSP工具、到Linux核心、到Gaia網頁應用程式把一切都建置起來,而且有時候很不好判斷是那一個環節出錯導致</font></font><font><font>建置失敗。</font></font></p>
-<p><font><font>我們可以只建置全部的某一部份,例如執行建置腳本時只帶入gecko參數,就會只建置Gecko系統,相同地,只帶入gaia參數,就只會建置Gaia。這些分別建置的部份可以分別地</font></font><font><font>被安裝到裝置上。</font></font></p>
-<p><font><font>另外,也可以建置之前所討論的映像檔,例如建置系統映像檔可以這樣建置./build.sh out/platform/$target/system.img,其中$target參數和設定步驟中所提供的參數相同。</font></font></p>
-<h3 id="安裝"><font><font>安裝</font></font></h3>
-<p><font><font>安裝的步驟會將新編譯的程式碼放置到設備上。</font><font>這個步驟會執行</font></font><code><font><font>flash.sh</font></font></code><font><font>腳本。</font></font></p>
-<p><font><font>如果只要安裝那些在建置步驟中分別被建置的部份,我們可以通過在執行falsh.sh時多帶入一個參數,例如./falsj.sh gaia就只會安裝Gaia網頁應用程式。</font></font></p>
diff --git a/files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/index.html b/files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/index.html
deleted file mode 100644
index f01f67100c..0000000000
--- a/files/zh-tw/archive/b2g_os/building_and_installing_firefox_os/index.html
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: 建置並安裝 Firefox OS
-slug: Archive/B2G_OS/Building_and_installing_Firefox_OS
-translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS
----
-<p>由於 Firefox OS 現正積極開發中,而且仍處於預先發佈的階段。如果要確保自己安裝的是最新版本,最好能自己動手建置並安裝。透過此頁面所整理的文章,你可在模擬器或相容裝置上建置並安裝 Firefox OS,或於 Firefox 瀏覽器上安裝 <a href="https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="en/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a> 使用者介面。</p>
-<p><nobr></nobr></p>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="取得並建置_Firefox_OS">取得並建置 Firefox OS</h2>
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="Mozilla/Firefox_OS/Firefox OS build prerequisites">Firefox OS 必備建置條件</a></dt>
- <dd>
- 首次建置 Firefox OS 時的必要步驟。</dd>
- <dt>
- <a href="/en/Mozilla/Boot_to_Gecko/Preparing_for_your_first_B2G_build" title="/en/Mozilla/Boot_to_Gecko/Preparing for your first B2G build">準備首次建置 Firefox OS</a></dt>
- <dd>
- 在建置 Firefox OS 之前,必須先複製 Firefox OS 的 Repo 並完成細部設定。本篇文章將解釋相關細節。</dd>
- <dt>
- <a href="/en/Mozilla/Boot_to_Gecko/Building_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Building Boot to Gecko">建置 Firefox OS</a></dt>
- <dd>
- 建置 Firefox OS 的方法。</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Porting" title="/en-US/docs/Mozilla/Firefox_OS/Porting">匯入 Firefox OS</a></dt>
- <dd>
- 將 Firefox OS 匯入新裝置的相關資訊。</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="Special:Tags?tag=B2G&amp;language=en">全部文章...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="安裝_Firefox_OS_及或_Gaia">安裝 Firefox OS 及/或 Gaia</h2>
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Choosing_how_to_run_Gaia_or_B2G" title="Mozilla/Firefox_OS/Choosing how to run Gaia or B2G">選擇 Gaia 或 Firefox OS 的執行方式</a></dt>
- <dd>
- 可於 Firefox 中執行 Gaia;亦可於行動裝置或桌面版模擬器中執行 Firefox OS。本篇指南將協助你根據自己需要,找出最適合的方式。</dd>
- <dt>
- <a href="/en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox" title="en/Mozilla/Boot_to_Gecko/Using Gaia in Firefox">在 Firefox 中執行 Gaia</a></dt>
- <dd>
- 於 Firefox 桌面版瀏覽器中執行 Gaia。</dd>
- <dt>
- <a href="/en/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="en/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">使用 Firefox OS 桌面用戶端</a></dt>
- <dd>
- 執行並使用 Firefox OS 桌面用戶端;即是在桌面版應用程式中模擬 Gaia 環境。相較於 Firefox 中執行 Gaia,此種方式雖然更精確,但仍不如模擬器所達的精確度。</dd>
- <dt>
- <a href="/en/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="en/Mozilla/Boot_to_Gecko/Using the B2G emulators">使用 Firefox OS 模擬器</a></dt>
- <dd>
- 本指南將說名 Firefox OS 模擬器的建置與使用方式,及使用何種模擬器的適當時機。</dd>
- <dt>
- <a href="/en/Mozilla/Boot_to_Gecko/Installing_Boot_to_Gecko_on_a_mobile_device" title="en/Mozilla/Boot_to_Gecko/Installing Boot to Gecko on a mobile device">於行動裝置上安裝 Firefox OS</a></dt>
- <dd>
- 在實際的行動裝置上安裝 Firefox OS。</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Dual_boot_of_B2G_and_Android_on_SGS2" title="/en-US/docs/Mozilla/Boot_to_Gecko/Dual boot of B2G and Android on SGS2">在 SGS2 上的 Firefox OS 與 Android 雙重開機</a></dt>
- <dd>
- 於 Samsung Galaxy S2 上建立 Firefox OS/Android 雙重開機環境的方法。</dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html b/files/zh-tw/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html
deleted file mode 100644
index 20566a839b..0000000000
--- a/files/zh-tw/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: 選擇如何運作 Gaia 或 B2G
-slug: Archive/B2G_OS/Choosing_how_to_run_Gaia_or_B2G
-translation_of: Archive/B2G_OS/Choosing_how_to_run_Gaia_or_B2G
----
-<p>根據各別的需求,當您以 Boot to GEcko 或是 <a href="/en/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="en/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a> 使用者介面時、您會思考各種選項及組合。您可以挑出接著列出的這些選項;每個選項都需要考慮其優缺點,有些會比其他的更具延展性。</p>
-<h2 id="在_Firefox_中運作_Gaia">在 Firefox 中運作 Gaia</h2>
-<p>如果您很清楚您在做什麼的話,您可以複製 <a class="link-https" href="https://github.com/mozilla-b2g/gaia" title="https://github.com/mozilla-b2g/gaia">Gaia 的 repository</a> 並且 <a href="/en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox" title="en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox">在 Firefox 15 或以上版本中運作 Gaia</a>.</p>
-<h3 id="優點">優點</h3>
-<ul>
- <li>不必 build 任何東西,只需簡單的安裝。</li>
- <li>可以使用 Firefox 內建的開發者工具來除錯。</li>
-</ul>
-<h3 id="缺點">缺點</h3>
-<ul>
- <li>看到的範圍是基於瀏覽器的視窗大小,而不是行動裝置的螢幕大小。</li>
- <li>很多硬體介面的功能無法使用。</li>
- <li>應用程式在各自、釘著的分頁中運作,而不是主要的 UI 分頁。</li>
- <li>如果您用 Firefox nightly 版本的話,它不一定很穩定。</li>
-</ul>
-<h3 id="為什麼要在_Firefox_中運作_Gaia">為什麼要在 Firefox 中運作 Gaia</h3>
-<p>有兩個很重要的理由會讓您不在行動裝置或模擬器、而是在 <a href="/en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox" title="en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox">Firefox 上運作 Gaia</a>;容易開始著手開發和運作、也可以使用 Firefox 中優秀的開發者工具。如同要了解 Gaia 的 hackers 一般,開發者一開始測試 apps 的 UI 和基本功能的時候會享受到這極大的好處。</p>
-<div class="note">
- <strong>Note:</strong> 在開始配送 app 之前,您絕對會需要在實體的行動裝置上做測試。</div>
-<h2 id="在桌面環境中運作_B2G_模擬器">在桌面環境中運作 B2G (模擬器)</h2>
-<p>可以自己建置一個 Boot to Gecko 模擬器,並且在上面運作 Gaia。這個軟體雖然是以 Firefox 為基礎,但和行動裝置上的 Boot to Gecko 的行為非常類似。現在 Mozilla 提供 nightly 版本的模擬器給開發者,且這項工作在 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=744008" title="FIXED: Produce B2G builds for desktop operating systems.">bug 744008</a> 裡持續追蹤著。如果您熟悉建置 Firefox code-base 或是 C++ 專案的話,您可以 <a class="link-https" href="https://wiki.mozilla.org/Gaia/Hacking#Building_B2G" title="https://wiki.mozilla.org/Gaia/Hacking#Building_B2G">依循這些步驟</a> 自己建置這個應用程式。</p>
-<h3 id="優點_2">優點</h3>
-<ul>
- <li>模擬器提供行動裝置大小的範圍。</li>
- <li>大部分而言,使用模擬器的體驗是近似實際的行動裝置的。</li>
- <li>可以使用更多行動裝置的 APIs (但不是全部)。</li>
-</ul>
-<h3 id="缺點_2">缺點</h3>
-<ul>
- <li>您需要一個安裝好的 C/C++ 編譯環境。</li>
- <li>您需要自己建置 Gecko 以及模擬器。</li>
- <li>Firefox 開發者工具無法使用。</li>
-</ul>
-<h3 id="為什麼要運作_B2G_模擬器">為什麼要運作 B2G 模擬器</h3>
-<p>這是一個不錯且折衷的測試和開發解決方案。對於將您的 app 或是其他程式碼放在近似行動裝置的環境中、卻不用再每次測試時都燒進手機而言,是一個不錯的方案。</p>
-<div class="note">
- <strong>Note:</strong> 在開始配送 app 之前,您絕對會需要在實體的行動裝置上做測試。</div>
-<h2 id="在行動裝置上運作_B2G">在行動裝置上運作 B2G</h2>
-<p>對於測試 B2G 或 Gaia 環境、或是您的 web app 而言,最徹底的方式是建置並將 Boot to Gecko 安裝在實體的行動裝置上。同時這也是最複雜的處理程序。</p>
-<h3 id="優點_3">優點</h3>
-<ul>
- <li>您可以得到完整的行動裝置體驗。</li>
- <li>所有的行動裝置 APIs 都可以使用。</li>
- <li>您可以在實際操作行動裝置中,體驗您的程式的效能。</li>
-</ul>
-<h3 id="缺點_3">缺點</h3>
-<ul>
- <li>您需要具備一個完整的 C/C++ 建置系統。</li>
- <li>您需要自己編譯 Gecko 和 Gaia。</li>
- <li>您需要一個相容的行動裝置來安裝 B2G 作業系統。</li>
- <li>您需要把 B2G 燒到行動裝置上,同時移除掉原本在運作的作業系統。</li>
-</ul>
-<h3 id="為什麼要在行動裝置上運作_B2G">為什麼要在行動裝置上運作 B2G</h3>
-<p>對於在 B2G 或 Gaia 上測試任何程式或網頁專案而言,這毫無疑問地是最精準的方式。經由在實際的行動裝置硬體上執行,您可以確認您的專案表現及顯示都相當良好,並且都可以正確地使用所有的行動裝置 APIs。另外,在您開始配送任何程式之前,您應該一定要在實體行動裝置上測試;沒這樣做的話,一定會不幸地發生一些難以預測的影響。</p>
diff --git a/files/zh-tw/archive/b2g_os/debugging/index.html b/files/zh-tw/archive/b2g_os/debugging/index.html
deleted file mode 100644
index 1084a2f201..0000000000
--- a/files/zh-tw/archive/b2g_os/debugging/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: 在 Boot to Gecko 上除錯
-slug: Archive/B2G_OS/Debugging
-translation_of: Archive/B2G_OS/Debugging
----
-<p>基本上,在 B2G 有兩種除錯的方法。開發者可以在電腦上藉由 Firefox 15 以上的版本來 執行 <a href="/en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox" title="en/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox">Gaia</a> (以及很多相容於 B2G 的 <a href="/en/Apps" title="en/Apps">web apps</a> )來進行高階的除錯。這樣會讓開發者可以利用 Firefox 裡面優秀的<a href="/en/Tools" title="en/Tools"> 開發工具 </a>開發工具來幫忙除錯,就像是在抓 web app 的 bug 一樣。</p>
-<p>開發者也可以在 gdb 除錯器的控制之下,使用自己的行動裝置來執行 B2G。</p>
-<h2 id="使用_Firefox_除錯_Gaia_和_web_apps">使用 Firefox 除錯 Gaia 和 web apps</h2>
-<p>&lt;快馬加鞭中,請耐心等待&gt;</p>
-<h2 id="使用_gdb_除錯_B2G">使用 gdb 除錯 B2G</h2>
-<p>用 gdb 來對 Boot to Gecko 除錯很簡單。只要用 <code>run-gdb.sh</code> 這個 script 指令,就會重新啟動 B2G 並在 gdb 的控制之下執行:</p>
-<pre>./run-gdb.sh
-</pre>
-<p>如果 B2G 已經在執行了,而現在只想要 attach,就要執行下面這個 script 指令:</p>
-<pre>./run-gdb.sh attach
-</pre>
-<h2 id="OOP">OOP</h2>
-<p>首先,用「MOZ_DEBUG_CHILD_PROCESS=1 ./run-gdb.sh」啟動 b2g,接著當啟動 OOP app 的時候,會顯示 plugin-container 的 PID。使用&lt;./run-gdb.sh attach PID&gt;啟動第二個 gdb instance。</p>
-<p>必須在很短的時間之內啟動除錯器的第二個 instance,且在啟動的短時間之內,就要按 c 繼續。</p>
-<h2 id="更多...">更多...</h2>
-<p>我們需要在這裡添加更多內容。</p>
diff --git a/files/zh-tw/archive/b2g_os/firefox_os_build_prerequisites/index.html b/files/zh-tw/archive/b2g_os/firefox_os_build_prerequisites/index.html
deleted file mode 100644
index dd2fd2efb5..0000000000
--- a/files/zh-tw/archive/b2g_os/firefox_os_build_prerequisites/index.html
+++ /dev/null
@@ -1,606 +0,0 @@
----
-title: Firefox OS build prerequisites
-slug: Archive/B2G_OS/Firefox_OS_build_prerequisites
-translation_of: Archive/B2G_OS/B2G_OS_build_prerequisites
----
-<div class="summary">
-<p><span class="seoSummary">在您開始取得程式碼並建立您的Firefox OS作業系統以前,需要一個設定正確的編譯環境,請參考<a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions">build system</a>這個頁面,裡面有詳細的說明。這裡簡單的提一下,您可以在64位元的Linux以及OS X上面作編譯。</span></p>
-</div>
-
-<div class="note">
-<p><strong>註</strong>: 若您計畫編譯一個Firefox OS並裝載在一隻手機上,請確認該手機在編譯動作開始時"並未"跟您的電腦連接,正確的連結時機會在詳細步驟中說明。</p>
-</div>
-
-<h2 id="支援的裝置或模擬器">支援的裝置或模擬器</h2>
-
-<p>您需要一個目標來裝載您建立的Firefox OS,他可以是一個真實的裝置或是一個模擬器。我們支援數種裝置但一個裝製常常有多種的版本,這樣的情況我們只支援特定的版本。另外不同的裝置我們的支援程度也稍有不同。</p>
-
-<div class="note">
-<p>註:Mozilla的<a href="https://github.com/mozilla-b2g/B2G">B2G source code</a>是一個B2G的參考實現,而手機製造商是可以自由的為他們的手機做出patch以及修改的。舉例來說,您在市場上購買的Alcatel One Touch這隻手機裡面的B2G就是一個製造商的版本。這樣B2G版本的差異安裝在上面的應用程式是沒有差異的,不過在平台這一層是有一些差別的。由於Nexus 4的版本是直接由Mozilla維護的,因此跟其他第三級支援裝置比較起來我們各版本的Gecko應該更能直接在Nexus 4上直接無問題的使用。</p>
-</div>
-
-<h3 id="第一級支援裝置">第一級支援裝置</h3>
-
-<p>第一級支援裝置是一些主要開發用的裝置,因此一般來說能得最快的新功能與新的bug fixes。</p>
-
-<dl>
- <dt>Keon</dt>
- <dd>Keon 即為 <a href="http://www.geeksphone.com/" title="http://www.geeksphone.com/">Geeksphone</a> Keon 裝置, 也是最初的開發機種中的一個。 請注意這個裝置上的Forefox OS是由 Geeksphone提供.</dd>
- <dt>Inari</dt>
- <dd>Inari 是另外一個測試裝置. 在您建立Firefox OS給ZTE Open的裝置時請使用這個configuration (configuration的細節後面會提到)。<strong>注意:</strong> 較新版本的Firefox版本可能會無法在ZTE Open手機的default boot partition中開機成功。</dd>
- <dt>Flame</dt>
- <dd>Flame 是 Mozilla 最新的 Firefox OS 標準參考開發裝置,除了Flame這隻手機以外,在您建立給 ZTE Open C 這個裝置的Firefox OS時請也在configuration 中選用Flame(configuration 的細節後面會提到)。 兩隻手機都用一樣的設定原因是他們都是基於 Android jellybean。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators">模擬器 (ARM 與 x86)</a></dt>
- <dd>有兩種模擬器,一種是模擬ARM code,另外一種直接用x86 code執行所有的功能. 更多相關資訊請參考<a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators" title="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators">Learn more about installing and using the emulators</a>.</dd>
- <dd><strong>請注意基本上您應該不要使用 x86 模擬器 — 這個模擬器安裝不易而且支援的程度不是很理想。</strong></dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client" title="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client">桌面 client 程式</a></dt>
- <dd>您也可以建立一個桌面版本的Firefox OS; 這個版本是讓 <a href="/en-US/docs/Mozilla/Gecko" title="/en-US/docs/Mozilla/Gecko">Gecko</a> 跑在一個 <a href="/en-US/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a> 程式裡面讓您可以使用 <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Introduction_to_Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Introduction_to_Gaia">Gaia</a> 提供的使用者界面.</dd>
- <dt>Flatfish</dt>
- <dd>Flatfist 是第一隻 Firefox OS 平板版本,雖然某些功能像是<a href="/zh-TW/docs/Web/Guide/Telephony">Web Telephony</a> 沒有辦法使用。在編譯 Flatfish 時,會需要一些<a href="https://github.com/flatfish-fox/flatfish-kernel">額外的設定</a>。</dd>
-</dl>
-
-<p>另外雖然可能很顯而易見,還是提一下您在建立 <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client" title="en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client">桌面 client 程式</a> 或任意一個 <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators">模擬器</a> 時是不需要手機的。</p>
-
-<h3 id="第二級支援裝置">第二級支援裝置</h3>
-
-<p><span id="answer_long1" style="display: block;">一般來說,Firefox的功能在第二級支援裝置上都是可用的,這一些裝置被許多開發者使用(特別是應用程式開發者),因此並不需要太過即時的得到Firefox OS上新的改變。</span></p>
-
-<dl>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Samsung_Nexus_S" title="/en-US/docs/Mozilla/Firefox_OS/Samsung_Nexus_S"><span class="link-https">Samsung Nexus S</span></a></dt>
- <dd>已知的 Nexus S 支援型號為 GT-I9020A 以及 GT-I9023,其他的型號可能可以支援</dd>
- <dt>Samsung Nexus S 4G</dt>
- <dd>SPH-D720 這個型號被當作第二級的支援裝置</dd>
-</dl>
-
-<h3 id="第三級支援裝置">第三級支援裝置</h3>
-
-<p><span id="answer_long1" style="display: block;">給這一些裝置的Firefox OS是可以被建立的,不過工程師並不會時常用這一些裝置做開發,因此穩定度與功能上面會明顯的比前兩級的支援裝置要不足。</span></p>
-
-<dl>
- <dt>Samsung Galaxy S2</dt>
- <dd>只有i9100這個型號是被正式支援的。(i9100P 應該也可以支援因為差異只在 NFC 晶片)</dd>
- <dt>Samsung Galaxy Nexus</dt>
- <dd>現在看起來所有的型號都可以支援</dd>
- <dt>Nexus 4</dt>
- <dd>有一些在 IRC 上的使用者測試並成功過。 如果機器本身是 Android 4.4 也許需要降回 4.3 (Android <a href="https://developers.google.com/android/nexus/images#occamjwr66y">images available from Google</a>)</dd>
- <dt>Nexus 5</dt>
- <dd>一些在 IRC 上的使用者測試並成功過。</dd>
- <dt>Tara</dt>
- <dd>Tara 是另一之測試裝置. Tara 的 manifest 只在 master branch. 取得 Tara 的 script 為 "BRANCH=master ./config.sh tara"。</dd>
- <dt>Unagi</dt>
- <dd>Unagi 用來當作中低階智慧型手機的測試與開發裝置。很多 Firefox OS的開發者使用 Unagi 作開發。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Pandaboard" title="/en-US/docs/Mozilla/Firefox_OS/Pandaboard">Pandaboard</a></dt>
- <dd>Pandaboard 是一片基於 OMAP 4 架構的開發板,作為在各種不同行動平台的開發使用。</dd>
-</dl>
-
-<div class="warning"><strong>重要</strong>: 只有基於 <strong>Android 4</strong> (aka <strong>Ice Cream Sandwich</strong>) 以上的裝置才被支援。若您手上的裝置是上面提到的其中之一但 Android 的版本比較舊,請務必在做任何動作前先將它升級。</div>
-
-<div class="note">
-<p><strong>註</strong>: 第二級與第三級支援裝置沒有硬體的 Home 按鈕,不過會有一個軟體的 Home 按鈕</p>
-
-<p>所有第一級支援裝置都有一個硬體的 Home 按鈕,這個按鈕可以讓使用者直接回到 Home screen。現在市面上大多數基於 ICS 的 Android 裝置使用在螢幕上的觸碰按鍵。我們現在提供一個虛擬的 Home 按鈕給這一些缺少硬體按鍵的裝置。若您發現這個虛擬的 Home 按鈕沒出現,請打開 Setting 程式,然後到<span style="font-size: 14px; line-height: 1.5em;"> <a href="/en-US/Firefox_OS/Debugging/Developer_settings">Developer settings</a> 並選取 <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Enable_software_home_button">Enable software home button</a>。</span></p>
-
-<p><span style="font-size: 14px; line-height: 1.5em;">在 Firefox OS 1.4 版有另外一個 developer option 叫做 "Home gesture enabled"; 開啟這的選項表示虛擬的 Home 按鈕將消失,取而代之的是一個由螢幕下方向上滑動的手勢。</span></p>
-</div>
-
-<h2 id="使用_GNULinux_的需求">使用 GNU/Linux 的需求</h2>
-
-<div class="warning">
-<p><strong>重要</strong>: 即使您沒有要編譯自己的 Boot 2 Gecko,而只有要使用到<a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/make_options_reference"> Gaia's make system</a>,  您仍需要正確版本的 <strong>Python</strong> 與 <strong>Node.js</strong>。</p>
-</div>
-
-<p>在 Linux 建立 Firefox OS, 您需要:</p>
-
-<ul>
- <li>一種 <strong>64 bit 的 GNU/Linux</strong> distribution (建議Ubuntu 14.04).</li>
- <li>至少 <strong>4 GB</strong> 的記憶體.</li>
- <li>至少 <strong>40 GB</strong> 的硬碟空間.</li>
-</ul>
-
-<p>這其實比最低需求要高不過常常在建立 Firefox OS 的過程出現問題只是因為資源不太夠。一個常見的例子為 "<span style="line-height: 1.5;"><strong>arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)</strong>".</span></p>
-
-<p>下面列出個工具也必須被安裝:</p>
-
-<ul>
- <li><strong>autoconf 2.13</strong></li>
- <li><strong>bison</strong></li>
- <li><strong>bzip2</strong></li>
- <li><strong>ccache</strong></li>
- <li><strong>curl</strong></li>
- <li><strong>flex</strong></li>
- <li><strong>gawk</strong></li>
- <li><strong>git</strong></li>
- <li><strong>gcc / g++ / g++-multilib</strong></li>
- <li><strong>java sdk (jdk)</strong></li>
- <li><strong>lzop</strong></li>
- <li><strong>make</strong></li>
- <li><strong>OpenGL shared libraries</strong></li>
- <li><strong>patch</strong></li>
- <li><strong>X11 headers</strong></li>
- <li><strong>32-bit ncurses</strong></li>
- <li><strong>32-bit zlib</strong></li>
-</ul>
-
-<h3 id="64_位元安裝需求">64 位元安裝需求</h3>
-
-<p>這個部份列出了一些在不同的Linux發行版本中你必須執行的指令, 以利於安裝所有的需求來建構 Firefox OS.</p>
-
-<h4 id="Ubuntu_12.04_Linux_Mint_13_Debian_6">Ubuntu 12.04 / Linux Mint 13 / Debian 6</h4>
-
-<p>在終端機中執行下列指令:</p>
-
-<pre class="language-html"><code class="language-html">sudo apt-get update
-sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libasound-dev libgconf2-dev libgl1-mesa-dev libx11-dev lzop make zip</code></pre>
-
-<p>如果您將建構 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Flame">"Flame"</a> reference device 或是 Nexus 5, 請在終端機執行以下指令:</p>
-
-<pre>sudo apt-get install libxml2-utils </pre>
-
-<p>您可以透過<a href="http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html">這個ppa</a>來安裝 jdk。</p>
-
-<p>And see the above comments about emulator build issues!</p>
-
-<h4 id="Ubuntu_12.10_Debian_7">Ubuntu 12.10 / Debian 7</h4>
-
-<p>在終端機中執行下列指令:</p>
-
-<pre>sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip</pre>
-
-<p>In addition to the emulator build issues discussed above, the compiler will default to <code>gcc-4.7</code>, which will fail to build with an error along the following lines:</p>
-
-<p>"<code>KeyedVector.h:193:31: error: indexOfKey was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"</code></p>
-
-<p>To fix this, you will need to specify GCC 4.6 as the default host compiler after having retrieved the B2G sources: Read <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Changing the default host compiler</a> to find out how to do it.</p>
-
-<p class="note">In a fresh Ubuntu 12.10 install, you'll get an error about unmet dependencies for ia32-libs. The following commands fix it:</p>
-
-<pre>sudo dpkg --add-architecture i386
-sudo apt-get update
-sudo apt-get install ia32-libs</pre>
-
-<h4 id="Ubuntu_13.04">Ubuntu 13.04</h4>
-
-<p>Run the following command in Terminal:</p>
-
-<pre>sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip</pre>
-
-<p>In addition to the emulator build issues discussed above, the compiler will default to <code>gcc-4.7</code>, which will fail to build with an error along the following lines:</p>
-
-<p>"<code>KeyedVector.h:193:31: error: indexOfKey was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"</code></p>
-
-<p>To fix this, you will need to specify GCC 4.6 as the default host compiler after having retrieved the B2G sources: Read <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Changing the default host compiler</a> to find out how to do it.</p>
-
-<h4 id="Ubuntu_13.10">Ubuntu 13.10</h4>
-
-<p>With Ubuntu 13.10, multi-arch packages are now the main way to support multiple architectures (e.g. 32-bit on a 64-bit install).  You must tell your Ubuntu system that you want to support 32-bit packages as well:<br>
-  </p>
-
-<pre>sudo dpkg --add-architecture i386
-sudo apt-get update</pre>
-
-<p>Once you've completed that, then you can install the necessary packages:</p>
-
-<pre style="font-family: 'Open Sans', sans-serif; line-height: 21px;">sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip libxml2-utils
-
-sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 1
-
-sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 2
-
-sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 1
-
-sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 2
-
-sudo update-alternatives --set gcc "/usr/bin/gcc-4.6"
-
-sudo update-alternatives --set g++ "/usr/bin/g++-4.6" </pre>
-
-<h4 id="Ubuntu_14.04">Ubuntu 14.04</h4>
-
-<p>Follow the instructions given for Ubuntu 13.10.</p>
-
-<h4 id="Fedora_17181920">Fedora 17/18/19/20</h4>
-
-<p>Run the following command in Terminal:</p>
-
-<pre class="note">sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget</pre>
-
-<p>In addition to the above you will need GCC 4.6.x in order to compile the project:</p>
-
-<ul>
- <li><a href="http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc18.tar.xz">Pre-compiled GCC 4.6.x for  Fedora 17/18</a></li>
- <li><a href="http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz">Pre-compiled GCC 4.6.x for Fedora 19/20</a></li>
-</ul>
-
-<p>Download the right version for your Fedora installation, then install it to <code>/opt,</code> with the following command on Fedora 17/18:</p>
-
-<pre class="note">curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc18.tar.xz
-sudo tar -x -a -C /opt -f gcc-4.6.4-fc18.tar.xz
-</pre>
-
-<p>And with the following command for Fedora 19/20:</p>
-
-<pre class="note">curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz
-sudo tar -x -a -C /opt -f gcc-4.6.4-fc19.tar.xz
-</pre>
-
-<p>You will need to specify GCC 4.6.x as the default host compiler after having retrieved the B2G sources: Read <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Changing the default host compiler</a> to find out how to do it.</p>
-
-<p>If build fails with the compiler complaining about not finding libmpc.so.2, install the package compat-libmpc</p>
-
-<h4 id="Arch_Linux"><strong>Arch Linux</strong></h4>
-
-<p>Run the following command in Terminal:</p>
-
-<pre class="note">sudo <span><span>pacman -S --needed </span></span><span><span>alsa-lib </span></span><span><span>autoconf2.13</span></span><span><span> bison</span></span><span><span> ccache</span></span><span><span> </span></span><span><span>curl firefox </span></span><span><span>flex </span></span><span><span>gcc-multilib </span></span><span><span>git </span></span><span><span>gperf </span></span><span><span>libnotify </span></span><span><span>libxt </span></span><span><span>libx11 mesa multilib-devel </span></span><span><span>wget wireless_tools </span></span><span><span>yasm</span></span><span><span> zip </span></span><span><span>lib32-mesa </span></span>lib32-mesa-libgl <span><span>lib32-ncurses lib32-readline</span></span><span><span> </span></span><span><span>lib32-zlib</span></span></pre>
-
-<p>To install the lib32-* packages you need to have the multilib repository enabled.</p>
-
-<p>B2G <a href="https://developer.mozilla.org/en-US/Firefox_OS/Building#KeyedVector.h.3A193.3A31.3A_error.3A_indexOfKey_was_not_declared_in_this_scope">can only be compiled with gcc4.6.4</a>, and because Arch Linux always has bleeding edge software you will need to install <a href="https://aur.archlinux.org/packages/gcc46-multilib">gcc46-multilib from AUR</a>. Note that you will have to edit the PKGBUILD and add <code>staticlibs</code> to the <code>options</code> array, or gcc will be unable to compile B2G and give you a <code>cannot find -lgcc</code> error when compiling. You will also need to add the following to your <code>.userconfig</code> file:</p>
-
-<pre class="language-html">export CC=gcc-4.6.4
-export CXX=g++-4.6.4</pre>
-
-<p>By default, Arch Linux uses Python3. You'll have to force it to use the old python2. You can do that by linking the python2 executable to python but this is discouraged and considered error-prone. This will also break python 3 if it is installed on your system. A better way is to use <code>virtualenv</code>/<code>virtualenvwrapper</code>:</p>
-
-<pre><span><span>sudo pacman -S python-virtualenvwrapper
-</span></span>source /usr/bin/virtualenvwrapper.sh
-mkvirtualenv -p `which python2` firefoxos
-workon firefoxos
-</pre>
-
-<p>Android will complain that you need make 3.81 or make 3.82 instead of 4.0. You can download <a href="https://aur.archlinux.org/packages/make-3.81/">make 3.81 from AUR</a>.  This will install the make-3.81 binary on your path, you need to create a symlink named make to a location earlier in the PATH variable for the build to use the correct version.</p>
-
-<pre>mkdir -p ~/bin
-ln -s `which make-3.81` ~/bin/make
-export PATH=~/bin:$PATH
-</pre>
-
-<p>Android also needs the Java6 SDK and Arch only has Java7.  Unfortunately the aur build is broken, but you can still download the <a href="http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR">Java 6 SDK</a> and install it manually.  You will then need to put it in your path.</p>
-
-<pre>cp ~/Downloads/jdk-6u45-linux-x64.bin /opt
-su
-cd /opt
-chmod +x jdk-6u45-linux-x64.bin
-./jdk-6u45-linux-x64.bin
-exit
-ln -s /opt/jdk1.6.0_45/bin/java ~/bin/java
-
-</pre>
-
-<h4 id="Gentoo_Linux"><strong>Gentoo Linux</strong></h4>
-
-<h5 id="Installing_ccache">Installing ccache</h5>
-
-<p>You will need to install <strong><a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&amp;chap=3#doc_chap3">ccache</a></strong>, a tool for caching partial builds.</p>
-
-<pre><span><span># emerge -av ccache</span></span>
-</pre>
-
-<p>Because ccache is known to frequently cause support issues, Gentoo encourages you to use it <em>explicitly</em> and <em>sparingly</em>.</p>
-
-<p>To enable the required use of ccache, on <em>the subsequent step</em> of this guide where the <code>./build.sh</code> script is called, Gentoo users should instead run the command with an explicitly extended path, ie.</p>
-
-<pre><span><span><strong>PATH=/usr/lib64/ccache/bin:$PATH</strong> ./build.sh</span></span>
-</pre>
-
-<h5 id="Generating_Partition_Images">Generating Partition Images</h5>
-
-<p>If you are building B2G for actual physical hardware, then you may at some point also wish to generate some partition images for upload to your device. (For example, to restore backed up files to the device via the <strong><em>fastboot</em></strong> utility)</p>
-
-<p>The filesystem image format used in this case is YAFFS2 (Yet Another Filesystem 2). Gentoo has support for the very latest (ie. git HEAD) <code>yaffs2-utils</code> userland package in portage. (Note: You will also need kernel patches if you want to mount YAFFS2 images, but this is not really required since you can deconstruct and rebuild them instead.)</p>
-
-<pre># emerge --autounmask-write yaffs2-utils; etc-update; emerge -av yaffs2-utils</pre>
-
-<p>In order to generate such an image, simply change to the parent directory of the partition filesystem tree you wish to package, and issue a command like this:</p>
-
-<pre>mkyaffs2image system/ system.img</pre>
-
-<h2 id="使用_Mac_OS_X_的需求">使用 Mac OS X 的需求</h2>
-
-<p>要在Mac OS X 上建構 Firefox OS, 您必須遵循一些步驟, 以下將會詳細說明. 我們也會提出一些您可能在特殊情況下會遇到的錯誤, 以及他們的解決方法.</p>
-
-<div class="note">
-<p><strong>Note: Configuring and Building B2G for Keon WON'T WORK on a Mac</strong>. You'll need to use Linux to build B2G for this device.</p>
-</div>
-
-<h3 id="版本相容性"><strong>版本相容性</strong></h3>
-
-<p>XCode 4.2 以下的版本與 Mac OS X 10.9 (a.k.a. "Mavericks") 並不相容, 所以您可能會很驚訝地發現Firefox OS會建構錯誤. 基本上您無法在 Mac OS X 10.9 以上的版本建構 ICS emulator, 並且 flatfish 在XCode 5.x系列會無法建構.</p>
-
-<table class="standard-table">
- <caption>Mac OS X 10.9.x 的版本相容性</caption>
- <tbody>
- <tr>
- <td> </td>
- <td>emulator (ICS)</td>
- <td>flatfish (JB-4.2)</td>
- <td>emulator-jb (JB-4.3)</td>
- <td>emulator-kk (KitKat-4.4)</td>
- </tr>
- <tr>
- <td>XCode 4.3.3</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">X</td>
- </tr>
- <tr>
- <td>XCode 4.4.1</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">O[1]</td>
- <td style="text-align: center;">O</td>
- <td style="text-align: center;">O</td>
- </tr>
- <tr>
- <td>XCode 4.5.2</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">O[1]</td>
- <td style="text-align: center;">O</td>
- <td style="text-align: center;">O</td>
- </tr>
- <tr>
- <td>XCode 4.6.3</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">O[1]</td>
- <td style="text-align: center;">O</td>
- <td style="text-align: center;">O</td>
- </tr>
- <tr>
- <td>XCode 5.0.2</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">O</td>
- <td style="text-align: center;">O</td>
- </tr>
- <tr>
- <td>XCode 5.1.1</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">X</td>
- <td style="text-align: center;">O</td>
- <td style="text-align: center;">O</td>
- </tr>
- </tbody>
-</table>
-
-<ol>
- <li>您必須將設定環境變數 <strong>BUILD_MAC_SDK_EXPERIMENTAL=1</strong> 並將其 export  以建構 flatfish.</li>
-</ol>
-
-<h3 id="安裝_XCode_Command_Line_Utilities"><strong>安裝 XCode Command Line Utilities</strong></h3>
-
-<p>您必須安裝 Xcode's Command Line Utilities. 您可以只下載 Command Line Utilities, 只需要在 <a href="https://developer.apple.com/downloads/" title="https://developer.apple.com/downloads/">Apple's developer downloads page</a> 挑選您的 OS X 版本, 然而如果您想要完整的 Xcode suite, 你可以在 Mac App Store <a href="http://itunes.apple.com/us/app/xcode/id497799835?mt=12">安裝</a>他們<span style="line-height: 1.572;">. </span></p>
-
-<p>Xcode 4.3.1 (OS X 10.7 "Lion") 以及其他較新的版本如 4.4.1+ (也就是 Mac OS X 10.8 "Mountain Lion"), 並不會自動包含我們所需的 Command Line Utilities. 當您安裝 Xcode 時, 請確認進入 Preferences, then the Downloads panel, and install the Command Line Utilities. 另外, 請確認您至少有 20 GB 的硬碟空間.</p>
-
-<p><img alt="Screenshot of Xcode Downloads Command Line Tools" src="/files/4557/xcode_downloads_command_line_tools.png" style="height: 528px; width: 750px;"></p>
-
-<div class="note">
-<p><strong>Note:</strong> The Firefox OS 模擬器 需要 Core 2 Duo processor 或較新的處理器; 也就是, 一個相容於Mac OS X 10.7 "Lion"的作業系統. 您的作業系統不一定要是OS X Lion, 您只需要與其相容. 也就是您當然可以建構Firefox OS 在較舊版本的Mac 上.</p>
-</div>
-
-<div class="note">
-<p><strong>Note:</strong> XCode 4.2.x or older is not compatible with Mac OS X 10.9 or above, and XCode 4.3.x has no platform SDK for 10.8. Please install a newer version. If you're also working on flatfish, please make sure any of XCode 4.4, 4.5, and 4.6 is available.</p>
-</div>
-
-<h3 id="Run_Firefox_OS_Mac_Bootstrap">Run Firefox OS Mac Bootstrap</h3>
-
-<p>Next, open a terminal and run the following command:</p>
-
-<pre class="brush: bash">curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash</pre>
-
-<p>This will pull and run a bootstrap script that makes sure you have all the prerequisites met to build the emulator. It will also prompt you for permission to install anything you're missing, and provide warnings and suggested fixes to problems. The script will check for and install the following items:</p>
-
-<ul>
- <li><code>git</code></li>
- <li><code>gpg</code></li>
- <li><code>ccache</code></li>
- <li><code>yasm</code></li>
- <li><code>autoconf-213</code></li>
- <li><code>gcc-4.6</code></li>
- <li><code>gnu-tar</code></li>
- <li><code>homebrew</code></li>
-</ul>
-
-<h4 id="Xcode_wrangling">Xcode wrangling</h4>
-
-<p>If you have already upgraded to Xcode 4.4+ and get the message that Xcode is outdated, check the Xcode path with:</p>
-
-<pre>xcode-select -print-path</pre>
-
-<p>If it still points to <code>/Developer</code> you can update the path with:</p>
-
-<pre>sudo xcode-select -switch /Applications/Xcode.app</pre>
-
-<h4 id="Making_the_Mac_OS_X_10.6_SDK_available">Making the Mac OS X 10.6 SDK available</h4>
-
-<p>You also need to have the Mac OS X 10.6 SDK available. The SDK needs to be available at</p>
-
-<pre>/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</pre>
-
-<p>If it cannot be found there you will need to extract and copy it from Xcode 4.3. To do this:</p>
-
-<ol>
- <li>Download the XCode 4.3 .dmg file from the <a class="external" href="https://developer.apple.com/downloads/index.action">Apple Developer</a> portal (you'll need an <a href="https://developer.apple.com/register/index.action" title="https://developer.apple.com/register/index.action">Apple Developer account</a>).</li>
- <li>Download the utility <a href="http://www.charlessoft.com/" title="http://www.charlessoft.com/">Pacifist</a> and use it to extract the 10.6 SDK from the XCode 4.3 .dmg file. Click on the "Extract Package" button, find the SDK by searching for 10.6 in the search box, then <em>Ctrl + click</em> on the MacOSX10.6.sdk directory and Extract it to a suitable location.</li>
- <li>Add a symlink from the 10.6 SDK location to the <code>/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</code> directory. For example, if you put the 10.6 SDK on your desktop, the comment would be</li>
-</ol>
-
-<pre>ln -s /Users/<em>&lt;yourusername&gt;</em>/Desktop/MacOSX10.6.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</pre>
-
-<div class="note">
-<p><strong>Note:</strong> This is not necessary for Mac OS X 10.9 or above, because 10.6 SDK is for ICS and ICS doesn't supports Mac OS X 10.9.</p>
-</div>
-
-<h3 id="Be_aware_of_Mac_file_system_case_sensitivity">Be aware of Mac file system case sensitivity</h3>
-
-<p>By default, Mac OS X ships with a case-insensitive file system.  This is problematic because the Linux kernel has a number of files with the same name, but different case.  For example, see the header files <code>xt_CONNMARK.h</code> and <code>xt_connmark.h</code>.  This results in a number of files appearing to be modified in <code>/kernel</code> after a fresh <code>./config.sh</code>.</p>
-
-<p>In many cases you can run the build just fine; for some platforms, however, you may encounter the following error:</p>
-
-<pre><span class="quote">ERROR: You have uncommited changes in kernel
-You may force overwriting these changes
-with |source build/envsetup.sh force|
-
-ERROR: Patching of kernel/ failed.</span></pre>
-
-<p><span class="quote">Please see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867259" title="https://bugzilla.mozilla.org/show_bug.cgi?id=867259">bug 867259</a></span> for more discussion and possible fixes for this problem.</p>
-
-<p>Alternatively, it will always be safest to build on a case sensitive file system.  The easiest way to do this is to create a separate, mountable disk image with case-sensitivity enabled.  You can do this using Apple's Disk Utility application or from the command line:</p>
-
-<pre>hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.sparseimage</pre>
-
-<p>Mount the drive with:</p>
-
-<pre>open ~/firefoxos.sparseimage</pre>
-
-<p>Change into the mounted drive with:</p>
-
-<pre>cd /Volumes/firefoxos/</pre>
-
-<p>You can then check out the code and compile from this location without worrying about case-sensitivity problems.</p>
-
-<h3 id="Mountain_Lion_homebrew_gotcha">Mountain Lion homebrew gotcha</h3>
-
-<div>
-<div>If you are on Mountain Lion and you receive an error during the installation of the dependencies via homebrew, such as:</div>
-</div>
-
-<div>
-<pre>clang: error: unable to execute command: Segmentation fault: 11</pre>
-... try reinstalling the dependency manually adding the <code>--use-gcc</code> flag, for example:
-
-<pre>brew install mpfr --use-gcc</pre>
-</div>
-
-<h3 id="Follow_Samsung_Galaxy_S2_extra_steps">Follow Samsung Galaxy S2 extra steps</h3>
-
-<p>If you plan to build for the Samsung Galaxy S2, you will also need to install heimdall. See {{ anch("Installing heimdall") }} for details. This is <strong>not</strong> done for you by the bootstrap script!</p>
-
-<div class="note"><strong>Note:</strong> If you have installed the <a class="external" href="http://www.samsung.com/us/kies/" title="http://www.samsung.com/us/kies/">Samsung Kies</a> tool, which is used to manage the contents of many Samsung phones, you will have to remove it before you can flash Firefox OS onto your device. You can use the standard application removal process on Windows; on Mac, the Kies install disk image has a utility to fully remove Kies from your system. Flashing <strong>will not work</strong> if you have Kies installed. If you forget to remove Kies, the build system will detect it and remind you to uninstall it. Note also that the uninstall tool does not correctly remove the folder <code>~/Library/Application Support/.FUS</code>, and leaves a reference to a utility there in your user startup items list. You will want to remove these manually.</div>
-
-<h3 class="note" id="Fix_libmpc_dependency_if_broken">Fix libmpc dependency if broken</h3>
-
-<p><code>gcc 4.6</code> was built with <code>libmpc 0.9</code>; if you then use homebrew to update packages, libmpc gets updated to version 1.0, but homebrew doesn't rebuild <code>gcc 4.6</code> after the library version changes. So you need to create a symlink to make things work again, like this:</p>
-
-<pre>cd /usr/local/lib/
-ln -s libmpc.3.dylib libmpc.2.dylib</pre>
-
-<h3 id="Optional_Install_HAX">Optional: Install HAX</h3>
-
-<p>Intel provides a special driver that lets the B2G emulator run its code natively on your Mac instead of being emulated, when you're using the x86 emulator. If you wish to use this, you can <a class="external" href="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/" title="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/">download and install</a> it. It's not required, but it can improve emulation performance and stability.  </p>
-
-<p>Before you install HAX you will need to install the <a href="http://developer.android.com/sdk/index.html" title="http://developer.android.com/sdk/index.html">Android SDK</a>.</p>
-
-<h2 class="note" id="Install_adb">Install adb</h2>
-
-<p>The build process needs to pull binary blobs from the Android installation on the phone before building B2G (unless you're building the emulator, of course).  For this, you will need <code>adb</code>, the Android Debug Bridge. Our <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">Installing ADB</a> article explains how to get <code>adb</code> installed.</p>
-
-<div class="warning">
-<p>Note for future when you start to use adb: adb needs the phone's lock screen to be unlocked in order to see your phone (at least in later versions of Firefox OS). You'll probably want to disable the lock screen (we'll get to how later in the build instructions).</p>
-</div>
-
-<h2 class="note" id="Install_heimdall">Install heimdall</h2>
-
-<p>Heimdall is a utility for flashing the Samsung Galaxy S2. It's used by the Boot to Gecko flash utility to replace the contents of the phone with Firefox OS, as well as to flash updated versions of B2G and Gaia onto the device. You'll need it if you want to install Firefox OS on a Galaxy S2; it is <strong>not</strong> needed for any other device. For other devices, we build and use the fastboot utility instead.</p>
-
-<div class="note"><strong>Note:</strong> Again, it's important to note that this is <strong>only required for installing Firefox OS on the Samsung Galaxy S2</strong>.</div>
-
-<p>There are two ways to install heimdall:</p>
-
-<ul>
- <li>You can <a class="link-https" href="https://github.com/Benjamin-Dobell/Heimdall" title="https://github.com/Benjamin-Dobell/Heimdall">download the code</a> GitHub and build it yourself.</li>
- <li>Use a package manager to install it.
- <ul>
- <li>On Linux: <code>sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev</code></li>
- <li>On Mac, you can <a class="link-https" href="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg" title="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg">download an installer package</a> and use that.</li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Configure_ccache">Configure ccache</h2>
-
-<p>The B2G build process uses ccache. The default cache size for ccache is 1GB, but the B2G build easily saturates this; around 3GB is recommended. You can configure your cache by running the following command inside terminal:</p>
-
-<pre><code>$ ccache --max-size 3GB</code></pre>
-
-<h2 id="For_Linux_configure_the_udev_rule_for_your_phone">For Linux: configure the udev rule for your phone</h2>
-
-<div class="note">
-<p><strong>Note</strong>: This section is specific to Linux; Mac OS X has the necessary device permissions set up already.</p>
-</div>
-
-<p>Next, you need to confingure the udev rule for your phone,</p>
-
-<p>You can get the <a href="https://developer.android.com/tools/device.html#VendorIds">USB vendor ID</a> by running <code>lsusb</code> with your phone plugged in, but typically it's Google <code>18d1,</code> Samsung <code>04e8</code>, ZTE <code>19d2</code>, Geeksphone/Qualcomm <code>05c6</code>. Add this line in your <code>/etc/udev/rules.d/android.rules</code> file (replacing <code>XXXX</code> with the ID for your device):</p>
-
-<h2 id="相容的">相容的</h2>
-
-<pre>SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"</pre>
-
-<p>Take ZTE for example, the content in android.rules will be</p>
-
-<pre style="font-size: 14px;">SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"</pre>
-
-<div class="note">
-<p><span style="line-height: 1.572;">If the file doesn't exist, create it. The <code>rules.d</code> directory is usually read only by default, so you may have to use <code>chmod</code> to make the directory writeable, or the file, or both.</span></p>
-</div>
-
-<p><span style="line-height: 1.572;">Once you've saved the file, and closed it,  make the file readable:</span></p>
-
-<pre>sudo chmod a+r /etc/udev/rules.d/android.rules
-</pre>
-
-<p>Now that the udev rules have been updated, restart the udev daemon.</p>
-
-<p><strong>Ubuntu</strong></p>
-
-<pre>sudo service udev restart</pre>
-
-<p><strong>Fedora 20</strong></p>
-
-<pre>sudo systemctl restart systemd-udevd.service</pre>
-
-<p>Finally, unplug and the USB cable but don't replug it in because we need to enable remote debugging on the phone first.</p>
-
-<h2 id="Enable_remote_debugging">Enable remote debugging</h2>
-
-<p>Before you plug your phone back into your USB port, put it USB developer mode. This allows you to debug and flash the phone. To enable developer mode, on your phone enable <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Remote_debugging">Remote Debugging</a> in <a href="/en-US/Firefox_OS/Debugging/Developer_settings">Developer settings</a> (this was called Developer mode on older versions.) Once the option is checked, remote debugging is enabled, and you are ready to go.</p>
-
-<p>At this point, connect your phone to your computer via a USB cable (if you created the udev rule before, this will trigger udev to detect the phone and create the device node with the right permissions). Now you can check if you can list your device via the <code>adb devices</code> command (remember that adb can only see your phone when the lock screen is unlocked). If everything has worked ok, you should see an output similar to this (the following is for a Geeksphone Keon):</p>
-
-<pre style="font-size: 14px;">$ adb devices
-List of devices attached
-full_keon device</pre>
-
-<p>If the device did not list as expect, check the file name and the script are all correct (see previous section), then restart the computer and retype the command again. Note also that if your device uses fastboot, the bootloader may identify itself with a different vendor ID than the one you see when the device boots normally.</p>
-
-<h2 id="Backup_the_phone_system_partition">Backup the phone system partition</h2>
-
-<div class="note">
-<p><strong>Note</strong>: You have to do this before you build your device if you do not have an existing system backup, because some libraries will be referenced in build time. These library might be proprietary so we can't provide in our code base.</p>
-</div>
-
-<p>It is recommended that you back up the entire Android system partition on your phone.</p>
-
-<p>You can use this copy of the binary blobs for Android in case you later delete your B2G tree. To do this, run:</p>
-
-<pre>adb pull /system &lt;backup target dir&gt;/system
-</pre>
-
-<p> Depending on the phone, you may also need to pull the <code>/data</code> and/or <code>/vendor</code> directories:</p>
-
-<pre>adb pull /data &lt;backup target dir&gt;/data
-adb pull /vendor &lt;backup target dir&gt;/vendor
-</pre>
-
-<p>If the pull commands fail with an "insufficient permission" message, try the following:</p>
-
-<ul>
- <li>stop and restart the adb server, or if that fails,</li>
- <li>double-check that you have granted root permissions to the <code>adb</code> tool within your custom ROM (e.g. under CyanogenMod, change <em>Settings &gt; System &gt; Developer Options &gt; Root Access</em> to <em>Apps and ADB</em> or <em>ADB only</em>).</li>
- <li>Verify that you have set up the udev rule correctly (see {{ anch("For Linux: configure the udev rule for your phone") }}.</li>
-</ul>
-
-<h2 id="On_to_the_next_step">On to the next step</h2>
-
-<p>At this point, you should be ready to <a href="/en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build" title="en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build">fetch the Firefox OS code</a>!</p>
diff --git a/files/zh-tw/archive/b2g_os/index.html b/files/zh-tw/archive/b2g_os/index.html
deleted file mode 100644
index 7c258aaeea..0000000000
--- a/files/zh-tw/archive/b2g_os/index.html
+++ /dev/null
@@ -1,222 +0,0 @@
----
-title: B2G OS
-slug: Archive/B2G_OS
-translation_of: Archive/B2G_OS
----
-<div class="summary">
-<p><span class="seoSummary">由 Mozilla 所開發的 Firefox OS 全新行動作業系統,即是以 Linux 與 Firefox 的核心 (Gecko 引擎) 為其架構。</span></p>
-</div>
-
-<div class="column-container zone-callout">
-<p>開放源碼的<strong> Firefox OS</strong> 不受任何專利技術的限制,同樣能讓 App 開發者享受 Web 的功能與靈活度,打造出絕佳的消費性 App。</p>
-
-<p>對 Web 開發者而言,首要應先理解「<strong>整個使用者介面就是 Web App</strong>」,且該 Web App 又能顯示並啟動其他的 Web App。不論是專為 Firefox OS 撰寫的 App,或是對使用者介面所進行的任何修正,都能算是以 HTML、CSS、JavaScript 所建構的 Web App,且亦能存取行動裝置的硬體和服務。</p>
-
-<p>從產品的角度來看,Firefox OS 即是 Mozilla 與其 OEM 夥伴,在 <strong>Boot to Gecko (B2G)</strong> 技術上所套用的品牌及支援服務。B2G 為作業系統在工程設計時所用的代號,即透過 Mozilla 與其廣大 Mozilla/開放源碼社群的貢獻者所開發。</p>
-</div>
-
-<section class="outer-apps-box" id="sect1">
-<h2 id="開發_Firefox_OS"><a href="https://developer.mozilla.org/en-US/Apps/Build/installable_apps_for_Firefox_OS">開發 Firefox OS</a></h2>
-
-<h2 id="專屬的_App">專屬的 App</h2>
-
-<p>此為我們的 App 中心,內含資訊可協助開發者撰寫 Open Web App,並安裝於 Firefox OS 之上。</p>
-</section>
-
-<div class="column-container">
-<div class="column-third">
-<h2 id="平台指南"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform">平台指南</a></h2>
-
-<p>平台開發者可了解 Firefox OS 平台的各個元件如何搭配及運作。</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Gecko" title="/en-US/docs/Mozilla/Gecko">Gecko</a></li>
-</ul>
-</div>
-
-<div class="column-third">
-<h2 id="建構與安裝"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Build_and_install">建構與安裝</a></h2>
-
-<p>說明應如何於模擬器、相容裝置、桌機版模擬器上建構\安裝 Firefox OS。</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="Mozilla/Firefox_OS/Firefox OS build prerequisites">Firefox OS 必要建構條件</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build" title="Mozilla/Firefox_OS/Preparing for your first B2G build">準備第一次編譯</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building" title="Mozilla/Firefox_OS/Building">建構 Firefox OS</a></li>
-</ul>
-</div>
-
-<div class="column-third">
-<h2 id="開發者手機"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide">開發者手機</a></h2>
-
-<p>關於特定開發者手機的調整、更新、復原、購買等資訊。</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Flame">Flame</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE Open</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE Open C</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Troubleshooting">疑難排解</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Phone_specs">手機與相關裝置的規格</a></li>
-</ul>
-</div>
-</div>
-
-<div class="column-container equalColumnHeights">
-<div class="zone-callout">
-<h2 id="Firefox_OS_書籍">Firefox OS 書籍</h2>
-
-<p>有許多已出版與編寫中的書籍,涵蓋了 Firefox OS 多樣的開發面相。可參閱 <a href="http://firefoxosbooks.org/">Firefox OS 書籍</a>。</p>
-</div>
-
-<div class="zone-callout">
-<h2 id="其他專頁"><strong>其他專頁</strong></h2>
-
-<ul>
- <li><a href="https://www.mozilla.org/en-US/styleguide/products/firefox-os/"><span class="gmw_">Firefox OS <span class="gm-spell gm_ gm_d869ea80-e62d-d8a6-6929-a6e9983578ff">風格指南</span></span></a></li>
- <li><a class="link-https" href="https://wiki.mozilla.org/B2G/FAQ" title="B2G/FAQ">Mozilla wiki FAQ</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart">支援功能表</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Geeksphone_FAQ" title="/en-US/docs/Mozilla/Firefox_OS/Geeksphone_FAQ">Geeksphone FAQ</a></li>
-</ul>
-</div>
-</div>
-
-<div class="note">
-<p><strong>注意:</strong>我們將透過〈<a href="https://developer.mozilla.org/en-US/docs/MDN/Doc_status/Firefox_OS">Firefox OS 說明文件狀態</a>〉頁面,持續更新 Firefox OS 相關文件。如果你也想貢獻 Firefox OS 說明文件,請參閱此頁面並看看有哪些需要調整的內容!</p>
-</div>
-
-<h2 id="Subnav">Subnav</h2>
-
-<ol>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Introduction">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform" title="Documentation about the Firefox OS platform, including Gonk, Gaia, and everything in between.">平台指南</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform">平台指南概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Architecture" title="An overview of how Firefox OS is structured internally; this is primarily of interest to platform developers and people doing porting work.">架構概述</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Apps_architecture" title="An overview of the application model on Firefox OS.">App 架構</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gonk" title="Documentation about Gonk, the operating system layer underneath Gaia. This consists of a Linux kernel and a hardware abstraction layer to which Gecko communicates."><span class="gm-spell gm_ gm_db111eae-c215-78a2-9789-97be921cbbdc">Gonk</span></a></li>
- <li><a href="https://developer.mozilla.org/en-US/Gecko" title="Gecko is the layer of Firefox OS that provides the same open web standards implementation used by Firefox and Thunderbird, as well as many other applications.">Gecko</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia" title="Documentation about Gaia, the user interface application for Firefox OS devices; this is a Web application running atop the Firefox OS software stack.">Gaia</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia/Gaia_apps">Gaia App 指南</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security" title="Documentation about security in Firefox OS">安全性</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model">Firefox OS 安全模型</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/System_security">系統安全</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Application_security">Firefox OS 中的 App 安全</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Installing_and_updating_applications">安全的安裝\更新 App</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Out_of_memory_management_on_Firefox_OS">Firefox OS 記憶體耗盡時的管理 </a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Feature_support_chart" title="A chart of which features are available in which types of Firefox OS builds.">支援功能表</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Settings_list" title="A list of common setting names that can be used with the settings API">設定清單</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS" title="This includes documentation for building and installing the platform onto devices, as well as building the simulator and emulators.">建構並安裝</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS">建構與安裝概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_process_summary">Firefox OS 建構程序摘要</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Firefox_OS_build_prerequisites" title="Steps to take before you build Firefox OS for the first time.">必要建構條件</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Preparing_for_your_first_B2G_build" title="Before you can build Firefox OS, you need to clone the repository and configure your build.">準備第一次編譯</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building" title="How to build Firefox OS.">建構 Firefox OS</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Building_Firefox_OS_for_flame_on_OSX">於 OSX 上為「Flame」建構適用的</a><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Building_Firefox_OS_for_flame_on_OSX"> Firefox OS</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Choosing_how_to_run_Gaia_or_B2G" title="Using Gaia within Firefox, running Firefox OS on a mobile device, or in a desktop-based simulator. Which is best?">選擇 Gaia 或 Firefox OS 的執行方式</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_the_B2G_desktop_client" title="Simulating the Gaia environment in a desktop application - more accurate than running Gaia in Firefox but not as accurate as the emulators.">建構 B2G 桌機用戶端</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_B2G_emulators" title="A guide to building and using the Firefox OS emulators, and when to use which emulator.">使用 Firefox OS 模擬器</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Installing_on_a_mobile_device" title="How to install Firefox OS on a real mobile device.">於行動裝置上安裝 Firefox OS</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_update_packages">建構並套用 Firefox OS 更新封包</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Runtime_tools">執行環境 (Runtime) 工具</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS" title="Hack the OS, customize your builds, get things the way you think they should be!">開發 Firefox OS</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS">Firefox OS 開發概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">提報 Firefox OS 的錯誤</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/modifying_hosts_file" title="A guide to what can be achieved by modifying the Firefox OS hosts file.">修改主機端的檔案</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Customization_with_the_.userconfig_file" title="How to customize the build and execution of Firefox OS by changing the .userconfig file.">以 .userconfig 檔案進行自訂</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script">自訂 b2g.sh 指令碼</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Porting" title="Information about how to port Firefox OS to new devices.">移植 Firefox OS</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia">開發 Gaia</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia">Gaia 開發概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase">執行 Gaia 的 Codebase</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Understanding_the_Gaia_codebase">了解 Gaia 的 Codebase</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes">更改 Gaia 程式碼</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Test_Gaia_code_changes">測試更改過的 Gaia 程式碼</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch">提交 Gaia 修正檔</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia/Build_System_Primer">Gaia 版本系統入門</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Customizing_build-time_apps">自訂「建構時間」App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Market_customizations_guide">市場自訂指南</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Customizing_the_keyboard">自訂 Firefox OS App 中的鍵盤</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Localizing_Firefox_OS">本地化 Firefox OS</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/L10n_Best_Practices">本地化最佳實例</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/make_options_reference">「make」選擇參考</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Gaia_tools_reference">Gaia 工具參考</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide" title="A developer's guide to the Firefox OS developer phones available.">Firefox OS 手機指南</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide">Firefox OS 手機指南概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Phone_specs">手機與相關裝置的規格</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Geeksphone">Geeksphone</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE OPEN</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE OPEN C</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Flame">Flame</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Firefox_OS_device_features">一般裝置功能</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Troubleshooting" title="A guide to resolving common problems with Firefox OS.">疑難排解</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Best_practices_open_reference_devices">開放參考裝置的最佳實例</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases" title="This section of the site contains release notes, explaining what new features and changes of significance to developers have landed in each new release of Gaia and Gecko on Firefox OS.">Firefox OS 版本說明</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases">Firefox OS 版本說明概述</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/2.1">Firefox OS 2.1 for developers</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/2.0">Firefox OS 2.0 for developers</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.4">Firefox OS 1.4 for developers</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.3">Firefox OS 1.3 for developers</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.2">Firefox OS 1.2 for developers</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.1">Firefox OS 1.1 for developers</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing">自動化測試</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing">Firefox OS 自動化測試概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Running_Tests_on_Firefox_OS_for_Developers">於 Firefox OS 執行測試作業:開發者指南</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/gaia-ui-tests">Gaia UI 測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_integration_tests">Gaia 整合測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">Gaia 單元測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Gaia 效能測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Mochitests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Mochitests"><span class="gm-spell gm_ gm_8ea2aeb5-60d9-d796-930f-2db1e4217eaa">Mochitests</span></a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Reftests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Reftests"><span class="gm-spell gm_ gm_9567400a-e713-3d43-ffa9-05fd8c3a28a2">Reftests</span></a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Marionette/Marionette_JavaScript_Tests" title="/en-US/docs/Marionette/Marionette_JavaScript_Tests">WebAPI 測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/XPCShell" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/XPCShell"><span class="gmw_"><span class="gm-spell gm_ gm_cc093417-aacf-72e2-e15f-c15a7509a6a8">xpcshell</span> 測試</span></a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests">耐久測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/MTBF_tests">MTBF 測試</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Marionette" title="/en-US/docs/Marionette">Marionette</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Treeherder">Treeherder</a></li>
- <li><a class="external external-icon" href="https://wiki.mozilla.org/QA/Execution/Web_Testing/Automation/Jenkins">Jenkins</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging" title="A guide to debugging both your mobile apps and Firefox OS itself.">除錯</a>
- <ol>
- <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging">Firefox OS 除錯概述</a></strong></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Developer_settings">Firefox OS 的開發者設定</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop">將 Firefox OS 裝置連上桌機</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Setting_up">以 Firefox 開發者工具設定 Firefox OS 的除錯作業</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/On-device_console_logging">裝置上的 console 記錄</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Installing_ADB">安裝並使用 ADB</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Firefox_OS_usage_tips/taking_screenshots">螢幕截圖</a></li>
- <li><a href="https://developer.mozilla.org/en_US/docs/Tools/WebIDE" title="A tool that allows you to install open web apps from your computer to a device capable of installing them (such as Firefox OS) - and debug any running app.">使用 WebIDE</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">使用「應用程式管理員 (App Manager)」</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Firefox_OS_crash_reporting">Firefox OS 當機回報</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Debugging_OOMs">Firefox OS 記憶體耗盡的除錯</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Debugging_and_security_testing">Firefox OS 安全性測試與除錯</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Debugging_B2G_using_gdb"><span class="gmw_">使用 <span class="gm-spell gm_ gm_7a44a2c7-9d5d-e693-57b5-a88dd9adacd8">gdb 為 B2G 除錯</span></span></a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Debugging_B2G_using_valgrind">使用 Valgrind 為 B2G 除錯</a></li>
- </ol>
- </li>
-</ol>
diff --git a/files/zh-tw/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html b/files/zh-tw/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html
deleted file mode 100644
index 7605d27e06..0000000000
--- a/files/zh-tw/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: 將 Boot to Gecko 安裝於行動裝置
-slug: Archive/B2G_OS/Installing_Boot_to_Gecko_on_a_mobile_device
-translation_of: Archive/B2G_OS/Installing_on_a_mobile_device
----
-<p>如果您編譯給行動裝置的 Boot to Gecko 之後,您就將他安裝在行動裝置上。這篇文章會引導您進行這個動作。</p>
-<div class="note">
- <strong>Note:</strong> 第一次把 B2G 寫入手機時,手機必須安裝 Androidd 4.0 (Ice Cream Sandwich) 版本。否則這個動作就不會正常的運作。而一旦您完成第一次 B2G 的安裝之後,您就可以熟練的更新了。</div>
-<h2 id="燒錄手機">燒錄手機</h2>
-<p>您只要將您的手機連結到電腦上、並打下列指令,就可以燒任何東西到手機上:</p>
-<pre>./flash.sh
-</pre>
-<p>就這樣。您編譯好的 B2G 就會被燒錄到您的行動裝置上。</p>
-<h3 id="為您的行動裝置設定_udev_規則">為您的行動裝置設定 udev 規則</h3>
-<p>在 Linux,如果您看到這個訊息,</p>
-<pre>&lt; waiting for device &gt;</pre>
-<p>那或許意味著這個 fastboot 裝置和提供給 adb 裝置的不同,而那個裝置沒有被加入 udev 規則。您現在可以藉由執行 <code>lsusb</code> 來取得 USB 廠商的 ID,但是它會是 Google 的 ID:18d1,所以將下面這一行加入 <code>/etc/udev/rules.d/51-android.rules 這個檔案,然後就會正常運作了:</code></p>
-<pre>SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"</pre>
-<div class="note">
- <strong>Note:</strong> 如果您在 Linux 上碰到一個非常有幫助的 <code>libusb</code> 錯誤 "-3"的話,這意味著手機需要被 root 來取得 USB 裝置的權限。請使用 <code>sudo</code> 再執行一次這個 script。</div>
-<h3 id="Samsung_Galaxy_S2_要特別注意的地方">Samsung Galaxy S2 要特別注意的地方</h3>
-<p>如果您的手機是 Galaxy S2 且使用 heimdall 1.3.2 (最新版;可以用 <code>heimdall version</code> 指令檢查版本) 的話,您可能會看到一個警告訊息「FACTORYFS upload failed!」、後面接著「Heimdall flashing failed」和一些額外的資訊。實際上這是一個成功的狀況,所以您可以忽略這個建議。</p>
-<p>為了要擺脫這個奇怪的行為,您可以去抓 heidmall 的 <a class="link-https" href="https://github.com/Benjamin-Dobell/Heimdall" title="https://github.com/Benjamin-Dobell/Heimdall">複製的原始碼</a>、並且降級到 1.3.1 release 版 ("<code>git checkout fbbed42c1e5719cc7a4dceeba098981f19f37c06</code>"),接著根據 <code>README</code> 編譯、然後安裝,這樣就不會再看到這個錯誤訊息了。然而,這並不是必須的 (看起來比較爽就是了)。</p>
-<p>heimdall 的所有版本都無法燒錄超過 100MB 的 system.img。執行下列指令:</p>
-<pre>ls -l ./out/target/product/galaxys2/system.img
-</pre>
-<p>就可以看到您的 system.img 有多大。如果太大的話,先到 IRC 找人問問求救;有幾種方法可以分兩階段來燒錄。</p>
-<h2 id="Samsung_Galaxy_S2_額外的步驟">Samsung Galaxy S2 額外的步驟</h2>
-<p>如果您正在燒錄到 Galaxy S2 的話,需要遵守一個額外的步驟。因為使用 <code>flash.sh</code> script 不會自動將 Gaia 燒錄上去;您需要也打下列指令:</p>
-<pre>./flash.sh gaia
-</pre>
-<h2 id="燒錄某個分割區partitions到具備_fastboot_的手機">燒錄某個分割區(partitions)到具備 fastboot 的手機</h2>
-<p>您可以燒錄某個分割區 (partitions)到 fastboot 的手機 (也就是說,除了 Samsung Galaxy S2 之外的任何其他手機)。指令如下:</p>
-<pre>./flash.sh system
-./flash.sh boot
-./flash.sh user
-</pre>
-<h2 id="更新某個模組">更新某個模組</h2>
-<p>在燒錄的時候,您可以藉由指名元件名稱來更新某個 B2G 的元件。如下:</p>
-<pre>./flash.sh gaia
-./flash.sh gecko
-</pre>
-<h2 id="接著,下一步">接著,下一步</h2>
-<p>此時,您的手機應該正在運作 Boot to Gecko!是時候該體驗、<a href="/en/Mozilla/Boot_to_Gecko/Writing_apps_for_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Writing_apps_for_Boot_to_Gecko">寫些程式</a>、 <a href="/en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko">測試</a>、或是 <a href="/en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko">除些錯</a> 了!</p>
-<div class="note">
- <strong>Note:</strong> 一個有用的技巧:如果您的 B2G 版本啟動的時候有螢幕鎖且需要密碼才能解鎖的話,預設的解鎖密碼是 0000。</div>
-<h2 class="note" id="Troubleshooting">Troubleshooting</h2>
-<p>如果行動裝置在安裝或更新 B2G 到新版本後不會正常運作的話,這裡還有一些技巧可以參考。</p>
-<h3 class="note" id="如果使用者介面_Gaia_沒有啟動">如果使用者介面 (Gaia) 沒有啟動</h3>
-<p>如果您更新您的手機導致使用者介面不會啟動的話,您可以重置手機來清除一些過期的設定或是之類的東西。這樣做可能會讓它回過魂來繼續運作。參考及使用下列指令:</p>
-<pre>cd gaia
-make reset-gaia
-</pre>
diff --git a/files/zh-tw/archive/b2g_os/introduction/index.html b/files/zh-tw/archive/b2g_os/introduction/index.html
deleted file mode 100644
index 5b0319863d..0000000000
--- a/files/zh-tw/archive/b2g_os/introduction/index.html
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Firefox OS 簡介
-slug: Archive/B2G_OS/Introduction
-translation_of: Archive/B2G_OS/Introduction
----
-<div class="summary">
-<p>Firefox OS 正將無限開拓 Web 的行動界線,且要讓擁有第一支智慧型手機的使用者,能獲得全新的網路體驗。<strong>此開放源碼的行動作業系統,即以</strong> Linux、Open Web 標準、Mozilla 的 Gecko 技術為基礎,勢將重新定義「行動平台」。</p>
-
-<p>在導入 WebAPI 以存取硬體功能,並提供直覺且豐富的智慧型手機體驗之後,Mozilla 相信 Web 必將成為開發者的絕佳機會,讓更多消費者能觸及有趣且多樣的產品。</p>
-</div>
-
-<h2 id="目標客戶">目標客戶</h2>
-
-<p>此一系列說明文件,主要將讓 Web\平台開發者能夠進一步了解 Firefox OS 的運作方式、貢獻專案的方法,並打造自己的客製化軟體版本以利安裝於裝置之上。若是想建立並發佈自己的 Web App,亦可透過 <a href="https://developer.mozilla.org/en-US/Apps">「應用程式中心 (App Center)」</a>與 <a href="https://developer.mozilla.org/en-US/Marketplace">Marketplace 的「專區 (Zone)」</a>輕鬆達成。</p>
-
-<h2 id="Firefox_OS_的基本承諾">Firefox OS 的基本承諾</h2>
-
-<p>對 Web\平台開發者來說,所應了解的最重要部分就是:整個使用者介面 (UI) 就是 Web App,且此 Web App 又能夠顯示並啟動其他的 Web App。不論是修改 UI、撰寫 Firefox OS 上執行的 App,甚至是存取行動裝置硬體與服務,都是透過標準的 Web 技術進行。</p>
-
-<p>從產品面來看,Firefox OS 已是 Mozilla 的品牌名稱,透過 Boot to Gecko (B2G,為作業系統產品的設計代號) 而提供相關服務。Firefox OS 的 UI 稱為 Gaia,並包含了 OS 的預設 App 與系統功能。</p>
-
-<p>若要進一步了解平台架構,可參閱《<a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform">平台指南</a>》。</p>
-
-<h2 id="目前與未來的規劃">目前與未來的規劃</h2>
-
-<p>現正開發 Firefox OS 2.0 版,且 1.3/1.4 版已經趨於穩定。目前市面上已有多款手機,消費者或開發者所適用的型號均有。若要進一步了解,可參閱:</p>
-
-<ul>
- <li>Firefox OS <a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases">開發者版本說明</a>:各版本新支援的功能。</li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide">手機指南</a>:目前市面上的手機型號。</li>
- <li><a href="https://wiki.mozilla.org/B2G/Roadmap">B2G 規劃</a>:Firefox OS 的進度表及時間表。</li>
-</ul>
-
-<h3 id="版本週期">版本週期</h3>
-
-<p>從 Firefox OS 1.2 開始,Firefox OS 版本週期即已儘量同步於 Gecko 與 Firefox 桌面版的版本週期 (即 6 週)。現每 3 個月即釋出新版本 Firefox OS,因此每 2 個 Gecko (Firefox 瀏覽器核心) 版本週期就會釋出 1 次新版本 Firefox OS。</p>
-
-<p>舉例來說,Gecko 30 即與 Firefox OS 1.4 一同釋出 (跨過 Gecko 29);Gecko 32 即與 Firefox OS 2.0 (本為 1.5) 一同釋出 (跨過 Gecko 31)。</p>
-
-<div class="note">
-<p><strong>注意:</strong>可參閱我們的<a href="https://wiki.mozilla.org/RapidRelease/Calendar">版本釋出排程</a>,確認 Firefox OS 與 Gecko\桌面版 Firefox 之間的對應版本,另可參閱 <a href="https://wiki.mozilla.org/Release_Management/FirefoxOS/Release_Milestones">Firefox OS Release Milestones</a> 進一步了解版本管理的相關細節。</p>
-</div>
-
-<h2 id="社群">社群</h2>
-
-<p>Boot to Gecko 與 Gaia 均是由 Mozilla 內部的工程師團隊開發而得,另加上 Mozilla 外部與開放源碼社群的一同貢獻。如果你想聯繫 Firefox OS 或 Gaia 開發的社群,則可利用下列的郵件群組與 IRC 頻道。</p>
-
-<p>同樣的,可使用 Bugzilla 系統提報 <a href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Firefox%20OS">Firefox OS 元件</a>的任何問題。如果你不確定哪些元件應該提報問題,歡迎隨時發問。</p>
-
-<div class="note">
-<p><strong>注意:</strong>如果你對 B2G/Gaia 原始碼的特定部分 (例如特定的 Gaia App) 有任何問題或意見,則可在 <a href="https://wiki.mozilla.org/Modules/FirefoxOS">Firefox Modules 頁面</a>上找到特定聯絡細節。</p>
-</div>
-
-<h2 id="打造作業系統">打造作業系統</h2>
-
-<p>B2G 作業系統是以 Mozilla 的 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Gecko">Gecko</a> 繪圖引擎為基礎,並從 Linux kernel 以及稱為 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a> 的硬體抽象層 (Hardware Abstraction Layer,HAL) 延伸。這裡所說的 Gecko,基本上就是 Firefox for Android 或 Windows 或 Mac OS X 所用的相同 Gecko。而 Gonk 就是 Gecko 所衍生的另項系統。</p>
-
-<p>若要進一步打造並安裝 Firefox OS,可參閱《<a href="https://developer.mozilla.org/zh-TW/Firefox_OS/Building_and_installing_Firefox_OS">建立並安裝 Firefox OS</a>》。你也可以<a href="https://github.com/mozilla-b2g/B2G">到 Github 找到 B2G 的原始碼</a>。</p>
-
-<h2 id="貢獻_Gaia">貢獻 Gaia</h2>
-
-<p>若想為 Gaia 貢獻,其實並不需要深入了解 Web 的開發概念。如果要入門 Gaia 並執行,可參閱《<a href="https://developer.mozilla.org/en-US/Firefox_OS/Hacking_Firefox_OS/Quickstart_guide_to_Gaia_development">入門開發 Gaia</a>》。</p>
-
-<p>還有許多有用的工具,可讓你針對 Gaia 與 Firefox OS 的 Web App 進行除錯。若要進一步了解,亦可參閱《<a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia/Hacking">Hacking Gaia</a>》。</p>
-
-<h2 id="開發_Firefox_OS_的_App">開發 Firefox OS 的 App</h2>
-
-<p>Firefox OS App 同樣是以標準的 Web 技術 (如 HTML、CSS、JavaScript 等等) 所打造而成。如果你本來就是 Web 開發者,就已經具備了大部分的技術。另必須知道數個特定的 JavaScript API,以利存取裝置的硬體與重要功能 (如相機、陀螺儀、光線感測器、聯絡人資訊、系統警示\通知......)。這些也同樣能參閱<a href="https://developer.mozilla.org/en-US/Apps">應用程式中心</a>與 <a href="https://developer.mozilla.org/en-US/docs/Web">Web 平台</a>頁面獲得更多資訊。</p>
-
-<div class="note">
-<p><strong>注意:</strong>如果你剛開始打造 Open Web/Firefox OS App,或想要初步了解 Web App 與傳統網頁之間的差異,可參閱《<a href="https://developer.mozilla.org/en-US/Apps/Quickstart">App 迅速入門指南</a>》。</p>
-</div>
-
-<h3 id="支援_Firefox_OS_的多個版本">支援 Firefox OS 的多個版本</h3>
-
-<p>在開發 Firefox OS 的 App 時,必須留意消費者手上的裝置到底搭載了哪個版本 (可參閱<a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Phone_specs#Firefox_OS_phones_available">目前可用手機表</a>)。另請注意,更新手機平台軟體,可不像更新桌面版軟體一樣簡單。消費者往往受制於網路服務供應商。因此開發者應該讓 App 能夠支援不同的版本。舉例來說,multiline 的「Flexbox」就無法在 Firefox OS 1.3 以下的版本中執行。你可能必須使用較簡單的配置函式,或退而使用較舊的版本。</p>
-
-<p>隨著有越來越多消費性的 Firefox OS 裝置上市,並搭載更高版本的 Firefox OS,這個問題很快就能解決。</p>
-
-<div class="warning">
-<p>我們目前建議能針對 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.1">Firefox OS 1.1</a> 版本的特性來開發 App。</p>
-</div>
-
-<div class="note">
-<p><strong>注意:</strong>MDN 上的《<a href="https://developer.mozilla.org/en-US/docs/Web">Web 平台參考頁面</a>》,包含瀏覽器\平台的支援資訊。另可到《<a href="https://developer.mozilla.org/en-US/Apps/Reference">Apps API Reference</a>》找到特定 App 技術的相關資訊。</p>
-</div>
diff --git a/files/zh-tw/archive/b2g_os/phone_guide/flame/index.html b/files/zh-tw/archive/b2g_os/phone_guide/flame/index.html
deleted file mode 100644
index 60b3a7ad8f..0000000000
--- a/files/zh-tw/archive/b2g_os/phone_guide/flame/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Firefox OS 參考平台手機「Flame」
-slug: Archive/B2G_OS/Phone_guide/Flame
-translation_of: Archive/B2G_OS/Phone_guide/Flame
----
-<div class="note">
- <p><strong>Flame 的更新檔案</strong>:我們建議你加入下方的郵件群組,即可收到軟體版本定期更新檔案,以及其他可影響 Flame 效能的檔案:<a href="https://mail.mozilla.org/listinfo/flamenews">https://mail.mozilla.org/listinfo/flamenews</a></p>
-</div>
-<p><img alt="A picture of the Flame device, showing the Firefox OS homescreen containing several app icons." src="https://mdn.mozillademos.org/files/8373/flame-dev-hud.png" style="float: left; margin-right: 50px; margin-bottom: 20px; width: 25%;"></p>
-<h2 id="Available_to_order" style="text-indent: 100%; white-space: nowrap; overflow: hidden; margin: 0; height: 0;">Available to order</h2>
-<p>專為開發者所設計的「Flame」參考平台手機,是 Firefox OS 相關裝置的里程碑。Flame 的硬體規格均為一時之選,包含 FWVGA 顯示功能與雙核心處理器,可協助開發者打造絕佳的內容與經驗。且單一硬體平台同樣適合測試人員,可更輕鬆的測試並找出軟體問題,不必擔心裝置型號既有的特定問題。</p>
-<p style="">如果你手上有 Flame,也打算開始把玩、開發\發佈 App,或為 Firefox 平台有所貢獻,則應先參閱下列連結:</p>
-<ul>
- <li><a href="https://developer.mozilla.org/zh-TW/Firefox_OS">Firefox OS 專區</a>:可打造自己的 Firefox OS 版本,並貢獻到 B2G 與 Gaia 專案。</li>
- <li><a href="https://developer.mozilla.org/zh-TW/Apps">應用程式中心</a>:打造 Open Web App 並相容於 Firefox OS。</li>
- <li><a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace">Marketplace 專區</a>:發佈 App 所需的各種資訊。</li>
- <li><a href="https://marketplace.firefox.com/">Firefox Marketplace</a>:尋找並發佈 Firefox OS 新 App 的最佳去處。</li>
-</ul>
-<p style="">如果你想進一步了解作業系統的更新程序、探索手機的其他部分、將 App 送入手機,或觀看手機本身的規格,則可從下列 2 篇文章中找到相關資訊:</p>
-<ul>
- <li style=""><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Initial_setup">初始設定</a> — 設定電腦的必要步驟,才能妥善配合 Flame。</li>
- <li style=""><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Updating_your_Flame">更新自己的 Flame</a> — 更新 Flame 上的 Firefox OS,將 App 送入手機之後,即可測試 App 並排解疑難雜症。</li>
-</ul>
-<h2 id="購買_Flame">購買 Flame</h2>
-<p>Flame 銷售已經告一段落。但我們仍為 Mozilla 貢獻者保留了許多機會要免費送出手機,包含第二輪的 Foxtrot 方案。如果你想免費獲得手機,請儘速聯絡 IRC 上的 Asa Dotzler。</p>
-<h2 id="連線網路與裝置的規格">連線網路與裝置的規格</h2>
-<p><strong>連線網路:</strong></p>
-<ul>
- <li>802.11b/g/n 無線網路</li>
- <li>GSM 850/900/1800/1900MHz</li>
- <li>UMTS 850/900/1900/2100MHz</li>
-</ul>
-<p><strong>硬體:</strong>請透過<a href="/en-US/Firefox_OS/Developer_phone_guide/Phone_specs">手機與裝置的規格頁面</a>找到更多硬體特色。</p>
-<p>其他特色包含:</p>
-<ul>
- <li>NFC</li>
- <li>Bluetooth 3.0</li>
- <li>加速規</li>
- <li>FM 收音機</li>
- <li>距離感測器</li>
- <li>GPS 並支援 A-GPS</li>
- <li>環境光源感測器</li>
-</ul>
-<h2 id="另請參閱">另請參閱</h2>
-<ul>
- <li style=""><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Initial_setup">初始設定</a> — 設定電腦的必要步驟,才能妥善配合 Flame。</li>
- <li style=""><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Updating_your_Flame">更新自己的 Flame</a> — 更新 Flame 上的 Firefox OS,將 App 送入手機之後,即可測試 App 並排解疑難雜症。</li>
- <li><a href="http://blog.mozilla.com.tw/posts/6263/">Flame 開發入門</a>:技術傳教士 Chris Heilmann 錄製的相關影片。</li>
- <li><a href="http://mozilla.github.io/flame-on/">Flame On</a>:由擁有 Flame 的開發者在 Mozilla Festival 2014 所打造的絕佳網頁。</li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/phone_guide/index.html b/files/zh-tw/archive/b2g_os/phone_guide/index.html
deleted file mode 100644
index 7e301af2de..0000000000
--- a/files/zh-tw/archive/b2g_os/phone_guide/index.html
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Boot to Gecko 開發者手機指南
-slug: Archive/B2G_OS/Phone_guide
-translation_of: Archive/B2G_OS/Phone_guide
----
-<p>如果您已經從 Mozilla 收到了可以運作 B2G 的開發者手機,或是已經有人幫您將 B2G 安裝好在您的手機上的話,這裡有一份 <a href="https://wiki.mozilla.org/B2G/DeveloperPhone" class="link-https" title="https://wiki.mozilla.org/B2G/DeveloperPhone">關於手機運作的基礎指南</a>。我們正在改善這個部分,也希望可以快一點放更有效率的指令放上 MSN。如果您對建置/燒錄有興趣,請看 <a href="/en/Mozilla/Boot_to_Gecko/Setting_Up_Boot_to_Gecko_Build_Environment" title="Setting up &amp; building Boot to Gecko">'設定和建置 Boot to Gecko'</a> 章節,裡面有更細節的資訊。</p>
diff --git a/files/zh-tw/archive/b2g_os/phone_guide/zte_open/index.html b/files/zh-tw/archive/b2g_os/phone_guide/zte_open/index.html
deleted file mode 100644
index 36ababcb56..0000000000
--- a/files/zh-tw/archive/b2g_os/phone_guide/zte_open/index.html
+++ /dev/null
@@ -1,287 +0,0 @@
----
-title: The Firefox OS ZTE OPEN
-slug: Archive/B2G_OS/Phone_guide/ZTE_OPEN
-translation_of: Archive/B2G_OS/Phone_guide/ZTE_OPEN
----
-<div class="summary">
-<p>Mozilla 與 ZTE 共同合作開發了 ZTE Open。ZTE Open 是一款為開發者和早期接受者所開發的 Firefox OS 裝置,它已解鎖、開放用於測試和實驗。</p>
-</div>
-
-<div class="note">
-<p><strong>Note</strong>: 本指南不適用於 ZTE Open C 裝置,針對 ZTE Open C 請參考 <a href="/en-US/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE Open C</a> 頁面。</p>
-</div>
-
-<h2 id="購買裝置">購買裝置</h2>
-
-<p>請連至 ZTE 美國、歐洲或香港 ebay 商店購買。</p>
-
-<ul>
- <li><a href="http://stores.ebay.com/ztemobileuk">Buy from UK eBay store</a></li>
- <li><a href="http://stores.ebay.com/zteauthorizedstoreus/">Buy from US eBay store</a></li>
- <li><a href="http://www.ebay.com/itm/331031989534">Buy from Hong Kong page</a></li>
-</ul>
-
-<h2 id="升級_Firefox_OS">升級 Firefox OS</h2>
-
-<p>接下來我們將提供升級 ZTE Open 的說明指示:</p>
-
-<h3 id="一般">一般</h3>
-
-<p>一般 Firefox OS 的建置、更新和測試都是透過用 USB 連接電腦和手機後,利用 ADB (Android Debugging Bridge) 以及 Fastboot 發送指令進行操作,所以我們需要安裝 ADB 以及 fastboot 到電腦上 (可至 <a href="http://developer.android.com/sdk/index.html" title="Android Developer Tookit">Android Developer Toolkit</a> 取得) ,並不需要安裝整個 Android 開發工具包,adb 以及 fastboot 可以到 <code>/platform-tools/</code> 資料夾找到。</p>
-
-<p>然後,請打開手機的遠端除錯選項<a href="/en-US/Firefox_OS/Debugging/Developer_settings#Remote_debugging">,enable remote debugging</a>。</p>
-
-<h3 id="Firefox_OS_1.1">Firefox OS 1.1</h3>
-
-<p>2013/12/10,ZTE 發佈了 ZTE Open 的 Firefox OS 1.1 更新包,<strong>這個更新開啟了 fastboot</strong>, 解決了前一個發佈版本這方面的問題。</p>
-
-<p>在升級到 v1.2 前,最好先升級到 v1.1。升級 v1.1 首先先到 <a href="http://www.ztedevices.com/support/smart_phone/b5a2981a-1714-4ac7-89e1-630e93e220f8.html">OPEN (American Standard</a> 或 <a href="http://www.ztedevices.com/support/smart_phone/cba40ed6-d3ab-44c0-bdee-3a15803dc187.html">OPEN (European Standard)</a> 下載升級包,請注意我們需要下載對應 OS 版本,所以從 v1.0 升級的人請下載 "V1.1.0B02(for V1.0)",下載檔案中同時也含有說明文件。接下來請解開下載檔案按照以下步驟升級你的 ZTE Open。</p>
-
-<div class="note">
-<p><strong>Note</strong>: 使用者資料會在 microSD 卡升級過程中被刪除,請先<a href="https://developer.mozilla.org/en-US/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">備份你的資料</a> 。</p>
-</div>
-
-<p>以下是透過 microSD 卡升級步驟:</p>
-
-<ol>
- <li>關機、打開背蓋、取下電池背後的 microSD 記憶卡。</li>
- <li>將 SD 卡插入電腦。</li>
- <li>把下載的 <strong>US_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> 或 <strong>EU_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> (看你下載的版本) 複製到 microSD 卡的 root 底下,請不要解開 zip 檔。</li>
- <li>卸除 SD 卡、裝回到手機上。</li>
- <li>同時按下音量向上鍵和電源鍵。音量向上鍵位於手機左側長條型按鍵的上半部。兩顆鍵同時按下後會進入 Firefox OS recovery 模式 (注意 Firefox logo 會先出現一陣子再進入 recovery 模式)。</li>
- <li>按音量上下鍵再選項間移動,請選擇 “<strong>apply update from external storage</strong>.”</li>
- <li>按電源鍵確認選項後會看見 microSD 卡裡的檔案列表。</li>
- <li>再用音量上下鍵選擇你剛剛複製過來的軔體檔 <strong>US_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> 或 <strong>EU_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong>,然後按電源鍵確認。</li>
-</ol>
-
-<p>如果一切順利的話,你會看到一連串訊息,當你看到 <em>“<strong>Install from sdcard complete</strong>.”</em> 那就代表升級完成,請選擇 “reboot system now” 重新開機,重新開機後你將會看到手機第一次啟動的設定頁面。</p>
-
-<h3 id="Firefox_OS_1.2">Firefox OS 1.2</h3>
-
-<p>2014, 1月,ZTE 發佈了一版 Firefox OS v1.2 beta 版 (fastboot 開啟、擁有 root 權限),此 beta 版本基本上是由 v1.1 baseline + v1.2 Gecko 與 Gaia, 而且不需要把檔案放在 microSD 卡中。</p>
-
-<p>請先確認 v1.1 已經上面說明安裝完成,接著打開 terminal 然後輸入以下指令確認連線建立成功:</p>
-
-<pre class="brush: bash">adb devices -l
-</pre>
-
-<p>如果連線成功,你會看到類似 "roamer2    device usb:2-1.2" 的回應訊息。</p>
-
-<p>請前往 ZTE 建立的 Dropbox 帳戶下載對應 OS: <a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/32KXfFmedN/P752D04_DEV_US_20131212_v1.2.7z" title="Firefox OS 1.2 build for ZTE Open US">US 版</a> 或 <a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/_twgXEkMFH/P752D04_DEV_EU_20131212_v1.2.7z" title="Firefox OS 1.2 build for ZTE Open UK">UK 版,</a>,Windows 使用者可以去<a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/6ZoJwmlRjn/Installation%20Instruction.docx" title="Special upgrade instructions for Windows users">下載特殊說明</a>還有<a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/-fyi2XHFPG/upgrade_tool" title="Upgrade tool">升級工具</a>來協助安裝新版本。底下的說明指示無需特殊工具、適用於所有作業系統 – Linux, OS X, 和 Windows。</p>
-
-<p>請解開下載好的檔案,開啟 terminal 進入到解開後的檔案資料夾。請注意以下步驟會刪除個人資料,所以請先<a href="https://developer.mozilla.org/en-US/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">備份</a>好你的資料,接著輸入下列指令:</p>
-
-<pre class="brush: bash">adb reboot bootloader</pre>
-
-<p>這個指令會讓裝置重開機,由於 fastboot 只在重開機過程中有效,請在重開機中輸入以下指令:</p>
-
-<pre class="brush: bash">sudo fastboot devices
-</pre>
-
-<p>如果看到 "&lt; waiting for device &gt;" 訊息,請按下 Ctrl-C 並且再次輸入指令直到看見 "ROAMER2    fastboot" 之類的訊息回應。</p>
-
-<p>接著請快速在重開機當中輸入下面指令:</p>
-
-<pre class="brush: bash">fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot flash recovery recovery.img
-fastboot erase cache
-fastboot reboot</pre>
-
-<div class="note">
-<p><strong>Note</strong>: 如果一直看到 "&lt; waiting for device &gt;" 訊息,請嘗試在指令開頭前加上 <strong>sudo</strong> ,例如 "sudo falshboot flash boot boot.img"。</p>
-</div>
-
-<p>如果來不及輸入完指令,請從 "adb reboot bootloader" 指令開始再試一次。</p>
-
-<p>一切順利的話,重開機後又會看到第一次手機啟用頁面,ZTE Open 此刻已經升級到 v1.2,進入系統後會看到許多測試 app ,請隨意自由自由刪除。</p>
-
-<div class="note">
-<p><strong>Note</strong>: <a href="https://hacks.mozilla.org/2014/01/upgrading-your-zte-open-to-firefox-1-1-or-1-2-fastboot-enabled/">Upgrading your ZTE Open to Firefox 1.1 or 1.2 (fastboot enabled)</a> 由 <span class="url">Frédéric Harper</span> 所撰寫的文章也提供了有用的安裝步驟說明。</p>
-</div>
-
-<div class="note">
-<p><strong>Note</strong>: ZTE Open 的 v1.2 版有一個通知欄無法展開的問題,這個問題可以藉由燒錄最新的 Firefox OS 1.2 工程版解決,請確認 <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB 安裝好了</a> 還有 <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">遠端除錯</a> 開啟,然後在 terminal 輸入下面指令:<br>
- <br>
- <code>git clone -b v1.2 <a href="https://github.com/mozilla-b2g/gaia.git" rel="nofollow">https://github.com/mozilla-b2g/gaia.git</a> gaia_v1.2<br>
- cd gaia_v1.2<br>
- make reset-gaia</code></p>
-</div>
-
-<h3 id="Firefox_OS_1.3_and_beyond">Firefox OS 1.3 and beyond</h3>
-
-<p>ZTE currently haven't released builds for Firefox OS 1.3 and beyond. To get these on your ZTE open you'll have to manually <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">build and install a new Firefox OS/B2G</a> build on it (start at the <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">build prerequisite</a> instructions, and treat the ZTE like it is an Inari device, for the purposes of configuration). You can recover your phone if necessary, using the procedure cited in the {{ anch("I bricked my phone") }} section.</p>
-
-<h2 id="Phone_features">Phone features</h2>
-
-<ul>
- <li>CPU Qualcomm MSM7225A 1.0Ghz</li>
- <li>UMTS 850/1900 or UMTS900/2100</li>
- <li>GSM 850/900/1800/1900 (2G EDGE)</li>
- <li>Screen 3.5" HVGA</li>
- <li>Camera 2 MP (back)</li>
- <li>256 MB (RAM)</li>
- <li>MicroSD (support up to 32GB)</li>
- <li>Battery 1200 mAh</li>
- <li>Wifi b, g, n, Bluetooth 2.1 EDR</li>
- <li>Light &amp; Prox. Sensor, G-Sensor</li>
- <li>Radio FM, GPS</li>
- <li>MicroUSB</li>
-</ul>
-
-<div class="note">
-<p><strong>Note</strong>: the Hong Kong phones also support tri-band 3G Networks — HSDPA 850/1900/2100 (850/1900 for US, CA, 850/1900/2100 for Asia, AU, and 900/2100 for EU.)</p>
-</div>
-
-<h2 id="Wireless_carriers">Wireless carriers</h2>
-
-<div class="warning">
-<p>Pricing information is for reference only and may not be accurate. Visit the associated link for official information.</p>
-</div>
-
-<h3 id="US_carriers">US carriers</h3>
-
-<h4 id="ATT">AT&amp;T</h4>
-
-<ul>
- <li><a href="http://www.att.com/shop/wireless.html">Website</a></li>
- <li>Nationwide coverage for 2G EDGE and 3G</li>
-</ul>
-
-<h5 id="Sampling_of_prepaid_ATT_plans">Sampling of prepaid AT&amp;T plans</h5>
-
-<p><a href="http://www.att.com/shop/wireless/gophone.html">Prepaid GoPhone®</a>, Smartphone Plans</p>
-
-<ul>
- <li>$25/month, $5/50MB 3G data</li>
- <li>$60/month with 2GB data, $10/GB additional 3G data</li>
-</ul>
-
-<h4 id="Aio">Aio</h4>
-
-<ul>
- <li><a href="http://www.aiowireless.com/home.html">Website</a></li>
- <li>{{ anch("AT&amp;T") }}'s own MVNO</li>
-</ul>
-
-<h5 id="Sampling_of_prepaid_Aio_plans">Sampling of prepaid Aio plans</h5>
-
-<ul>
- <li>Aio Smart - $55/month with 2GB 3G data, $10/GB additional 3G data</li>
- <li>Aio Pro - $70/month with 7GB 3G data, $10/GB additional 3G data</li>
-</ul>
-
-<h4 id="Good2GO">Good2GO</h4>
-
-<ul>
- <li><a href="https://us.good2gomobile.com/">Website</a></li>
- <li>{{ anch("AT&amp;T") }} MVNO</li>
-</ul>
-
-<h5 id="Sampling_of_prepaid_Good2GO_plans">Sampling of prepaid Good2GO plans</h5>
-
-<ul>
- <li>$50/month with 1GB 3G data, $20/GB additional 3G data</li>
-</ul>
-
-<h4 id="Other_anch(ATT)_MVNOs">Other {{ anch("AT&amp;T") }} MVNOs</h4>
-
-<p>These carriers do not offer additional 3G data.</p>
-
-<ul>
- <li><a href="http://goredpocket.com/">RedPocket</a></li>
- <li><a href="http://www.net10wireless.com/">Net10</a></li>
- <li><a href="http://www.straighttalk.com/">Straight Talk</a></li>
- <li><a href="https://www.airvoicewireless.com/">Airvoice</a></li>
-</ul>
-
-<h4 id="T-Mobile">T-Mobile</h4>
-
-<ul>
- <li><a href="http://www.t-mobile.com/">Website</a></li>
- <li>Nationwide coverage for 2G EDGE, limited metropolitan coverage for 3G</li>
-</ul>
-
-<h3 id="Canadian_carriers">Canadian carriers</h3>
-
-<p>The US version of the ZTE Open also work in Canada on carriers that use the Bell/Telus network, or the Rogers network. Some regional carriers like Sasktel or MTS that have UMTS should work too.</p>
-
-<p>It will not work on carriers that do not use UMTS or GSM, like Public Mobile, nor on the carriers that use the AWS band like WIND Mobile, Mobilicity, Videotron or Eastlink.</p>
-
-<h2 id="Memory_card">Memory card</h2>
-
-<h3 id="File_system">File system</h3>
-
-<p>In order to be recognized by the phone, the MicroSD card must be formatted as a FAT32 file system. If a card is new or has never been reformatted, it should work as is.</p>
-
-<h2 id="Device_revisions">Device revisions</h2>
-
-<h3 id="Revision_01">Revision 01</h3>
-
-<p>Phones produced before 09/27/2013 do not have fastboot enabled and must be updated. Normally, this would be handled by Software Updates, but since some users have reported trouble with this method, ZTE have made SD card packages available to enable fastboot on earlier devices. Flash images for:</p>
-
-<ul>
- <li><a href="http://www.ztedevices.com/support/smart_phone/b5a2981a-1714-4ac7-89e1-630e93e220f8.html">Phones purchased at ZTE eBay US/Hong Kong store</a></li>
- <li><a href="http://www.ztedevices.com/support/smart_phone/cba40ed6-d3ab-44c0-bdee-3a15803dc187.html">Phones purchased at ZTE eBay UK store</a></li>
-</ul>
-
-<p>The zip file is linked under Downloads.  Note that you need to download the version with your OS revision in it (that is, download the "V1.1.0B02(for V1.0)" if you are upgrading <em>from</em> V1.0).  Once the file is downloaded and unzipped, follow the instructions in the bundled PDF to flash the package to your phone.</p>
-
-<p>Related Support Forum Questions:</p>
-
-<ul>
- <li><a href="https://support.mozilla.org/en-US/questions/971252">ZTE Open update crashes</a></li>
- <li><a href="https://support.mozilla.org/en-US/questions/967817">Why is my ZTE Open unable to update Firefox OS?</a></li>
- <li><a href="https://support.mozilla.org/en-US/questions/976414?page=3">How can I unbrick ZTE Open with adb debug Disabled?</a></li>
-</ul>
-
-<h3 id="Revision_02">Revision 02</h3>
-
-<p>Phones produced on or after 09/27/2013 are fastboot enabled by default. <strong>This includes the Hong Kong phones.</strong></p>
-
-<div class="note">
-<p><strong>Note</strong>: If you are unsure of your phone's revision, check it in <strong>Settings &gt; Device Information &gt; Software</strong>. If it is older than the following version numbers, you will need to update your phone using the above SD packages to enable fastboot.</p>
-
-<ul>
- <li>Phones from UK store:OPEN_EU_DEV_FFOS_V1.0.0B02</li>
- <li>Phones from US store:OPEN_US_DEV_FFOS_V1.0.0B02 <em>(Some phones may display this version incorrectly, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=916098#c39">bug 916098</a>.)</em></li>
-</ul>
-</div>
-
-<h2 id="Device_support">Device support</h2>
-
-<p>Once your phone has {{ anch("Device revisions","fastboot enabled") }}, you will then be able to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">build and install new Firefox OS/B2G</a> builds on it (start at the <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">build prerequisite</a> instructions, and treat the ZTE like it is an Inari device, for the purposes of configuration), and recover your phone if necessary, using the procedure cited in the {{ anch("I bricked my phone") }} section.</p>
-
-<p>If you encounter errors about setting the system time while flashing a custom build, you may need to download a <a href="http://sl.edujose.org/2013/10/adapted-boot-image-for-use-with-b2g.html">modified boot image</a>.</p>
-
-<h3 id="I_bricked_my_phone">I bricked my phone</h3>
-
-<p>If you are in the process of modifying your phone and it becomes “unresponsive” you should be able to recover it using fastboot with the following simple procedure.</p>
-
-<p>First remove the USB cable and then remove the battery from the phone for 30 seconds. Then reinsert the battery and press the volume up button while holding the power button for a few seconds. Next reconnect the USB cable and run the following commands from a terminal window in the directory that contains the SD package files described above (it is worth checking for an update to the SD package before you do this):</p>
-
-<pre class="brush: bash" lang="bash">fastboot flash recovery recovery.img
-fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot reboot
-</pre>
-
-<p>This process should recover your phone. If it doesn't seem to work, you may have to try it a second time.</p>
-
-<h3 id="Headphones_not_working">Headphones not working?</h3>
-
-<p>We found that the headset jack is designed by a Chinese manufacturer that has compatibility problems with other brands of headsets that include microphones. You may have voice mute problems when you try to use headsets made by Apple, Samsung, HTC, and others. You can buy a 3.5 mm headset adapter that reverses the microphone and ground pins to avoid this problem. For more information, see {{ Bug("812607") }}.</p>
-
-<h3 id="Other_support_notes">Other support notes</h3>
-
-<p>Some customers have come across an Issue of FOTA updates failing to enable fastboot; this is still under investigation, and we are assisting ZTE to analyze every scenario. We will post more information as it is available.</p>
-
-<p>If your phone was unfortunately damaged during the FOTA update because of ZTE providing false or wrong update files, you can attempt to restore it to factory settings using the appropriate SD image and instructions referenced in {{ anch("Revision 01") }}. Otherwise, send your phone back to the eBay store you purchased it from in exchange for a new one. You may contact the store owner directly via an eBay message.</p>
-
-<h2 id="See_also">See also</h2>
-
-<p><a href="https://marketplace.firefox.com/developers/dev_phone">Official Dev Phone page on Firefox Marketplace</a></p>
-
-<p><a href="http://www.movistar.co/documentos/manualesProductos/ZTE_Mozilla_Open_P752-Manual_de_Usuario.pdf">Draft User Manual [en-US]</a> - PDF</p>
diff --git a/files/zh-tw/archive/b2g_os/platform/apps_architecture/index.html b/files/zh-tw/archive/b2g_os/platform/apps_architecture/index.html
deleted file mode 100644
index 2524c81d0b..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/apps_architecture/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Firefox OS apps 架構
-slug: Archive/B2G_OS/Platform/Apps_architecture
-translation_of: Archive/B2G_OS/Platform/Apps_architecture
----
-<div class="summary">
- <p>本文旨在說明 Firefox OS 內部如何管理和啟動應用程式,主要是針對 Firefox OS 平台開發者以及正在移植 Firefox OS 到新硬體裝置上的開發者,如果你只是一個單純 App 開發者並不會需要知道,不過有興趣的話還是可以看看了解 Firefox OS。</p>
-</div>
-<h2 id="App_啟動程序">App 啟動程序</h2>
-<p>當 app 被啟動時,主畫面 app (Home screen app) 會透過 {{domxref("App")}} API 取得 app 的參照,然後呼叫 {{domxref("App.launch()")}} 方法來啟動 app。</p>
-<p>Gecko 收到相關請求後會發送一個含有 app 詳細資訊的 {{domxref("mozChromeEvent")}} 到系統 app (System app),系統 app 接著會將一個 {{HTMLElement("iframe")}} 加入 DOM 樹(DOM tree)中,然後將 app 載入該 {{HTMLElement("iframe")}} 裡,直到 app 終止前這個 iframe 就是 app 的家。</p>
-<p>每一支 app 都需要一個描述該 app 的 manifest 檔,app 包也需要遵照特定檔案階層,詳情請見 <a href="/en-US/docs/Web/Apps/App_Manifest">App manifest</a>。</p>
-<h2 id="和_Gecko_溝通">和 Gecko 溝通</h2>
-<p>Gecko 和 Gaia' 系統 app 之間的溝通是經由 {{domxref("mozChromeEvent")}} 以及 {{domxref("mozContentEvent")}} 完成。 <code>mozChromeEvent</code>s 是從 chrome 廣播到內容,而 <code>mozContentEvent</code>s 是從內容廣播到 chrome,這些溝通主要在控管受信任 UI 的創建與終止,還有在為通知和其他任務,包括通知系統 app 啟動某個 app,提供必要的功能。</p>
-<div class="note">
- <p><strong>Note:</strong> 請參考 <a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps/System">System app 文件</a> 以取得更多有關這些事件如何運作的細節,同時也可以參考相關的原始碼 {{source("b2g/chrome/content/shell.js")}}。</p>
-</div>
-<h2 id="延伸閱讀">延伸閱讀</h2>
-<ul>
- <li><a href="/en-US/docs/Web/Apps">Apps</a></li>
- <li>{{domxref("App")}}</li>
- <li><a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps/System">System app</a></li>
- <li><a href="/en-US/Firefox_OS/Platform/Architecture">Firefox OS architecture</a></li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/platform/gaia/gaia_apps/index.html b/files/zh-tw/archive/b2g_os/platform/gaia/gaia_apps/index.html
deleted file mode 100644
index 4a284db78e..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/gaia/gaia_apps/index.html
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: Gaia apps
-slug: Archive/B2G_OS/Platform/Gaia/Gaia_apps
-translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps
----
-<div class="summary">
- <p><span class="seoSummary">Gaia 位在 Firefox OS 的上層,其中包含系統管理功能以及一系列 Firefox OS 內建 apps。所有 Gaia 的原始碼 — 即便系統和鍵盤輸入法 — 都是由 HTML5 (HTML + CSS + JavaScript) 和 Open WebAPIs 技術所建構而成的,本文旨在說明 Gaia 內建的 apps 是如何運作之。</span></p>
-</div>
-<h2 id="Gaia_功能類別">Gaia 功能類別</h2>
-<p>Gaia 內不同的 apps 大致上可以分成以下幾類。</p>
-<div class="note">
- <p><strong>Note</strong>: 許多 app 運作說明都會連結到 <a href="https://github.com/mozilla-b2g/gaia/">Gaia Github repo</a> 上的 README 頁面,那是因為很多 app 都還在快速開發迭代階段,常常會有更動,所以一直更新 MDN 相當不切實際,如果想要進一步獲取最新的資訊,請再參考各 README 頁面。</p>
-</div>
-<h3 id="平台類">平台類</h3>
-<p>包括系統、設定、螢幕鎖定、建置腳本和藍芽 apps。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/7503/platform_team.png" style="width: 355px; height: 269px; margin: 0px auto; display: block;"></p>
-<h4 id="平台類_apps">平台類 apps:</h4>
-<dl>
- <dt>
- <a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps/System">系統 (System)</a></dt>
- <dd>
- System app 是第一個在 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Architecture#Firefox_OS_bootup_procedure">Firefox OS 開機程序 </a>中被 Gecko 載入的web app,它負責處理許許多多系統運行工作,所以不算是在一般個別 web app 的範疇內。</dd>
- <dt>
- <a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps/Browser">瀏覽器 (Browser)</a></dt>
- <dd>
- Browser app (現在算是 System 一部分) 當有相關需求時,如網頁瀏覽、搜尋或書籤標記,提供瀏覽器類的功能。</dd>
- <dt>
- <a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps/Window_Management">視窗管理 (Window Management)</a></dt>
- <dd>
- Firefox OS 視窗管理功能 — 包括 app 生命週期和互動、通知、動畫等等 — 由 System app 特定一塊負責。</dd>
- <dt>
- <a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps/Settings">設定 (Settings)</a></dt>
- <dd>
- Settings app 讓使用者設定裝置、回應當前活動呼叫 (帶有 <code>configure</code> 名稱的<a href="/en-US/docs/WebAPI/Web_Activities"> Web 活動</a>),讓其他 app 可以跳轉到 Settings app 其中的設定面板處理需要的設定任務 (例如說顯示 wifi 設定面板當數據傳輸無法使用時)。</dd>
-</dl>
-<h3 id="通訊類">通訊類</h3>
-<p>包括 Dialer, Contact, SMS apps 與 FTU apps.</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/7499/comms_team.png" style="width: 317px; height: 246px; margin: 0px auto; display: block;"></p>
-<h3 id="生產力類">生產力類</h3>
-<p>包括 Email, Calendar, 與 Clock apps.</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/7505/productivity_team.png" style="width: 303px; height: 178px; margin: 0px auto; display: block;"></p>
-<h4 id="生產力類_apps">生產力類 apps:</h4>
-<dl>
- <dt>
- <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/calendar/README.md">日歷 (Calendar)</a></dt>
- <dd>
- Firefox OS 內建 calendar app.</dd>
- <dt>
- <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/clock/README.md">時鐘 (Clock</a>)</dt>
- <dd>
- Firefox OS 預設 Clock app,具備鬧鈴、計時等功能</dd>
- <dt>
- <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/email/README.md">Email</a></dt>
- <dd>
- Gaia e-mail app.</dd>
-</dl>
-<h3 id="媒體類">媒體類</h3>
-<p>包括 Camera, Gallery, Music, 和 Video apps 等等媒體相關功能,如桌布和轉送 DRM 鎖。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/7501/media_team.png" style="width: 386px; height: 250px; margin: 0px auto; display: block;"></p>
-<h4 id="媒體類_apps">媒體類 apps:</h4>
-<dl>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Gaia_apps/Video">影音 (Video)</a></dt>
- <dd>
- Video 是影音媒體撥放器。</dd>
- <dt>
- <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/camera/README.md">相機 (Camera)</a></dt>
- <dd>
- Firefox OS 使用者透過相機照相、錄影,它也會回應 type 為pick 的 <a href="/en-US/docs/WebAPI/Web_Activities">Web 活動</a>,讓其他想使用相機功能的 app 使用相機。</dd>
-</dl>
-<h3 id="其他_Gaia_特色功能">其他 Gaia 特色功能</h3>
-<p>除了上述功能,Gaia 還有其他功能如 browser, homescreen, marketplace, test framework, PDF viewer, 和 app manager 等。</p>
-<dl>
- <dt>
- <a href="https://github.com/mozilla/pdf.js/blob/master/README.md">pdf.js</a></dt>
- <dd>
- pdf.js 是 HTML5 基礎的 PDF 瀏覽器,Gaia 用其來瀏覽 PDF,請注意 pdf.js 的程式碼庫 (repo) 和 Gaia 是分開來的。</dd>
-</dl>
diff --git a/files/zh-tw/archive/b2g_os/platform/gaia/index.html b/files/zh-tw/archive/b2g_os/platform/gaia/index.html
deleted file mode 100644
index d2a4886cf1..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/gaia/index.html
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: Gaia
-slug: Archive/B2G_OS/Platform/Gaia
-tags:
- - B2G
- - Gaia
- - Mobile
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/B2G_OS/Platform/Gaia
----
-<p>Gaia is the user interface level of <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS" title="Mozilla/Firefox_OS">Firefox OS</a>. Everything that appears on the screen after Firefox OS starts up is drawn by Gaia, including the lock screen, home screen, dialer, and other applications. Gaia is written entirely in <a href="https://developer.mozilla.org/en-US/docs/en-US/HTML" title="HTML">HTML</a>, <a href="https://developer.mozilla.org/en-US/docs/CSS" title="CSS">CSS</a>, and <a href="https://developer.mozilla.org/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>. Its only interface to the underlying operating system and hardware is through standard Web APIs, which are implemented by <a href="https://developer.mozilla.org/en-US/docs/Gecko" title="Gecko">Gecko</a>.</p>
-<p>Because of this design, not only can Gaia be run on Firefox OS devices, but also on other operating systems and in other web browsers (Albeit with potentially degraded functionality depending on the capabilities of the browser).</p>
-<p>Third party applications onto the device installed alongside Gaia can be launched by Gaia.</p>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">Documentation about Gaia</h2>
- <dl>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Introduction_to_Gaia" title="Mozilla/Boot_to_Gecko/Introduction to Gaia">Introduction to Gaia</a></dt>
- <dd>
- Gaia is the user interface application for Firefox OS devices; it's simply a Web application running atop the Firefox OS software stack. This guide introduces Gaia at a high level.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking" title="Mozilla/Boot_to_Gecko/Gaia hacking guide">Gaia hacking guide</a></dt>
- <dd>
- A guide to hacking and modifying the Gaia interface.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer">Gaia Build System Primer</a></dt>
- <dd>
- Most of the meaniful work for the build steps are performed by the scripts that live inside the build/ subdirectory of Gaia.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking_Tips_And_FAQ" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking_Tips_And_FAQ">Gaia Hacking Tips And FAQ</a></dt>
- <dd>
- A list of helpful tips and frequently asked questions around hacking on Gaia.</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/Gaia" title="tag/B2G">View All...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">Getting help from the community</h2>
- <p>If you're working with Gaia, or developing Gaia applications, there are community resources to help you!</p>
- <ul>
- <li>Consult the Boot to Gecko project forum: {{ DiscussionList("dev-gaia", "mozilla.dev.gaia") }}</li>
- </ul>
- <p> </p>
- <br>
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related topics</h2>
- <ul>
- <li><a href="/en-US/docs/Mobile" title="Mobile">Mobile</a></li>
- <li><a href="/en-US/docs/Web" title="/en-US/docs/Web">Web Technology for developer</a>
- <ul>
- <li><a href="/en-US/docs/HTML" title="HTML">HTML</a></li>
- <li><a href="/en-US/docs/CSS" title="CSS">CSS</a></li>
- <li><a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a></li>
- </ul>
- </li>
- <li><a href="/en-US/docs/WebAPI" title="/en-US/docs/WebAPI">WebAPI</a></li>
- </ul>
- <h2 class="Tools" id="Resources" name="Resources">Resources</h2>
- <ul>
- <li><a href="/en-US/docs/Mozilla/Firefox_OS/Architecture" title="Mozilla/Firefox_OS/Architecture">Firefox OS architecture overview</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/platform/gaia/introduction_to_gaia/index.html b/files/zh-tw/archive/b2g_os/platform/gaia/introduction_to_gaia/index.html
deleted file mode 100644
index 27c9ea5ea4..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/gaia/introduction_to_gaia/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Gaia 簡介
-slug: Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia
-translation_of: Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia
----
-<p><a class="external" href="/en/Mozilla/Boot_to_Gecko/Gaia" title="en/Mozilla/Boot_to_Gecko/Gaia">Gaia</a> 是 Boot to Gecko (B2G) 的使用者介面;它只是在 B2G 裝置、模擬器、桌上型電腦版本、或是 Firefox 版本上運作的一個網頁應用程式 (Web application)。如果想要在 Gaia 上添加 apps 程式或是做一些改變的話,所有你需要了解的就是網頁科技 (Web Technologies),例如 <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>、 <a href="/en/HTML" title="en/HTML">HTML</a>、和 <a href="/en/CSS" title="en/CSS">CSS</a>。</p>
-<h2 id="Gaia_的鎖定畫面">Gaia 的鎖定畫面</h2>
-<p>鎖定畫面預設是啟動的,而預設解鎖密碼 (PIN) 是「0000」。隨著這個功能會隨著時間愈趨完整。</p>
-<h2 id="預設的_Gaia_介面">預設的 Gaia 介面</h2>
-<p>Gaia 的預設介面跟大家所見最典型的智慧型手機相仿,如這邊所看到的圖。</p>
-<p><a href="/@api/deki/files/6276/=screenshot.png" title="screenshot.png"><img align="left" alt="screenshot.png" class="internal lwrap" src="/@api/deki/files/6276/=screenshot.png?size=webview" style="width: 330px; height: 550px;"></a>這是張 prerelease 版本作業系統的圖,有一些暫時使用的圖示(和一些測試的程式)。頂端的狀態條顯示手機正在使用哪個行動網路 (如果行動裝置沒有網路的話,會顯示「No SIM card」)、行動網路強度、WiFi 訊號強度、電池使用狀態、和現在的時間。</p>
-<p>畫面的中間區域顯示應用程式的圖示;透過螢幕的圖示切換左右頁。</p>
-<p>在螢幕的底部是一個底座,可以放四個最常用的應用程式。現在底座還不能修改,且被預設顯示播號 (Dialer)、訊息 (Messages)、市集 (Market)、和瀏覽器 (Browser)的程式。</p>
diff --git a/files/zh-tw/archive/b2g_os/platform/gonk/index.html b/files/zh-tw/archive/b2g_os/platform/gonk/index.html
deleted file mode 100644
index 71d064ac30..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/gonk/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Gonk
-slug: Archive/B2G_OS/Platform/Gonk
-translation_of: Archive/B2G_OS/Platform/Gonk
----
-<p>{{draft()}}</p>
-<div class="summary">
- <p>Gonk是<a href="/en-US/docs/Mozilla/Firefox_OS" style="line-height: 1.5;" title="/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a><span style="line-height: 1.5;">的底層系統,包含基於</span><a class="external" href="http://source.android.com/" style="line-height: 1.5;">Android Open Source Project</a><span style="line-height: 1.5;"> (AOSP)</span><span style="line-height: 1.5;">的Linux核心以及硬體抽象層(hardware abstraction layer, HAL)。本文旨在說明Gonk的組成,更多有關FireFox OS架構以及Gonk是如何配置在其中的細節,請參考</span><a href="/en-US/Firefox_OS/Platform/Architecture" style="line-height: 1.5;">Firefox OS架構</a><span style="line-height: 1.5;">指南。</span></p>
-</div>
-<h2 id="Gonk_概觀">Gonk 概觀</h2>
-<p>在Gecko原始碼中,有一個b2g/資料夾,這個資料夾含有Gonk接口,它為網頁開啟了行動裝置的硬體能力。這其中包含了Linux核心、HAL和其他OEM特定的函式庫(library)。好機個Gonk函式庫是開放原始碼專案,如libusb, bluez等,有些HAL部分則是和Android專案共享,如GPS, camera等。</p>
-<p>Gonk是裝置接口層,介於硬體和Gecko之間的配接器。Gonk是一個相對簡單的Linux發布版本,可以視為<a href="/en-US/docs/Gecko" style="line-height: 1.5;">Gecko</a><span style="line-height: 1.5;">的配接目標,就像是Gecko和OS X, Windows和Android的接口。</span></p>
-<div class="note">
- <p><strong>Note</strong>: 由於不同的行動裝置有不同的晶片組與硬體規格,所以可能會有不同的Gonk發布版本。</p>
-</div>
-<p>Firefox OS專案擁有Gonk百分之百的控制權,所以能夠提供Gecko那些原本在其他作業系統上無法看到的介面,例如,Gecko可以直接存取電話系統框架和Gonk的顯示frame buffer。</p>
-<h2 id="Gonk_原始碼">Gonk 原始碼</h2>
-<p><a href="https://github.com/mozilla-b2g/B2G">B2G repo on Github</a> 上有多種裝置的官方Gonk支援移植,可以視為Gonk的檔案庫。至於裝置支援列表,請見B2G/config.sh。</p>
-<p>大部分Gonk相關的日常工作包括了移植Gonk到不同硬體上,還有確保Gecko能在不同硬體上順利運行。</p>
-<dl>
-</dl>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/platform/index.html b/files/zh-tw/archive/b2g_os/platform/index.html
deleted file mode 100644
index fe9474eed5..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Firefox OS 平台
-slug: Archive/B2G_OS/Platform
-translation_of: Archive/B2G_OS/Platform
----
-<p><span class="seoSummary">Firefox OS 平台是由多樣的元件所組成。如果你只是要撰寫能在 Firefox OS 上執行的 App,其實不太需要通盤了解其架構。但如果你從事平台開發、平台移植,甚或只是單純好奇的話,也許會對以下說明文件感興趣。</span></p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">關於 Firefox OS 平台的說明文件</h2>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Introduction" title="en-US/docs/Mozilla/Firefox_OS/Introduction">Firefox OS 架構概述</a></dt>
- <dd>簡單概述 Firefox OS 的內部架構,可供平台開發或移植工程師初步了解 Firefox OS。</dd>
- <dt> </dt>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture">Firefox OS 的 A</a><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture">pp 架構</a></dt>
- <dd>概述 Firefox OS 的 App 模型。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gaia" title="/en-US/docs/Mozilla/Gaia">Gaia</a></dt>
- <dd>Gaia 是 Firefox OS 裝置的使用者介面 (UI) App,也是在 Firefox OS 軟體堆疊上執行的 Web App。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Gonk">Gonk</a></dt>
- <dd>Gonk 的說明文件。Gonk 屬於 Gaia 之下的作業系統層,包含 Linux kernel 硬體抽象層 (Hardware abstraction layer),且由 Gecko 負責之間的溝通。</dd>
- <dt><a href="/en-US/docs/Gecko" title="/en-US/docs/Gecko">Gecko</a></dt>
- <dd>Gecko 即為 Firefox、Thunderbird,以及其他許多 App 所使用的相同 Open Web 標準實作。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security" title="/en-US/docs/Mozilla/Firefox_OS/Security">安全性</a></dt>
- <dd>Firefox OS 的安全性說明文件,包含各個面相的裝置安全,適合 App 開發者、裝置整合商等參考。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Out_of_memory_management_on_Firefox_OS">Firefox OS 記憶體耗盡時的管理作業</a></dt>
- <dd>本文將解釋 Firefox OS 記憶體不足時的管理方式,可透過記憶體清理與記憶體不足通知等功能。</dd>
- <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart">功能支援表</a></dt>
- <dd>各個 Firefox OS 版本所支援的各項功能特色。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list">Firefox OS 設定清單</a></dt>
- <dd>常見的設定名稱清單,可搭配 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Settings" title="/en-US/docs/WebAPI/Settings">Settings</a> API。</dd>
- </dl>
-
- <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">全部文章...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">尋求社群協助</h2>
-
- <p>如果你正在開發 Firefox OS,或是可於 Firefox OS 裝置上執行的 App,則能參閱以下社群資源!</p>
-
- <ul>
- <li>Boot to Gecko 論壇:{{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}</li>
- </ul>
-
- <ul>
- <li>在「Boot to Gecko」的 IRC 頻道上提問:<a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a></li>
- </ul>
-
- <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">請遵守網路禮節...</a></span></p>
-
-
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">相關主題</h2>
-
- <ul>
- <li><a href="/en-US/docs/Mobile" title="en-US/docs/Mobile">Mobile</a></li>
- <li><a href="/en-US/docs/HTML" title="en-US/docs/HTML">HTML</a></li>
- <li><a href="/en-US/docs/CSS" title="en-US/docs/CSS">CSS</a></li>
- <li><a href="/en-US/docs/JavaScript" title="en-US/docs/JavaScript">JavaScript</a></li>
- </ul>
-
- <h2 class="Tools" id="相關資源">相關資源</h2>
-
- <ul>
- <li><a class="link-https" href="https://wiki.mozilla.org/B2G/FAQ" title="B2G/FAQ">Mozilla wiki FAQ</a></li>
- <li><a class="link-https" href="https://wiki.mozilla.org/B2G/Schedule_Roadmap" title="https://wiki.mozilla.org/B2G/Schedule_Roadmap">版本進程</a></li>
- <li><a href="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart">支援功能表</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html b/files/zh-tw/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html
deleted file mode 100644
index 5b7f2045cc..0000000000
--- a/files/zh-tw/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Firefox OS 記憶體管理
-slug: Archive/B2G_OS/Platform/Out_of_memory_management_on_Firefox_OS
-translation_of: Archive/B2G_OS/Platform/Out_of_memory_management_on_Firefox_OS
----
-<div class="summary">
- <p><span class="seoSummary">Firefox OS 會運行在一些記憶體容量不大的裝置上,當程序用盡了記憶體,系統核心就必須關閉其他程序好釋放出記憶體使用。本文旨在描述記憶體關閉和記憶體不足通知如何運作、如何控制關閉那些程序,以確保當記憶體不夠時,主系統還是可以運作。</span></p>
-</div>
-<p>記憶體不足時會有兩個系統介入管理: <strong>Low memory killer (LMK)</strong> 與<strong> Low memory notifications</strong>.</p>
-<h2 id="Low_memory_killer">Low memory killer</h2>
-<p><a href="https://android.googlesource.com/kernel/common.git/+/edd540ea92954f896bfb7ee0ebf5dfdde6e6cb41/drivers/staging/android/lowmemorykiller.txt">LMK</a> 是 Android 核心的次系統,這個次系統負責關閉程序好騰出記憶體使用。為了決定程序關閉優先順序,每一個程序都會透過 <a href="https://www.kernel.org/doc/Documentation/filesystems/proc.txt">/proc/&lt;pid&gt;/oom_adj or /proc/&lt;pid&gt;/oom_score_adj files</a> 被賦予一個優先值,這個優先值為調整分數(adjustment score 或 <code>oom_adj</code>)。</p>
-<p>一般來說 oom_adj 值越大,程序越容易被刪除,LMK 提供多個層級,每個層級對應到一定容量的可用記憶體以及最小 oom_adj 值。當可用記憶體掉到某一個層級,所有 oom_adj 值大於該層級 oom_adj 值的程序都有可能被關閉,LMK 會從占用最多記憶體的程序開始一個一個關閉,直到可用記憶體回復到安全層級為止。</p>
-<div class="note">
- <p><strong>Note</strong>: 被 LMK 關閉的背景 app 仍然以 "殭屍 app" 的形式存在在程序管理員 (task manager),下次再回到該 app,app 會被重新喚醒。目前最大殭屍 app 的數量是 10。</p>
-</div>
-<div class="note">
- <p><strong>Note</strong>: 為了記憶體不足被關閉的 app 不一定就是造成記憶體不足的原因。</p>
-</div>
-<h3 id="程序關閉優先順序">程序關閉優先順序</h3>
-<p>Firefox OS 關閉 app 的優先順序是由每個 app 給定的優先層級和相關聯的 OOM 調整分數所決定 (<a href="http://hg.mozilla.org/mozilla-central/file/545c35907eff/b2g/app/b2g.js#l661">現有值都存在 pref</a>):</p>
-<ol>
- <li>最先關閉的 app 是背景 app,最近最少使用的。</li>
- <li>第二是 homescreen app。</li>
- <li>接下來是使用者可察覺的背景 app (例如,在背景撥放音樂的程式,或高優先 (high-priority)、或持有 cpu wakelock 並且註冊有系統訊息處理器(system messages handler) 的 app)。</li>
- <li>第四是鍵盤程式。</li>
- <li>前景 (Foreground) app 則是第五順位被關閉的 app。</li>
- <li>最後則是前景高優先 (high-priority)、或持有 cpu wakelock 的前景 app。</li>
-</ol>
-<div class="note">
- <p><strong>Note</strong>: 大部分在前景的子程序持有為 2 的oom_adj,背景子程序則持有 3 ~ 6 的 oom_adj,背景子程序到底會持有多大 oom_adj 值取決於許多因素,比如說是否撥放音月或是否屬於 homescreen app。</p>
-</div>
-<p>下面是例外:</p>
-<ul>
- <li>主程序永遠不會被關閉,因為一旦主程序被關閉,所有子程序也會被關閉,系統會重新啟動;主程序的 oom_adj 為 0。</li>
- <li>為了加速新程序啟動,會有一個 <strong>preallocated process</strong> 被一直保留著,這個程序耗費的記憶體相當少,但卻可以顯著加速程式啟動。除非所有能關閉的程序都關閉了,但主程序需要的記憶體依然不足,這時 preallocated process 才會被關閉。</li>
-</ul>
-<h2 id="記憶體過低通知">記憶體過低通知</h2>
-<p>第二個釋放記憶體的機制是記憶體過低通知。當可用記憶體量低過一定的<a href="https://www.codeaurora.org/cgit/quic/la//kernel/msm/commit/?id=b3f986cba580b14438b77b42070ebbc77b69d4c4">門檻值</a>,LMK 便會向使用者空間 (userspace) 發出記憶體過低通知,系統 app 和一般使用者 app 都會等待這個通知,然後透過觀察器服務 (observer service) 發出 <code>memory-pressure 事件回應之;這個事件</code> app 不會直接看見,只有 C++ 和 Chrome JS 程式碼會看到,在 Gecko 裡我們從這個事件中會盡一切可能釋放記憶體 — 通常是刪除內部快取 (images, DNS, sqlite, 等等),拋棄可以回復的物件 (比如 WebGL contexts) 還有執行垃圾回收機制。<br>
- <br>
- 當碰到記憶體過低狀況時,第一個發出的 <code>memory-pressure</code> 事件會有 <code>low-memory</code> <code>負載,倘若經過預定的5秒後我們依然處於記憶體過低狀態,另一個 <code>memory-pressure</code> 事件會發出,不過這一次是帶著</code> <code>low-memory-ongoing</code> 負載,這個時候我們持續處於記憶體過低狀態,很明顯地像一些垃圾回收機制等大動作的作法也不夠了,所以其他一些更低階的記憶體釋放作法會被採行。</p>
-<h2 id="LMK_和記憶體過低通知如何協同運作">LMK 和記憶體過低通知如何協同運作</h2>
-<p>目前<a href="http://hg.mozilla.org/mozilla-central/file/545c35907eff/b2g/app/b2g.js#l722">記憶體過低門檻介於 LMK 的背景 app 層級(大於)和 homescreen 層級(小於)之間</a>,所以整體記憶體不足的反應機制如下:</p>
-<ol>
- <li>關閉最近最不常用的背景 app。</li>
- <li>當記憶體依然不足,發出 <code>memory-pressure</code> 事件通知給所有的 app。</li>
- <li>當記憶體依然不足,每5秒發出 <code>memory-pressure</code> 事件,但標記為 ongoing 讓垃圾回收機制不要回應。</li>
- <li>關閉 homescreen.</li>
- <li>關閉使用者可察覺或高優先值的背景 app。</li>
- <li>關閉運作中的鍵盤 app。</li>
- <li>關閉前景 app。</li>
- <li>關閉高優先值的前景 app。</li>
- <li>關閉 preallocated 程序。</li>
-</ol>
diff --git a/files/zh-tw/archive/b2g_os/preparing_for_your_first_b2g_build/index.html b/files/zh-tw/archive/b2g_os/preparing_for_your_first_b2g_build/index.html
deleted file mode 100644
index 1d165926a1..0000000000
--- a/files/zh-tw/archive/b2g_os/preparing_for_your_first_b2g_build/index.html
+++ /dev/null
@@ -1,138 +0,0 @@
----
-title: 準備第一次建置 B2G
-slug: Archive/B2G_OS/Preparing_for_your_first_B2G_build
-translation_of: Archive/B2G_OS/Preparing_for_your_first_B2G_build
----
-<p>在開始建置 B2G 前,要先複製整個倉儲 (repository)並且作編譯的設定。這篇文章說明要怎麼做。</p>
-
-<h2 id="複製_B2G_倉儲repository">複製 B2G 倉儲(repository)</h2>
-
-<p>在第一次編譯前,要做的第一步就是複製 B2G 的倉儲(repository)。這個步驟將不會把所有東西抓下來!相反地,他會抓 B2G 建置系統和安裝工具。B2G 大部分的程式碼都在主要的 Mozilla <a href="/en/Mercurial" title="en/Mercurial">Mercurial</a> 倉儲。</p>
-
-<p>用 git 來複製倉儲:</p>
-
-<pre>git clone git://github.com/mozilla-b2g/B2G.git</pre>
-
-<p>複製了之後(應該會花個幾分鐘),<code>cd</code> 到 B2G 的目錄:</p>
-
-<pre>cd B2G
-</pre>
-
-<h2 id="複製_B2G_樹tree到一台新機器">複製 B2G 樹(tree)到一台新機器</h2>
-
-<p>當您有一台新電腦時(超幸運的!),您會覺得把 B2G tree 從一台電腦轉移到另一台電腦的話,生活會簡單很多。</p>
-
-<p>將您就電腦的磁碟掛上(mount)到新的電腦,然後敲入下面的指令,就可以做到:</p>
-
-<pre>rsync -a <em>source</em>/ <em>dest</em>/
-</pre>
-
-<p><code>source </code>是整個原始碼樹(source tree)的完整路徑 (包括後面的斜線),而 <code>dest</code> 是您要複製的目的位置 (同樣也包含後面的斜線,它很重要!)。</p>
-
-<p>這樣做之後,您可以跳過這篇文章剩下的部份,然後直接跳到的「<a href="/en/Mozilla/Boot_to_Gecko/Building_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Building_Boot_to_Gecko">建置</a>」部份。</p>
-
-<h2 id="設定專屬於您的行動裝置的_B2G">設定專屬於您的行動裝置的 B2G</h2>
-
-<div class="warning"><strong>重要</strong>:請注意只支援 <strong>Android 4</strong> (aka. <strong>Ice Cream Sandwich</strong>) 的行動裝置。請確認您的手機運作的真的是 ICS,否則這個步驟很可能會失敗於某些非 Nexus 裝置的驅動程式。另外,如果您必須要將行動裝置燒成 ICS,請留意有些 USB hubs 和燒錄工具不相容,因此您可能需要將行動裝置連接到內建的 USB port。</div>
-
-<p>擷取了核心的 B2G 建置系統之後,您需要為了要安裝的行動裝置作設定。您可以使用 <code>config.sh</code> 工具來擷取支援的行動裝置列表,如下:</p>
-
-<pre>./config.sh
-</pre>
-
-<p>這會顯示支援的行動裝置列表;舉例來說:</p>
-
-<pre>Usage: ./config.sh [-cdflnq] (device name)
-Flags are passed through to |./repo sync|.
-
-Valid devices to configure are:
-- galaxy-s2
-- galaxy-nexus
-- nexus-4
-- nexus-4-kk
-- nexus-5
-- nexus-5-l
-- nexus-s
-- nexus-s-4g
-- flo (Nexus 7 2013)
-- otoro
-- unagi
-- inari
-- keon
-- peak
-- hamachi
-- helix
-- tarako
-- dolphin
-- dolphin-512
-- pandaboard
-- vixen
-- flatfish
-- flame
-- flame-kk
-- flame-l
-- rpi (Revision B)
-- emulator
-- emulator-jb
-- emulator-kk
-- emulator-l
-- emulator-x86
-- emulator-x86-jb
-- emulator-x86-kk
-- emulator-x86-l
-&gt; Sony Xperia devices
-- aries (Z3 Compact KK)
-- aries-l (Z3 Compact L)
-- leo-kk (Z3 KK)
-- leo-l (Z3 L)
-- scorpion-l (Z3 Tablet Compact L)
-- sirius-l (Z2 L)
-- tianchi-l (T2U L)
-- flamingo-l (E3 L)</pre>
-
-<p>如果您的行動裝置沒被列出,您應該馬上停止來幫忙將 B2G 移植到您的行動裝置,或是等到某個人移植完之後再安裝。我們當然比較希望您可以幫忙移植!</p>
-
-<div class="note">注意:如果因為任何原因您想要編譯某個版本的 Gecko,請在您著手之前先看 <a href="#Building_against_a_custom_Gecko">Building against a custom Gecko</a>。</div>
-
-<h3 id="設定給行動裝置">設定給行動裝置</h3>
-
-<p>首先,連接您的裝置;設定的過程會需要存取它。</p>
-
-<p>如果您的裝置有被列出,您可以再執行一次 <code>config.sh 來開始設定的程序,這次需要指名您的行動裝置的名字。舉例來說,如果要編譯給 Samsung Google Nexus S的話,您要打:</code></p>
-
-<pre>./config.sh nexus-s
-</pre>
-
-<p>在設定一開始的附近您可能會需要設定使用顏色的選項,而在這之後設定程序會繼續下去。接著可以去喝個咖啡休息一下,因為這個時候您會第一次把建置 Boot to Gecko 中所有需要的程式碼都抓下來。</p>
-
-<p>如果您的手機不再使用 Android 且 B2G tree 還沒裝到手機上,而您又有遵照前幾頁所說、聰明地作了一份 <code>/system</code> 磁區的備份的話,您可以這樣使用它:</p>
-
-<pre>ANDROIDFS_DIR=&lt;absolute path to parent dir of system dir&gt; ./config.sh &lt;target&gt;
-</pre>
-
-<h3 id="設定來建置模擬器">設定來建置模擬器</h3>
-
-<p>如果您要編譯模擬器的話,就需要指定 "emulator" 來使用 ARM 的模擬器,或是 "emulator-x86" 來編譯 x86 模擬器。後者比較快,但也因此在表現實際行動裝置上較不準確。<br>
- <br>
- 舉例來說,您要像下面這樣設定來編譯 ARM 模擬器:</p>
-
-<pre>./config.sh emulator
-</pre>
-
-<p>在設定一開始的附近您可能會需要設定使用顏色的選項,而在這之後設定程序會繼續下去。接著可以去喝個咖啡休息一下,因為這個時候您會第一次把建置 Boot to Gecko 中所有需要的程式碼都抓下來。</p>
-
-<h2 id="編譯客製的_Gecko">編譯客製的 Gecko</h2>
-
-<p>可能您會想要或需要以好幾種版本的 Gecko 來編譯 Boot to Gecko (manifest 中預設是一種)。您可以在您抓倉儲 (在上述的 config.sh 之前),藉由編輯 .userconfig 來做到這件事情。舉例來說,如果您要根據 mozilla-central 來編譯:</p>
-
-<pre>GECKO_PATH=/path/to/mozilla-central
-GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk
-</pre>
-
-<div class="note">
-<p>注意: 如果是在 Mac OS X 下客製化編譯的話,檔案系統本身會注意 mozilla-central 的大小寫。</p>
-</div>
-
-<p>您可以參考 <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file" title="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file">客製化 .userconfig 設定檔</a> 來客製化更多東西。</p>
-
-<p>接著,<a href="/en/Mozilla/Boot_to_Gecko/Building_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Building_Boot_to_Gecko">開始編譯</a></p>
diff --git a/files/zh-tw/archive/b2g_os/quickstart/app_tools/index.html b/files/zh-tw/archive/b2g_os/quickstart/app_tools/index.html
deleted file mode 100644
index bc539adefa..0000000000
--- a/files/zh-tw/archive/b2g_os/quickstart/app_tools/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: App tools
-slug: Archive/B2G_OS/Quickstart/App_tools
-translation_of: Archive/B2G_OS/Quickstart/App_tools
----
-<div class="summary">
- <p><span class="short_text" id="result_box" lang="zh-TW"><span><span class="short_text" id="result_box" lang="zh-TW"><span>您</span></span>用什麼</span><span>來建</span><span>立開放式</span><span>Web應用程序</span></span>?<span class="short_text" id="result_box" lang="zh-TW"><span>答案</span><span>是,"</span><span>你通常會</span><span>用它來</span><span>建立</span><span>網絡'</span><span>。</span></span><span class="short_text" id="result_box" lang="zh-TW"><span>以下是</span><span>工具和資源</span><span>的清單</span><span>,可以</span><span>幫助您開始</span><span>做</span><span>開放式</span><span>Web應用程序</span><span>。</span></span><span id="result_box" lang="zh-TW"><span>他們可以</span><span>很容易地成</span><span>您現有的</span><span>Web開發工作流程</span><span>,如果</span><span>你有一個,</span><span>或者你</span><span>可以將它們</span><span>周圍</span><span>建立為一個</span><span>新的工作流程</span><span>。</span></span></p>
-</div>
-<h2 id="應用程序驗證程序"><span class="short_text" id="result_box" lang="zh-TW"><span>應用程序</span><span>驗證程序</span></span></h2>
-<p><span class="short_text" id="result_box" lang="zh-TW"><span>您的應用程序</span><span>以準備好</span><span>進入Firefox</span><span>市場</span><span>?</span></span><span class="short_text" id="result_box" lang="zh-TW"><span><a href="https://marketplace.firefox.com/developers/validator">應用程序驗證器</a><span>會</span><span>檢查你的</span><span>清單</span><span>,並會</span><span>顯示任何</span><span>錯誤,</span><span>它也有可能<span class="short_text" id="result_box" lang="zh-TW"><span><span>會</span><span>顯示</span></span></span></span><span>你沒有考慮</span><span>過的警告</span><span>。</span></span></span></p>
-<h2 id="火狐系統模擬器"><span class="short_text" id="result_box" lang="zh-TW"><span>火狐</span><span>系統</span><span>模擬器</span></span></h2>
-<p><span class="short_text" id="result_box" lang="zh-TW"><span>安裝和</span><span>使用</span></span><span class="short_text" id="result_box" lang="zh-TW"><span><a href="https://marketplace.firefox.com/developers/docs/firefox_os_simulator">火狐系統模擬器</a>是</span><span>開始</span><span>和令</span><span>你的應用程序</span><span>運行</span><span>的</span><span>最簡單的方法</span><span>。</span></span><span class="short_text" id="result_box" lang="zh-TW"><span>安裝</span><span>後</span><span>的</span><span>模擬器,</span><span>通過 工具</span><span>-</span><span>&gt;</span> <span class="hps">Web開發</span><span> -</span><span>&gt;</span><span> 火狐</span><span class="short_text" id="result_box" lang="zh-TW"><span>系統</span></span><span>模擬器</span><span>菜單。<span class="short_text" id="result_box" lang="zh-TW"><span>啟動後,</span></span></span></span><span class="short_text" id="result_box" lang="zh-TW"><span> 便會有JavaScript控制台</span><span>,以便您</span><span>可以</span><span>從模擬器</span><span>中</span><span><span class="short_text" id="result_box" lang="zh-TW"><span>測</span></span>試應用程序</span><span>的</span><span>啟動</span><span><span class="short_text" id="result_box" lang="zh-TW"><span>和刪除</span><span>錯誤</span></span>!</span></span></p>
-<h2 id="應用程序管理器"><span class="short_text" id="result_box" lang="zh-TW"><span>應用程序管理器</span></span></h2>
-<div class="almost_half_cell" id="gt-res-content">
- <div dir="ltr" style="zoom: 1;">
-  </div>
-</div>
-<p><span class="short_text" id="result_box" lang="zh-TW"><span>新</span><span>的測試工具</span><span>被稱為</span><span><a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_App_Manager">應用程序管理器</a></span><span>。</span></span><span class="short_text" id="result_box" lang="zh-TW"><span><span class="short_text" id="result_box" lang="zh-TW"><span>這個工具</span><span>可以讓你</span><span>通過USB</span>以<span>火狐</span><span>來連接至兼容的</span><span>設備(或</span><span>一個<span class="short_text" id="result_box" lang="zh-TW"><span>火狐</span><span class="short_text" id="result_box" lang="zh-TW"><span>系統</span></span><span>模擬器</span></span></span><span>)</span></span></span></span><span class="short_text" id="result_box" lang="zh-TW"><span>把</span><span>應用程序</span><span>直接</span><span>存在設備上,</span><span>驗證</span><span>的應用程序,</span><span>並</span><span>在</span><span>設備上<span class="short_text" id="result_box" lang="zh-TW"><span><span class="short_text" id="result_box" lang="zh-TW"><span>刪除</span><span>錯誤</span></span></span></span></span><span>。</span></span></p>
-<h2 id="Firefox的開發者工具">Firefox的<span class="short_text" id="result_box" lang="zh-TW"><span>開發者工具</span></span></h2>
-<div class="almost_half_cell" id="gt-res-content">
- <div dir="ltr" style="zoom: 1;">
- <div class="almost_half_cell" id="gt-res-content">
- <div dir="ltr" style="zoom: 1;">
- <span class="short_text" id="result_box" lang="zh-TW"><span>火狐</span><span>現在提供</span><span>了一套</span><span>開發</span><span>工具</span><span>,確保</span><span>了極大的發展</span><span>經驗</span><span>,既</span><span>好用</span><span>,又高效率。<span id="result_box" lang="zh-TW"><span>欲了解更多</span><span>有關這些工具</span><span>如何運作</span><span>,看看</span><span>還有什麼</span><span>的Mozilla</span><span>所提供的,</span><span>請到我們的</span><span><a href="/en-US/docs/Tools">工具區域</a></span><span>。</span></span></span></span></div>
- </div>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/quickstart/index.html b/files/zh-tw/archive/b2g_os/quickstart/index.html
deleted file mode 100644
index a5bb4fa406..0000000000
--- a/files/zh-tw/archive/b2g_os/quickstart/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: Build
-slug: Archive/B2G_OS/Quickstart
-tags:
- - Apps
- - NeedsTranslation
- - Quickstart
- - TopicStub
-translation_of: Archive/B2G_OS/Quickstart
----
-<div class="summary">
- <p><span class="seoSummary">Quickstart information on coding open web apps.</span></p>
-</div>
-<dl>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_open_web_apps">Introduction to open web apps</a></dt>
- <dd>
- What are open web apps? How they differ from regular web pages? Why is this significant? This article aims to answer these questions and more.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/Your_first_app">Your first app</a></dt>
- <dd>
- This article takes you through the basic steps and additional knowledge on top of regular web development required to create installable open web apps.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_Firefox_OS">Introduction to Firefox OS</a></dt>
- <dd>
- An introduction to Firefox OS, Mozilla's new open web app-based mobile platform.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_manifests">Introduction to manifests</a></dt>
- <dd>
- An FAQ designed to answer any questions you may have about manifests, hosting apps, origins, and other such topics.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/For_Web_developers">App development for web developers</a></dt>
- <dd>
- If you're a web developer, how do open web apps differ from what you're used to? This article explains all.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/For_mobile_developers">App development for mobile developers</a></dt>
- <dd>
- If you're a native mobile application developer, what advantages can open web apps bring to you, and how do they differ from what you are used to? Here are some ideas.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/Developing_app_functionality">Developing app functionality</a></dt>
- <dd>
- This page talks about the kinds of different functionality that you might want to build into your apps, with links to further information.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/Payments">Payments</a></dt>
- <dd>
- How do you build functionality to make people pay for installing your open web apps? Here is the lowdown.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Quickstart/Build/App_tools">App tools</a></dt>
- <dd>
- Last for this section, we provide some links to more information on the tools available to help you develop great open web apps.</dd>
-</dl>
diff --git a/files/zh-tw/archive/b2g_os/quickstart/your_first_app/index.html b/files/zh-tw/archive/b2g_os/quickstart/your_first_app/index.html
deleted file mode 100644
index d40315b16c..0000000000
--- a/files/zh-tw/archive/b2g_os/quickstart/your_first_app/index.html
+++ /dev/null
@@ -1,265 +0,0 @@
----
-title: Your first app
-slug: Archive/B2G_OS/Quickstart/Your_first_app
-translation_of: Archive/B2G_OS/Quickstart/Your_first_app
----
-<div class="note">
-<p><strong>Note</strong>: 快速入門這段章節已經取代先前舊的快速入門章節,更新為最新的及更專注於<a href="/en-US/Apps/Build/installable_apps_for_Firefox_OS/Firefox_OS_app_essentials">Firefox OS app essentials</a> 文章。我們希望你將發現這份是比舊文更有用和更快學習經驗的文章。</p>
-</div>
-
-<article class="brush: js">
-<div class="summary">
-<p>開放式Web應用讓開發人員實現了期盼多年的夙願:通過Firefox OS這一首款開放式Web應用平台,可以僅僅使用HTML、CSS和JavaScript在跨平台的環境中生成可部署的應用。本手冊包含了基本的架構和應用構建指南,你能夠迅速掌握這些內容並開始創造自己的下一個偉大的應用!</p>
-</div>
-
-<p>如果你想按照本指南開發,你可以下載我們的<a href="https://github.com/chrisdavidmills/mdn-app-template">quick start app template</a>.  或可以藉由參閱我們的<a href="/en-US/docs/Project:MDN/Style_guide/Sample_app_coding_guidelines#Apps_template">Apps template</a> 指南,找到更多有關的內容。</p>
-
-<h2 id="App_結構">App 結構</h2>
-
-<h3 id="打包型_Apps_VS._托管型_Apps">打包型 Apps VS. 托管型 Apps</h3>
-
-<p>開放網絡應用有兩種類型:打包型和托管型。打包型apps本質上來說就是一個包含各種HTML、CSS、JavaScript、圖像、表單等應用資源的zip文件。托管型apps在一個給定域名的服務器上運行,就像是一個獨立的網站。兩種應用都需要有有效的表單。到了要在火狐市場中列出你的app,你要上傳app zip文件或提供托管app所在的URL。</p>
-
-<div style="width: 480px; margin: 0 auto;">
-<p>{{EmbedYouTube("Q7x-B13y33Q")}}</p>
-
-<div class="video-caption">
-<p>用Treehouse為製作夥伴: <a class="button" href="http://teamtreehouse.com/?cid=1154">Check them out!</a></p>
-</div>
-</div>
-
-<p>本指南的目的,會讓你將創建一個於本機(localhost)地址上的托管型app。一旦你的app準備好進入火狐市場,你可以選擇把它作為打包app或作為托管app啓動。</p>
-
-<h3 id="App_表單">App 表單</h3>
-
-<p>每一個火狐app都需要一個位於根目錄下的manifest.webapp文件, 這個<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest"><code>manifest.webapp</code></a> 文件提供app有關的重要信息,如:版本、名稱、描述、圖標位址、本地字符串、指明app可以從哪兒被安裝等等。只有名稱和描述是必須的。app模板中的簡單表單如下所示:</p>
-
-<pre class="brush: js">{
- "version": "0.1",
- "name": "Open Web App",
- "description": "Your new awesome Open Web App",
- "launch_path": "/app-template/index.html",
- "icons": {
- "16": "/app-template/app-icons/icon-16.png",
- "48": "/app-template/app-icons/icon-48.png",
- "128": "/app-template/app-icons/icon-128.png"
- },
- "developer": {
- "name": "Your Name",
- "url": "http://yourawesomeapp.com"
- },
- "locales": {
- "es": {
- "description": "Su nueva aplicación impresionante Open Web",
- "developer": {
- "url": "http://yourawesomeapp.com"
- }
- },
- "it": {
- "description": "La tua nuova fantastica Open Web App",
- "developer": {
- "url": "http://yourawesomeapp.com"
- }
- }
- },
- "default_locale": "en"
-}</pre>
-
-<div style="width: 480px; margin: 0 auto;">
-<p>{{EmbedYouTube("dgAUgHQOm8M")}}</p>
-
-<div class="video-caption">
-<p>Made in partnership with Treehouse: <a class="button" href="http://teamtreehouse.com/?cid=1154">Check them out!</a></p>
-</div>
-</div>
-
-<p> </p>
-
-<p>一個基本的表單是你所需要最先上手的地方。關於表單的更多細節,見<a href="/en-US/docs/Web/Apps/Manifest">App Manifest</a>.</p>
-
-<h2 id="App_佈局_設計">App 佈局 &amp; 設計</h2>
-
-<p>隨著不同設備上屏幕解析度標準的增多,響應式設計已經變得越來越重要。即使你app的主要目標平台是移動平台比如Firefox OS,其他設備很有可能也會訪問它。<a href="//developer.mozilla.org/docs/CSS/Media_queries">CSS media queries</a> 使你可以根據設備調整佈局,如下的CSS樣例中所示的結構:</p>
-
-<pre class="brush: css">/* The following are examples of different CSS media queries */
-
-/* Basic desktop/screen width sniff */
-@media only screen and (min-width : 1224px) {
- /* styles */
-}
-
-/* Traditional iPhone width */
-@media
- only screen and (-webkit-min-device-pixel-ratio : 1.5),
- only screen and (min-device-pixel-ratio : 1.5) {
- /* styles */
-}
-
-/* Device settings at different orientations */
-@media screen and (orientation:portrait) {
- /* styles */
-}
-@media screen and (orientation:landscape) {
- /* styles */
-}</pre>
-
-<p>有許多JavaScript和CSS的框架可以用於協助響應式設計和移動app發展(<a href="http://twitter.github.com/bootstrap">Bootstrap</a>等),選擇最適合你的app和開發樣式的框架即可。</p>
-
-<h2 id="Web_APIs">Web APIs</h2>
-
-<p>JavaScript APIs正隨著設備快速開發,同時地被創造和增強。Mozilla的<a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> 致力於為JavaScript APIs引入成打的標準移動端特性。設備支援和狀況列表可以在<a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> 頁面中查看。在下面這個例子中,JavaScript 特徵偵測仍然是最好的例子:</p>
-
-<pre class="brush: js">// If this device supports the vibrate API...
-if('vibrate' in navigator) {
- // ... vibrate for a second
- navigator.vibrate(1000);
-}</pre>
-
-<p>在下面這個例子中,&lt;div&gt;的顯示樣式會根據設備的電池狀態的改變而改變:</p>
-
-<pre class="brush: javascript">// Create the battery indicator listeners
-(function() {
- var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery,
- indicator, indicatorPercentage;
-
- if(battery) {
- indicator = document.getElementById('indicator'),
- indicatorPercentage = document.getElementById('indicator-percentage');
-
- // Set listeners for changes
- battery.addEventListener('chargingchange', updateBattery);
- battery.addEventListener('levelchange', updateBattery);
-
- // Update immediately
- updateBattery();
- }
-
- function updateBattery() {
- // Update percentage width and text
- var level = (battery.level * 100) + '%';
- indicatorPercentage.style.width = level;
- indicatorPercentage.innerHTML = 'Battery: ' + level;
- // Update charging status
- indicator.className = battery.charging ? 'charging' : '';
- }
-})();</pre>
-
-<p>在上面的示例代碼中,一旦你確定設備支持<a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery">Battery API</a>,你就可以為chargingchange 和 levelchange添加 event listeners 來更新元素的樣式。試試添加下面的指令到快速入門模板,你會看到你的工作效果。</p>
-
-<p>時常檢查<a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> 頁面以確保更新設備API的狀態。</p>
-
-<h3 id="Install_API_功能">Install API 功能</h3>
-
-<p>在我們的快速入門應用模板範例中,我們已經實現了一個安裝按鈕,可以在你把應用當作一個標準網頁來瀏覽時可以單擊它來把那個網站當作一個應用安裝在Firefox OS上。按鈕標籤並沒有什麼特別的:</p>
-
-<pre class="brush: html">&lt;button id="install-btn"&gt;Install app&lt;/button&gt;</pre>
-
-<p>按鈕的功能由Install API實現(見install.js):</p>
-
-<pre class="brush: js">var manifest_url = location.href + 'manifest.webapp';
-
-function install(ev) {
-  ev.preventDefault();
-  // define the manifest URL
-  // install the app
-  var installLocFind = navigator.mozApps.install(manifest_url);
-  installLocFind.onsuccess = function(data) {
-    // App is installed, do something
-  };
-  installLocFind.onerror = function() {
-    // App wasn't installed, info is in
-    // installapp.error.name
-    alert(installLocFind.error.name);
-  };
-};
-
-// get a reference to the button and call install() on click if the app isn't already installed. If it is, hide the button.
-var button = document.getElementById('install-btn');
-
-var installCheck = navigator.mozApps.checkInstalled(manifest_url);
-
-installCheck.onsuccess = function() {
-  if(installCheck.result) {
-    button.style.display = "none";
-  } else {
-    button.addEventListener('click', install, false);
-  };
-};
-</pre>
-
-<p>我們來簡要的看一下發生了什麼:</p>
-
-<p>1. 我們得到一個安裝按鈕的引用並把它儲存在button變量中。<br>
- 2. 我們使用navigator.mozApps.checkInstalled 來檢查這個由http://people.mozilla.com  /~cmills/location-finder/manifest.webapp 這個表單來定義的應用是否已經安裝在設備上。這個測試結果被儲存在installCheck這個變量中。<br>
-  3. 當測試被成功完成時,它的成功會完成事件被觸發,因此installCheck.onsuccess = function() { ... }會被執行。<br>
-  4. 然後我們用一個if語句判斷installCheck.result是否存在?如果存在,以為著app已經被安裝了,我們就隱藏安裝按鈕。在應用已經被安裝的情況下不需要安裝按鈕。<br>
-  5. 如果app沒有被安裝,為按鈕添加一個單擊事件監聽器。所以在按鈕被單擊的時候,install()函數會被執行。<br>
-  6. 當單擊按鈕並且install()函數執行時,我們把表單檔案位置保存在一個叫manifest_url的變量中,然後利用navigator.mozApps.install(manifest_url)來安裝app,用一個installLocFind變量來儲存對那個安裝的app參考資訊。你會注意到安裝也會觸發success和error事件,所以你可以根據應用是否成功安裝來執行不同的動作。</p>
-
-<p>第一次遇到可安裝web apps時,你可能想要覈實<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/JavaScript_API">implementation state of the API</a> 的執行狀態。</p>
-
-<p>注意:可安裝開放web apps有一個「每個來源(origin,感覺就是URL的意思)就是一個app」的安全策略;基本上, 你不可以在一個來源上托管多個可安裝apps。這會讓檢測變得有一點複雜,但是仍有很多辦法解決這個問題,比如為應用創建多個子域名、用Firefox OS模擬器測試應用、或者在Firefox Aurora/Nightly上安裝測試功能,通過這種方式你可以在桌面環境上安裝開發web app。關於來源的跟多信息詳見<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/FAQs/About_app_manifests">FAQs about apps manifests</a>。</p>
-
-
-<h2 id="WebRT_APIs_(基於權限的_APIs)">WebRT APIs (基於權限的 APIs)</h2>
-
-<p>有些WebAPI雖然可以使用但是需要特定的功能開啓才具有使用的權限。應用可能會像下面這樣在manifest.webapp中記錄權限請求:</p>
-
-<pre class="brush: js">// New key in the manifest: "permissions"
-// Request access to any number of APIs
-// Here we request permissions to the systemXHR API
-"permissions": {
- "systemXHR": {}
-}</pre>
-
-<p>權限分為下面三個等級:</p>
-
-<ol>
- <li>
- <p>一般權限——不需要任何特定訪問權限的API。</p>
- </li>
- <li>
- <p>特殊權限——只要開發者在app表單文件中設置了訪問權限就可以在應用中利用並通過可信任來源進行分發的API。</p>
- </li>
- <li>
- <p>認證權限——控制力設備上關鍵功能的API,比如打電話和發短信的服務。這些一般不允許第三方開發者使用。</p>
-
- <p>關於應用權限等級的更多信息,請閱讀<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Packaged_apps#Types_of_packaged_apps" title="/en-US/docs/Web/Apps/Packaged_apps#Types_of_packaged_apps">Types of packaged apps</a>。你可以在應用權限中找到更多關於API要求權限和需要什麼樣的<a href="/en-US/docs/Web/Apps/App_permissions">App permissions</a>.。</p>
- </li>
-</ol>
-
-<div class="note">
-<p>有一點需要注意的很重要就是不是所有的Web API都可以在Firefox OS模擬器中執行。</p>
-</div>
-
-<h2 id="工具_測試">工具 &amp; 測試</h2>
-
-<p>測試在對移動應用的支持中是至關重要的。測試可安裝的開放web app有多種方式。</p>
-
-<h2 id="WebIDE_和_Firefox_OS_模擬器">WebIDE 和 Firefox OS 模擬器</h2>
-
-<p>安裝和使用Firefox OS模擬器是啓動和運行你的應用最簡單的方式。在你安裝模擬器之後,可以通過工具-&gt;web開發者-&gt;Firefox OS模擬器菜單來啓動。模擬器啓動時會有一個Javascript控制台,這樣你就可以在模擬器中調試你的應用。</p>
-
-<p>測試工具的新寵兒被稱為app管理器<a href="/en-US/docs/Tools/WebIDE">WebIDE</a>。這個工具允許你通過USB鏈接桌面火狐瀏覽器和一個可兼容性設備(或者一個Firefox OS模擬器),直接將app推送到設備上,驗證app並且像運行在設備上一樣的調試。</p>
-
-<h3 id="單元測試">單元測試</h3>
-
-<p>當在測試不同設備和版本時,單元測試就會非常有價值。jQuery的<a href="http://qunitjs.com">QUnit</a> 是一個流行的客戶端測試工具,當然你也可以使用任何你喜歡的測試工具。</p>
-
-<h3 id="在設備上安裝Firefox_OS">在設備上安裝Firefox OS</h3>
-
-<p>既然Firefox OS是一個開源平台,代碼和工具都可以用於在你自己的設備上構建和安裝Firefox OS。構建和安裝指南以及什麼設備可以安裝的注意事項可以在<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform">MDN</a>上發現。</p>
-
-<p>特定的Firefox OS開發者預覽版設備可以在<a href="https://marketplace.firefox.com/developers/dev_phone">Developer preview phone page</a>找到更多信息。<br>
- 應用。</p>
-
-<h2 id="App_提交和分發">App 提交和分發</h2>
-
-<p>一旦你的app完成,你可以像標準網站或app一樣托管它(更多信息請閱讀<a href="/en-US/docs/Web/Apps/Publishing/Self-publishing_Apps">Self-publishing apps</a> ),或者可以<a href="https://marketplace.firefox.com/developers/submit/app/manifest">submitted</a>到<a href="https://marketplace.firefox.com">Firefox Marketplace</a>。你的app表單將被驗證並且你可以選擇你的應用將支持的設備(比如:Firefox OS、桌面版火狐瀏覽器、移動版火狐瀏覽器、平板火狐瀏覽器)。一旦驗證通過,你可以為你的app添加更多細節(截屏、描述、價格等)並且正式在火狐市場中提交app列表。提交成功後,你的應用可以被任何人購買和安裝。</p>
-
-<h3 id="更多商場_上市信息">更多商場 &amp; 上市信息</h3>
-
-<p>    1. 向Firefox OS商場中提交應用 <a href="/en-US/docs/Web/Apps/Publishing/Submitting_an_app">Submitting an App to the Firefox OS Marketplace </a><br>
-     2. 市場審查標準<a href="/en-US/docs/Web/Apps/Publishing/Marketplace_review_criteria"> Marketplace Review Criteria </a><br>
-     3. 應用提交演練視頻 <a href="http://s.vid.ly/embeded.html?link=8k2n4w&amp;autoplay=false">App Submission Video Walkthrough</a></p>
-</article>
diff --git a/files/zh-tw/archive/b2g_os/releases/1.2/index.html b/files/zh-tw/archive/b2g_os/releases/1.2/index.html
deleted file mode 100644
index bc8f785f6b..0000000000
--- a/files/zh-tw/archive/b2g_os/releases/1.2/index.html
+++ /dev/null
@@ -1,465 +0,0 @@
----
-title: Firefox OS 1.2 for developers
-slug: Archive/B2G_OS/Releases/1.2
-translation_of: Archive/B2G_OS/Releases/1.2
----
-<div class="summary">
-<p><span class="seoSummary">Firefox OS 1.2 is at a pre-release stage right now. Its Gecko component is based on Firefox 26 (encompassing all Gecko additions between Firefox 19 and Firefox 26; see <a href="/en-US/docs/Mozilla/Firefox/Releases/26">Firefox 26 release notes for developers</a> for the latest.) This page details the developer features newly implemented in Firefox OS 1.2.</span></p>
-</div>
-
-<h2 id="Developer_Tools">Developer Tools</h2>
-
-<ul>
- <li>Firefox OS versions 1.2 and above are compatible with the <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_App_Manager">Firefox App Manager</a>.</li>
-</ul>
-
-<h2 id="HTML">HTML</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>The <code><a href="/zh-TW/docs/Web/HTML/Element/iframe#attr-srcdoc">srcdoc</a></code> attribute of <a href="/zh-TW/docs/Web/HTML/Element/iframe" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;iframe&gt;</code></a>, allowing the inline specification of the content of an <a href="/zh-TW/docs/Web/HTML/Element/iframe" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;iframe&gt;</code></a>, is now supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=802895" title="FIXED: implement &lt;iframe srcdoc=''> to allow document content in iframe to be specified inline">bug 802895</a>).</li>
- <li>When used with a <code>"image/jpeg"</code> type, the method <code>HTMLCanvasElement.toBlob</code> now accepts a third attribute defining the quality of the image (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=891884" title="FIXED: toBlob should support the quality parameter as toDataURL does">bug 891884</a>).</li>
- <li>The <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track" title="The track element is used as a child of the media elements—&lt;audio> and &lt;video>—and does not represent anything on its own. It lets you specify timed text tracks (or time-based data)."><code>&lt;track&gt;</code></a> element has been implemented behind the <code>media.webvtt.enabled</code> property (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=833385" title="FIXED: [webvtt] Implement Track element and TextTrack* DOM classes">bug 833385</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/HTML/Element/blink" title="非標準元素 HTML Blink(&lt;blink>)可以讓該元素裡面的文字緩慢閃爍。"><code>&lt;blink&gt;</code></a> element support is now completely dropped. The <code>&lt;blink&gt;</code> tag now implements the <a href="/zh-TW/docs/Web/API/HTMLUnknownElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLUnknownElement</code></a> interface (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=857820" title="FIXED: Drop only blink effect from text-decoration: blink; and completely remove &lt;blink> element">bug 857820</a>).</li>
- <li>The <code>range</code> state of the <a href="/zh-TW/docs/Web/HTML/Element/input" title="The HTML &lt;input> element is used to create interactive controls for web-based forms in order to accept data from the user."><code>&lt;input&gt;</code></a> element (<code>&lt;input type="range"&gt;</code>) has been switched on by default (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=841950" title="FIXED: Flip the pref to enable &lt;input type=range> for release builds">bug 841950</a>).</li>
- <li>The HTML5 <a href="/zh-TW/docs/Web/HTML/Element/data" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;data&gt;</code></a> element has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839371" title="FIXED: Implement HTML5 &lt;data> element">bug 839371</a>).</li>
- <li>The HTML5 <a href="/zh-TW/docs/Web/HTML/Element/time" title="HTML &lt;time> element 用以表示時間,可以是24小時制時間或以公曆紀年的日期(日期可以添加時間和時區的資訊)"><code>&lt;time&gt;</code></a> element has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=629801" title="FIXED: Implement HTML5 &lt;time> element">bug 629801</a>).</li>
- <li>The <code>range</code> state of the <a href="/zh-TW/docs/Web/HTML/Element/input" title="The HTML &lt;input> element is used to create interactive controls for web-based forms in order to accept data from the user."><code>&lt;input&gt;</code></a> element (<code>&lt;input type="range"&gt;</code>) has been implemented, behind the preference <code>dom.experimental_forms_range</code>, only enabled by default on Nightly and Aurora channel (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=841948" title="FIXED: Flip the pref to enable &lt;input type=range> on Nightly and Aurora">bug 841948</a>).</li>
- <li>The support for the <a href="/zh-TW/docs/Web/HTML/Element/template" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;template&gt;</code></a> element, part of the Web component specification has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=818976" title="FIXED: Implement web components template.">bug 818976</a>).</li>
- <li>The <code><a href="/zh-TW/docs/Web/HTML/Element/style#attr-scoped">scoped</a></code> attribute has been added to the <a href="/zh-TW/docs/Web/HTML/Element/style" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;style&gt;</code></a> element. It allows to include styles that are isolated from the rest of the document. Such styles can be selected using the <a href="/zh-TW/docs/Web/CSS/:scope" title="The documentation about this has not yet been written; please consider contributing!"><code>:scope</code></a> CSS pseudo-element introduced in Firefox 20. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=508725" title="FIXED: Implement HTML 5 scoped attribute on STYLE tag">bug 508725</a>).</li>
- <li>The new HTML <a href="/zh-TW/docs/Web/HTML/Element/main" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;main&gt;</code></a> element has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820508" title="FIXED: Add support for &lt;main> element">bug 820508</a>).</li>
- <li>Support for the <code><a href="/zh-TW/docs/Web/HTML/Element/a#attr-download">download</a></code> attribute on the <a href="/zh-TW/docs/Web/HTML/Element/a" title="HTML 的超連結元素(&lt;a>,意為 Anchor)用來定義超連結或連結,至位在任何一個網頁(可以是自己)的目標位置。超連結元素同時也可以用來(儘管此方法已被淘汰)作為網頁中的錨點,此錨點可以讓其他超連結指向網頁中的某部份內容,讓超連結不只是單純連接到網頁的最頂端而已。"><code>&lt;a&gt;</code></a> and <a href="/zh-TW/docs/Web/HTML/Element/area" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;area&gt;</code></a> element has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=676619" title="FIXED: Implement proposed download attribute">bug 676619</a>).</li>
- <li>The value <code>auto </code>for the <a href="/en-US/docs/HTML/Global_attributes" title="HTML/Global_attributes">global attribute</a> <a href="/en-US/docs/HTML/Global_attributes#attr-dir" title="HTML/Global_attributes"><code>dir</code></a> has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548206" title="FIXED: Implement the auto value for the HTML dir attribute">bug 548206</a>).</li>
-</ul>
-
-<h2 id="CSS">CSS</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>@font-feature-values rule support (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=549861" title="FIXED: implement parsing of font feature properties">bug 549861</a>)</li>
- <li>StyleRule{Added,Removed,Changed}, StyleSheetApplicableStateChange, StyleSheetChange events (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839103" title="FIXED: Provide notifications for style sheet added and removed to chrome JS">bug 839103</a>)</li>
- <li>The <a href="/zh-TW/docs/Web/CSS/text-decoration-line" title="The documentation about this has not yet been written; please consider contributing!"><code>text-decoration-line</code></a> property, still prefixed, now considers <code>'blink'</code> as a valid value, though it doesn't blink the content at all (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812995" title="FIXED: add 'blink' to -moz-text-decoration-line and drop -moz-text-blink">bug 812995</a>).</li>
- <li>The non-standard<code> </code><a href="/zh-TW/docs/Web/CSS/-moz-text-blink" title="The documentation about this has not yet been written; please consider contributing!"><code>-moz-text-blink</code></a> property has been removed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812995" title="FIXED: add 'blink' to -moz-text-decoration-line and drop -moz-text-blink">bug 812995</a>).</li>
- <li>Support for the <a href="/zh-TW/docs/Web/CSS/image-orientation" title="The documentation about this has not yet been written; please consider contributing!"><code>image-orientation</code></a> property, in its CSS Images &amp; Values Level 4 version, that is with the <code>from-image</code> keyword and EXIF support, has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=825771" title="FIXED: [css3-images] implement 'image-orientation' property">bug 825771</a>).</li>
- <li>Support for <code>position: sticky</code> can be enabled by pref <code>layout.css.sticky.enabled</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=886646" title="FIXED: implement position:sticky">bug 886646</a>).</li>
- <li>The support for the keyword <code>local</code> as a value of the <a href="/zh-TW/docs/Web/CSS/background-attachment" title="The documentation about this has not yet been written; please consider contributing!"><code>background-attachment</code></a> CSS property has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=483446" title="FIXED: CSS3 background-attachment: local support">bug 483446</a>).</li>
- <li>Support of a non-standard Mozilla-only media query to determine the operating system version has been added: <code><a href="/en-US/docs/Web/Guide/CSS/Media_queries#-moz-os-version" title="/en-US/docs/Web/Guide/CSS/Media_queries#-moz-os-version">-moz-os-version</a></code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=810399" title="FIXED: Add a CSS Media Query for Windows 8 Desktop theme">bug 810399</a>). The property is currently only implemented on Windows.</li>
- <li>The <a href="/zh-TW/docs/Web/CSS/-moz-osx-font-smoothing" title="The documentation about this has not yet been written; please consider contributing!"><code>-moz-osx-font-smoothing</code></a> CSS property has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=857142" title="FIXED: Add CSS property for author control over antialiasing on Mac OS X, for cases where fonts appear too heavy">bug 857142</a>)</li>
- <li>The two values <code>-moz-zoom-in</code> and <code>-moz-zoom-out</code> of the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/cursor" title=""><code>cursor</code></a> property have been unprefixed to <code>zoom-in</code> and <code>zoom-out</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=772153" title="FIXED: unprefix CSS cursor: -moz-zoom-in | -moz-zoom-out">bug 772153</a>)).</li>
- <li>The blink effect for <code><a href="/en-US/docs/CSS/text-decoration" title="/en-US/docs/CSS/text-decoration">text-decoration</a>: blink;</code> has no more effect, but is still a valid value (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=857820" title="FIXED: Drop only blink effect from text-decoration: blink; and completely remove &lt;blink> element">bug 857820</a>).</li>
- <li>In-flow <a href="/zh-TW/docs/Web/CSS/::after" title="The documentation about this has not yet been written; please consider contributing!"><code>::after</code></a> and <a href="/zh-TW/docs/Web/CSS/::before" title="The documentation about this has not yet been written; please consider contributing!"><code>::before</code></a> pseudo-elements are now flex items (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867454" title="FIXED: Support ::before, ::after as flex items">bug 867454</a>).</li>
- <li>Following a spec change, the initial value for <a href="/zh-TW/docs/Web/CSS/min-width" title="The documentation about this has not yet been written; please consider contributing!"><code>min-width</code></a> and <a href="/zh-TW/docs/Web/CSS/min-height" title="The documentation about this has not yet been written; please consider contributing!"><code>min-height</code></a> has been changed back to <code>0</code>, even on flex items (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848539" title="FIXED: Remove support for &quot;min-width: auto&quot; and &quot;min-height: auto&quot;, since they're being dropped from flexbox spec">bug 848539</a>).</li>
- <li>Support for CSS Conditionals (<a href="/zh-TW/docs/Web/CSS/@supports" title="The documentation about this has not yet been written; please consider contributing!"><code>@supports</code></a> and <a href="/zh-TW/docs/Web/API/CSS/supports" title="The documentation about this has not yet been written; please consider contributing!"><code>CSS.supports</code></a>) has been enabled by default (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=855455" title="FIXED: enable @supports rule in all builds">bug 855455</a>).</li>
- <li>Support for <a href="/zh-TW/docs/Web/CSS/background-clip" title="The documentation about this has not yet been written; please consider contributing!"><code>background-clip</code></a> and <a href="/zh-TW/docs/Web/CSS/background-origin" title="The documentation about this has not yet been written; please consider contributing!"><code>background-origin</code></a> properties in the <a href="/zh-TW/docs/Web/CSS/background" title="The documentation about this has not yet been written; please consider contributing!"><code>background</code></a> shorthand has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=570896" title="FIXED: add support for different background-origin and background-clip in background shorthand (css3-background)">bug 570896</a>).</li>
- <li>The <code>none</code> value of <a href="/zh-TW/docs/Web/CSS/user-select" title="The documentation about this has not yet been written; please consider contributing!"><code>-moz-user-select</code></a> has now the same behavior than the <code>-moz-none</code> value, aligning Gecko on WebKit (Chrome, Safari), Presto (Opera) and Trident (Internet Explorer) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816298" title='FIXED: Change "-moz-user-select:none" to behave like WebKit, IE, and Opera (and "-moz-user-select:-moz-none")'>bug 816298</a>).</li>
- <li>On XHTML content, the <code>auto</code> value of <a href="/zh-TW/docs/Web/CSS/hyphens" title="The documentation about this has not yet been written; please consider contributing!"><code>-moz-hyphens</code></a> incorrectly applied hyphenation rules when the language was not explicitly declared. This is fixed by (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=702121" title="FIXED: Incorrect hyphenation patterns used by CSS moz-hyphens in XHTML content (en-US patterns used, regardless of lang declaration)">bug 702121</a>).</li>
- <li>An <code>auto</code> value has been added to the CSS <a href="/zh-TW/docs/Web/CSS/-moz-orient" title="The documentation about this has not yet been written; please consider contributing!"><code>-moz-orient</code></a> property. The <code>auto</code> value is equivalent to <code>horizontal</code> when applied to <a href="/zh-TW/docs/Web/HTML/Element/meter" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;meter&gt;</code></a> and <a href="/zh-TW/docs/Web/HTML/Element/progress" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;progress&gt;</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=835883" title="FIXED: Give the -moz-orient property an 'auto' value, and make that its initial value">bug 835883</a>).</li>
- <li>The media query <a href="/en-US/docs/Web/Guide/CSS/Media_queries#-moz-windows-glass" title="/en-US/docs/Web/Guide/CSS/Media_queries#-moz-windows-glass"><code>-moz-windows-glass</code></a> has been added on Windows 7 and earlier Windows system (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816803" title="FIXED: Need a way to detect existence of Aero Glass via CSS">bug 816803</a>).</li>
- <li><a href="/en-US/docs/CSS/Using_CSS_flexible_boxes" title="CSS/Using_CSS_flexible_boxes">CSS Flexbox</a> has been unprefixed, and is now enabled by default (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=841876" title="FIXED: Re-enable flexbox pref (by default) in release builds">bug 841876</a>).</li>
- <li>The <code>mask-type</code> property from the <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html" title="https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html">CSS Masking specification</a> has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=793617" title="FIXED: implement mask-type property from CSS Masking">bug 793617</a>).</li>
- <li>Experimental support for the <a href="/zh-TW/docs/Web/CSS/:scope" title="The documentation about this has not yet been written; please consider contributing!"><code>:scope</code></a> pseudo-class has been added. Enabled by default in Aurora and Nightly, it can be enabled in release and beta version by setting the <code>layout.css.scope-pseudo.enabled</code> about:config preference to <code>true</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648722" title="FIXED: Add support for :scope as :-moz-scope">bug 648722</a>).</li>
- <li>Support for the viewport-relative <a href="/zh-TW/docs/Web/CSS/length" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;length&gt;</code></a> units, <code>vh</code>, <code>vw</code>, <code>vmin</code>, and <code>vmax</code>, has landed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=503720" title="FIXED: Implement vw/vh/vmin/vmax (viewport sizes) from CSS 3 Values and Units">bug 503720</a>).</li>
- <li>The <code>-moz-initial</code> value has been unprefixed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=806068" title="FIXED: Unprefix -moz-initial">bug 806068</a>). <code>-moz-initial</code> will be kept for a while as an alias; however, authors are strongly encouraged to switch over to <code>initial</code>.</li>
- <li>The CSS <a href="/zh-TW/docs/Web/CSS/text-transform" title="The documentation about this has not yet been written; please consider contributing!"><code>text-transform</code></a> property now supports the <code>full-width</code> keyword, which allows a more seamless inclusion of Latin characters in text using ideographic fixed-width characters, like Chinese or Japanese (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=774560" title="FIXED: Implement text-transform: full-width">bug 774560</a>).</li>
- <li>The CSS <a href="/zh-TW/docs/Web/CSS/page-break-inside" title="The documentation about this has not yet been written; please consider contributing!"><code>page-break-inside</code></a> has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=685012" title="FIXED: Implement page-break-inside: avoid">bug 685012</a>).</li>
- <li>The CSS <a href="/zh-TW/docs/Web/CSS/calc" title="The documentation about this has not yet been written; please consider contributing!"><code>calc()</code></a> function can now be used on <code>&lt;color-stop&gt;</code> (on <a href="/zh-TW/docs/Web/CSS/gradient" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;gradient&gt;</code></a>).</li>
- <li>The CSS <a href="/zh-TW/docs/Web/CSS/@page" title="The documentation about this has not yet been written; please consider contributing!"><code>@page</code></a> at-rule is now supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=115199" title="FIXED: @page in CSS2 not implemented">bug 115199</a>). Note that the pseudo-classes <a href="/zh-TW/docs/Web/CSS/:first" title="The documentation about this has not yet been written; please consider contributing!"><code>:first</code></a>, <a href="/zh-TW/docs/Web/CSS/:right" title="The documentation about this has not yet been written; please consider contributing!"><code>:right</code></a>, and <a href="/zh-TW/docs/Web/CSS/:left" title="The documentation about this has not yet been written; please consider contributing!"><code>:left</code></a> are not yet implemented.</li>
- <li>The <a href="/zh-TW/docs/Web/CSS/:-moz-placeholder" title="The documentation about this has not yet been written; please consider contributing!"><code>:-moz-placeholder</code></a> pseudo-class is replaced by the <a href="/zh-TW/docs/Web/CSS/::-moz-placeholder" title="The documentation about this has not yet been written; please consider contributing!"><code>::-moz-placeholder</code></a> pseudo-<em>element</em> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=737786" title="FIXED: Switch from :-moz-placeholder to ::-moz-placeholder (pseudo-class to pseudo-element)">bug 737786</a>).</li>
-</ul>
-
-<h2 id="JavaScript">JavaScript</h2>
-
-<p>General Gecko:</p>
-
-<p><a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) implementation continues!</p>
-
-<ul>
- <li>New mathematical methods have been implemented on <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a>: <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Math/fround" title="/en-US/docs/JavaScript/Reference/Global_Objects/Math/fround"><code>Math.fround()</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=900125" title="FIXED: Float32: add Math.fround to the interpreter">bug 900125</a>).</li>
- <li>The method <code>Array.of()</code> is now implemented on <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=866849" title="FIXED: Implement ES6 Array.of">bug 866849</a>).</li>
- <li>The methods <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt" title="The documentation about this has not yet been written; please consider contributing!"><code>Number.parseInt()</code></a> and <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat" title="The documentation about this has not yet been written; please consider contributing!"><code>Number.parseFloat()</code></a> have been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=886949" title="FIXED: Add Number.parseInt and Number.parseFloat">bug 886949</a>)</li>
- <li>The methods <code>Map.prototype.forEach()</code> and <code>Set.prototype.forEach()</code> are now implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=866847" title="FIXED: Implement Map#forEach and Set#forEach">bug 866847</a>)</li>
- <li>New mathematical methods have been implemented on <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a>: <code>Math.log10()</code>, <code>Math.log2()</code>, <code>Math.log1p()</code>, <code>Math.expm1()</code>, <code>Math.cosh()</code>, <code>Math.sinh()</code>, <code>Math.tanh()</code>, <code>Math.acosh()</code>, <code>Math.asinh()</code>, <code>Math.atanh()</code>, <code>Math.trunc()</code>, <code>Math.sign()</code> and <code>Math.cbrt()</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=717379" title="FIXED: Implement the new ES6 math functions">bug 717379</a>).</li>
- <li>Support for binary and octal integer literals has been added: <code>0b10101010</code>, <code>0B1010</code>, <code>0o777</code>, <code>0O237</code> are now valid (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=894026" title="FIXED: Implement BinaryIntegerLiteral and OctalIntegerLiteral">bug 894026</a>).</li>
- <li>The machine epsilon constant, that is <font>the smallest representible number that added to 1 will not be 1,</font> is now available as <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON" title="The documentation about this has not yet been written; please consider contributing!"><code>Number.EPSILON</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=885798" title="FIXED: Add new ES6 Number constants: EPSILON, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER">bug 885798</a>).</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions" title="/en-US/docs/Web/JavaScript/Reference/arrow_functions">Arrow functions</a> are no longer automatically in strict mode unless explicitly requested with <code>"use strict"</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=852762" title="FIXED: Arrow functions are not automatically strict after all">bug 852762</a>)).</li>
- <li>The <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat"><code>String.prototype.repeat</code></a> JS method has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=815431" title="FIXED: implement String.prototype.repeat">bug 815431</a>).</li>
- <li>The <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty"><code>Object.defineProperty</code></a> method can now be used to redefine the <code>length</code> property of an <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> object.</li>
- <li>The option to disable JavaScript, including the options to allow moving windows/replace context menu, have been removed. You may still disable JavaScript by double clicking the "javascript.enabled" option in about:config.</li>
- <li><a href="http://asmjs.org/spec/latest/" title="http://asmjs.org/spec/latest/">Asm.js </a>optimizations are enabled, making it possible to compile C/C++ applications to a subset of Javascript for better performance.</li>
- <li>ES6 <a href="/en-US/docs/JavaScript/Reference/arrow_functions" title="/en-US/docs/JavaScript/Reference/arrow_functions">Arrow Function</a> syntax has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=846406" title="FIXED: Implement arrow functions">bug 846406</a>).</li>
- <li>The new <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is">Object.is</a> function has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839979" title="FIXED: Implement Object.is">bug 839979</a>).</li>
- <li><a href="/en-US/docs/E4X" title="E4X">E4X</a>, an ancient JavaScript extension, has been removed. Implemented only in Gecko, it never got significant traction (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=788293" title="FIXED: Remove E4X from SpiderMonkey">bug 788293</a>).</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt" title="">parseInt</a> no longer treats strings with leading "0" as octal (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=786135" title='FIXED: Make parseInt("042") === 42, now that other engines are moving that way'>bug 786135</a>).</li>
- <li>Support for the <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/WeakMap" title="JavaScript/Reference/Global_Objects/WeakMap">Weakmap</a>.prototype.clear()</code> method, recently added to the Harmony (EcmaScript 6) draft proposal has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814562" title="FIXED: Implement clear() on WeakMaps">bug 814562</a>).</li>
- <li>Support for the <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Math/imul" title="JavaScript/Reference/Global_Objects/Math/imul"><code>Math.imul()</code></a> method, a C-style 32-bit multiplication function. Though proposed for Harmony (EcmaScript 6) it has not yet accepted and still is non-standard (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=808148" title="FIXED: prototype Math.imul">bug 808148</a>).</li>
- <li>Web apps using draggable text with Kinetic 3.x are working, even when using the Cairo canvas backend (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=835064" title="Firefox 18 won't drag text on some installations.">bug 835064</a>).</li>
- <li>The <a href="/en-US/docs/JavaScript/Reference/Statements/for_each...in" title="JavaScript/Reference/Statements/for_each...in"><code>for each…in</code></a> statement has been deprecated and should not be used. Consider using the new <a href="/en-US/docs/JavaScript/Reference/Statements/for...of" title="JavaScript/Reference/Statements/for...of"><code>for…of</code></a> statement (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=804834" title='FIXED: Hide "for each" from content'>bug 804834</a>).</li>
- <li>Support for the <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map">Map</a>.prototype.keys</code>, <code><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map">Map</a></code>.prototype.values</code>, and <code><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map">Map</a></code>.prototype.entries</code> has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=817368" title="FIXED: Map.prototype.{keys,values,entries}">bug 817368</a>).</li>
- <li><code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Map" title="JavaScript/Reference/Global_Objects/Map">Map</a></code> and <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Set" title="JavaScript/Reference/Global_Objects/Set">Set</a></code> objects have changed from having a <code>size()</code> method to a <code>size</code> property (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807001" title="FIXED: Map.prototype.size and Set.prototype.size should be accessor properties">bug 807001</a>).</li>
- <li><code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Map" title="JavaScript/Reference/Global_Objects/Map">Map</a></code> and <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Set" title="JavaScript/Reference/Global_Objects/Set">Set</a></code> objects also have a clear() method now. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=805003" title="FIXED: Implement Map.prototype.clear and Set.prototype.clear methods">bug 805003</a>).</li>
-</ul>
-
-<h2 id="Telephony-specific_additions_(mostly_API-related)">Telephony-specific additions (mostly API-related)</h2>
-
-<ul>
- <li>Fuzzy matcher API for phone numbers (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=883923" title="FIXED: Provide a Fuzzy Matcher API for phone numbers">bug 883923</a>)</li>
- <li>CDMA
- <ul>
- <li>Registration info (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882984" title="FIXED: [B2G] [CDMA] Update nsIDOMMozMobileCellInfo to also report base station id, base station latitude, base station longitude, system id, network id">bug 882984</a>)
- <ul>
- <li>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882984" title="FIXED: [B2G] [CDMA] Update nsIDOMMozMobileCellInfo to also report base station id, base station latitude, base station longitude, system id, network id">bug 882984</a>)</li>
- <li>multiple new CDMA specific attributes in <code>MozMobileCellInfo</code></li>
- <li>dom/network/interfaces/nsIDOMMobileConnection.idl</li>
- </ul>
- </li>
- <li>Emergency callback mode support (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887690" title="FIXED: B2G RIL: Support emergency callback mode">bug 887690</a>)
- <ul>
- <li>new method <code>exitEmergencyCbMode</code> and new event <code>emergencycbmodechange</code> in <code>MozMobileConnection</code></li>
- <li>dom/network/interfaces/nsIDOMMozEmergencyCbModeEvent.idl</li>
- </ul>
- </li>
- <li>OTASP (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882983" title="FIXED: B2G RIL: Support for CDMA OTASP - expose ota status">bug 882983</a>)
- <ul>
- <li>new event <code>otastatuschange</code> in <code>MozMobileConnection</code></li>
- <li>dom/network/interfaces/nsIDOMMozOtaStatusEvent.idl</li>
- </ul>
- </li>
- <li>MDN/MIN (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=869778" title="FIXED: [B2G][CDMA]Get the CDMA subscription information.">bug 869778</a>)
- <ul>
- <li>new interface <code>MozGsmIccInfo</code> &amp; <code>MozCdmaIccInfo</code></li>
- <li>new attribute <code>iccType</code> in <code>MozIccInfo</code></li>
- <li>dom/icc/interfaces/nsIDOMIccInfo.idl</li>
- </ul>
- </li>
- <li>Preferred voice mode (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=869769" title="FIXED: [B2G][CDMA] Set and Query the preferred voice mode in CDMA">bug 869769</a>)
- <ul>
- <li>new methods <code>setVoicePrivacyMode</code> and <code>getVoicePrivacyMode</code> in <code>MozMobileConnection</code></li>
- <li>dom/network/interfaces/nsIDOMMobileConnection.idl</li>
- </ul>
- </li>
- <li>Roaming preference (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=869768" title="FIXED: [B2G][CDMA] Set and Query the roaming preference in CDMA">bug 869768</a>)
- <ul>
- <li>new methods <code>setRoamingPreference</code> and <code>getRoamingPreference</code> in <code>MozMobileConnection</code></li>
- <li>dom/network/interfaces/nsIDOMMobileConnection.idl</li>
- </ul>
- </li>
- <li>Call Waiting (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=822210" title="FIXED: B2G CDMA: support call waiting">bug 822210</a>)
- <ul>
- <li>new attribute <code>secondNumber</code> in <code>TelephonyCall</code></li>
- <li>dom/webidl/TelephonyCall.webidl</li>
- </ul>
- </li>
- </ul>
- </li>
- <li>Support Change Call Barring Password (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=905479" title="FIXED: B2G RIL: Support Change Call Barring Password">bug 905479</a>)
- <ul>
- <li>new method <code>changeCallBarringPassword</code> in <code>MozMobileConnection</code></li>
- <li>dom/network/interfaces/nsIDOMMobileConnection.idl</li>
- </ul>
- </li>
- <li>Move ICC functions out from <code>MobileConnection</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=875721" title="FIXED: B2G RIL: Move iccInfo related attribute/event from mozMobileConnection to mozIccManager">bug 875721</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=874744" title="FIXED: B2G RIL: Move card state related attribute/event from mozMobileConnection to mozIccManager">bug 874744</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=860585" title="FIXED: B2G RIL: Move cardLock related API from mozMobileConnection to mozIccManager">bug 860585</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=859220" title="FIXED: B2G RIL: Separate MozIccManager from MozMobileConnection">bug 859220</a>)
- <ul>
- <li><code>MozIccInfo</code>
- <ul>
- <li><code>navigator.mozIccManager.iccInfo</code></li>
- <li>new interface</li>
- <li>dom/icc/interfaces/nsIDOMIccInfo.idl</li>
- </ul>
- </li>
- <li><code>MozIccManager</code>
- <ul>
- <li><code>navigator.mozIccManager</code></li>
- <li>new attributes, methods, and events</li>
- <li>dom/icc/interfaces/nsIDOMIccManager.idl</li>
- </ul>
- </li>
- <li><code>MozMobileConnection</code>
- <ul>
- <li><code>navigator.mozMobileConnection</code></li>
- <li>numerous attributes, methods and events removed</li>
- <li>dom/network/interfaces/nsIDOMMobileConnection.idl</li>
- </ul>
- </li>
- <li><code>nsIDOMMozMobileICCInfo</code>
- <ul>
- <li><code>navigator.mozMobileConnection.iccInfo</code></li>
- <li>interface removed</li>
- </ul>
- </li>
- </ul>
- </li>
- <li>ICC card lock improvements
- <ul>
- <li>Rename <code>ICCCardLockErrorEvent</code> to <code>IccCardLockErrorEvent</code>
- <ul>
- <li>dom/webidl/IccCardLockErrorEvent.webidl</li>
- </ul>
- </li>
- <li>Retry count (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=886239" title="FIXED: B2G RIL: Remove retryCount from MobileConnection">bug 886239</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=875710" title="FIXED: B2G RIL: Get PIN/PUK remaining retry count">bug 875710</a>)
- <ul>
- <li>attribute <code>retryCount</code> removed from <code>MozMobileConnection</code></li>
- <li>new method <code>getCardLockRetryCount</code> in <code>MozIccManager</code></li>
- <li>dom/network/interfaces/nsIDOMMobileConnection.idl</li>
- <li>dom/icc/interfaces/nsIDOMIccManager.idl</li>
- </ul>
- </li>
- </ul>
- </li>
- <li>Import/export SIM Contacts (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=847741" title="FIXED: B2G RIL: Move mozContact.getSimContacts to IccManager">bug 847741</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=847820" title="FIXED: B2G RIL: Support exporting contacts to SIM card in IccManager">bug 847820</a>)
- <ul>
- <li>new methods <code>readContacts</code>, <code>updateContact</code> in <code>MozIccManager</code></li>
- <li>dom/icc/interfaces/nsIDOMIccManager.idl</li>
- </ul>
- </li>
- <li>ICC Secure Elements (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=840780" title="FIXED: (webicc) WebICC - Secure Elements">bug 840780</a>)
- <ul>
- <li>new methods <code>iccOpenChannel</code>, <code>iccExchangeAPDU</code>, <code>iccCloseChannel</code> in <code>MozIccManager</code></li>
- <li>dom/icc/interfaces/nsIDOMIccManager.idl</li>
- </ul>
- </li>
- <li>STK improvements
- <ul>
- <li>'duration' for Display Text, Setup Call commands (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=831630" title="FIXED: B2G STK: Add 'duration' property for DISPLAY_TEXT and SET_UP_CALL">bug 831630</a>)
- <ul>
- <li>new attribute <code>duration</code> in both <code>MozStkTextMessage</code> and <code>MozStkSetUpCall</code></li>
- <li>dom/icc/interfaces/SimToolKit.idl</li>
- </ul>
- </li>
- <li>support "Language Selection Event" (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=831627" title='FIXED: B2G STK: Support "Language Selection Event" Envelope command.'>bug 831627</a>)
- <ul>
- <li>new dictionary <code>MozStkLanguageSelectionEvent</code></li>
- <li>dom/icc/interfaces/SimToolKit.idl</li>
- </ul>
- </li>
- <li>support "Idle Screen Available Event" (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=831628" title='FIXED: B2G STK: Support "Idle Screen Available Event" Envelope command'>bug 831628</a>)
- <ul>
- <li>new dictionary <code>MozStkGeneralEvent</code></li>
- <li>dom/icc/interfaces/SimToolKit.idl</li>
- </ul>
- </li>
- </ul>
- </li>
- <li>MobileMessage
- <ul>
- <li>Turn <code>getSegmentInfoForText</code> into an async call (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=903403" title="FIXED: [sms][mms] Make getSegmentInfoForText() Asynchronous to Improve Typing Performance">bug 903403</a>)
- <ul>
- <li>dom/mobilemessage/interfaces/nsIDOMMobileMessageManager.idl</li>
- </ul>
- </li>
- <li>Remove navigator.mozSms (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=891235" title="FIXED: WebSMS: remove navigator.mozSms">bug 891235</a>)</li>
- </ul>
- </li>
- <li>Telephony
- <ul>
- <li>support "Conference Call" (certified only) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=772765" title="FIXED: B2G telephony: support conference calls">bug 772765</a>)
- <ul>
- <li><code>navigator.mozTelephony.conferenceGroup</code></li>
- <li>new interface</li>
- </ul>
- </li>
- </ul>
- </li>
-</ul>
-
-<h2 id="DOMAPI">DOM/API</h2>
-
-<p>Firefox OS-specific:</p>
-
-<ul>
- <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Device Storage API: When getting a cursor callback from <code>navigator.getDeviceStorage("sdcard").enumerate</code>, <code><span id="summary_alias_container"><span id="short_desc_nonedit_display">this.done</span></span></code> was undefined in Firefox &lt;1.2 (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=902565" title='this.done in cursor callback of naviagtor.getDeviceStorage("sdcard").enumerate is undefined'>bug 902565</a>). This is now fixed. The referenced bug discusses possible compatibility checks/workarounds for this issue. </span></span></li>
- <li>The <a href="/zh-TW/docs/Web/API/RTCPeerConnection" title="The documentation about this has not yet been written; please consider contributing!"><code>RTCPeerConnection</code></a> Interface from WebRTC is implemented, but currently disabled by default in B2G, as it is not yet functional on Firefox OS devices (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=942343" title="FIXED: Pref off media.peerconnection.enabled on Firefox OS">bug 942343</a>.)</li>
- <li><a href="/zh-TW/docs/Web/API/Notification" title="Notifications API 的 Notification interface 是用來設置及顯示「桌面通知」給使用。"><code>Web notifications</code></a> are supported in Firefox 1.2, therefore the <code>Notification</code> object should be used in preference to the old deprecated <a href="/zh-TW/docs/Web/API/Window/navigator/mozNotification" title="The documentation about this has not yet been written; please consider contributing!"><code>mozNotification</code></a> object (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=899574" title="FIXED: Notification API follow-up: provide a way to get current Notification objects">bug 899574</a> .)</li>
- <li><a href="/zh-TW/docs/Web/API/Window/navigator/mozInputMethod" title="The documentation about this has not yet been written; please consider contributing!"><code>mozInputMethod</code></a> has been added to allow for people to write 3rd party keyboards. See the test application in gaia/test_apps for a reference implementation.</li>
- <li>The Media Recording API has been implemented (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=803414" title="FIXED: Media Recording - Web API &amp; Implementation">bug 803414</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=889720" title="FIXED: Media Recording - implement Pause/Resume DOM API">bug 889720</a>)</li>
- <li>KeyboardEvent.repeat now supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=600117" title="FIXED: Implement DOM3 KeyboardEvent.repeat">bug 600117</a>)</li>
- <li>3rd party keyboards now supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816869" title="FIXED: [Meta] Enable third-party keyboards">bug 816869</a>)</li>
-</ul>
-
-<div id="magicdomid15">New WebGL 1 extensions supported in Firefox OS 1.2:</div>
-
-<ul>
- <li><a href="http://www.khronos.org/registry/webgl/extensions/OES_element_index_uint/">OES_element_index_uint</a></li>
- <li><a href="http://www.khronos.org/registry/webgl/extensions/OES_texture_float_linear/">OES_texture_float_linear</a></li>
- <li><a href="http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/">OES_vertex_array_object</a></li>
- <li><a href="http://www.khronos.org/registry/webgl/extensions/WEBGL_draw_buffers/">WEBGL_draw_buffers</a></li>
- <li id="magicdomid26"><a href="http://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/">ANGLE_instanced_arrays</a></li>
-</ul>
-
-<div class="note">
-<div><strong>Note</strong>: availability of these extensions depends on device capabilities; not all extensions will be available on all devices.</div>
-</div>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>A <code>.default</code> attribute has now been added to the DeviceStorage API (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=874213" title="FIXED: DeviceStorage: Add a .default attribute to the device storage object.">bug 874213</a>)</li>
- <li>The TCP Socket API has landed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=797561" title="FIXED: Expose a server tcp socket API to web applications">bug 797561</a>)</li>
- <li>Make the last argument (doctype) to <a href="/zh-TW/docs/Web/API/DOMImplementation/createDocument" title="The documentation about this has not yet been written; please consider contributing!"><code>DOMImplementation.createDocument</code></a> optional (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=909859" title="FIXED: Make the doctype argument of createDocument optional">bug 909859</a>).</li>
- <li>Implement the new <a href="/zh-TW/docs/Web/API/Element/classList" title="Element.classList 唯讀屬性代表了該元素所擁有之類別屬性(Class Attribute)的即時更新集-DOMTokenList。"><code>element.classList</code></a> specification which permits adding/removing several classes with one call (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814014" title="FIXED: implement the new classList specification which permits adding/removing several classes with one call">bug 814014</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/URL/URL" title="The documentation about this has not yet been written; please consider contributing!"><code>URL()</code></a> constructor have been implemented on the <a href="/zh-TW/docs/Web/API/URL" title="URL 介面提供了建立 URL 物件的靜態方法。"><code>URL</code></a> interface (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887364" title="FIXED: Implement URL API">bug 887364</a>).</li>
- <li>The properties <a href="/zh-TW/docs/Web/API/URLUtils/origin" title="The documentation about this has not yet been written; please consider contributing!"><code>URLUtils.origin</code></a>, <a href="/zh-TW/docs/Web/API/URLUtils/password" title="The documentation about this has not yet been written; please consider contributing!"><code>URLUtils.password</code></a>, and <a href="/zh-TW/docs/Web/API/URLUtils/username" title="The documentation about this has not yet been written; please consider contributing!"><code>URLUtils.username</code></a> are now available to all interfaces implementing <a href="/zh-TW/docs/Web/API/URLUtils" title="The documentation about this has not yet been written; please consider contributing!"><code>URLUtils</code></a>: <a href="/zh-TW/docs/Web/API/URL" title="URL 介面提供了建立 URL 物件的靜態方法。"><code>URL</code></a>, <a href="/zh-TW/docs/Web/API/Location" title="The documentation about this has not yet been written; please consider contributing!"><code>Location</code></a>, <a href="/zh-TW/docs/Web/API/HTMLAnchorElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLAnchorElement</code></a>, and <a href="/zh-TW/docs/Web/API/HTMLAreaElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLAreaElement</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887364" title="FIXED: Implement URL API">bug 887364</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/URL" title="URL 介面提供了建立 URL 物件的靜態方法。"><code>URL</code></a> interface is now accessible from Web Workers (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887364" title="FIXED: Implement URL API">bug 887364</a>).</li>
- <li>IndexedDB can now be used as a "optimistic" storage area so it doesn't require any prompts and data is stored in a pool with LRU eviction policy, in short temporary storage (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=785884" title="FIXED: Implement support for temporary storage (aka shared pool)">bug 785884</a>).</li>
- <li>Path of the persistent storage has been changed from &lt;profile&gt;/indexedDB to &lt;profile&gt;/storage/persistent (on b2g from /data/local/indexedDB to /data/local/storage/persistent).</li>
- <li>The <a href="/en-US/docs/Web_Audio_API" title="/en-US/docs/Web_Audio_API">Web Audio API</a> is now supported. An incomplete implementation was previously available behind a preference (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=779297" title="FIXED: Implement and ship Web Audio">bug 779297</a>).</li>
- <li>Some IME related keys on Windows are supported by <code>KeyboardEvent.key</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=865565" title="FIXED: D3E KeyboardEvent.key values of IME related keys should be considered with keyboard layout locale">bug 865565</a>), see <a href="/en-US/docs/Web/API/KeyboardEvent#keyname_table_win" title="/en-US/docs/Web/API/KeyboardEvent#keyname_table_win">the key name table</a> for the detail.</li>
- <li>Firefox for Metro now dispatches key events in the same way as the desktop version (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=843236" title="FIXED: Defect - Send the correct DOM keycodes in keyboard events from metro widget for US and non-US keyboards">bug 843236</a>).</li>
- <li><code>keypress</code> event is no longer dispatched if <code>preventDefault()</code> of preceding <code>keydown</code> event is called (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501496" title="FIXED: preventDefault on keydown does not cancel following keypress">bug 501496</a>), see <a href="/en-US/docs/Web/Reference/Events/keydown#preventDefault()_of_keydown_event" title="/en-US/docs/Web/Reference/Events/keydown#preventDefault()_of_keydown_event">the document of <code>keydown</code> event</a> for the detail.</li>
- <li>Renamed the <code>Future</code> interface to <code>Promise</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884279" title="FIXED: renaming future to promise">bug 884279</a>).</li>
- <li>The <code>srcDoc</code> property on the <a href="/zh-TW/docs/Web/API/HTMLIFrameElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLIFrameElement</code></a> interface, allowing the inline specification of the content of an <a href="/zh-TW/docs/Web/HTML/Element/iframe" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;iframe&gt;</code></a>, is now supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=802895" title="FIXED: implement &lt;iframe srcdoc=''> to allow document content in iframe to be specified inline">bug 802895</a>).</li>
- <li>The <code>createTBody()</code> method on the <a href="/zh-TW/docs/Web/API/HTMLTableElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLTableElement</code></a> interface, allowing to get its <a href="/zh-TW/docs/Web/HTML/Element/tbody" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;tbody&gt;</code></a>, is now supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=813034" title="FIXED: Implement table.createTBody">bug 813034</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/Range/collapse" title="The documentation about this has not yet been written; please consider contributing!"><code>Range.collapse()</code></a> method <code>toStart</code> parameter is now optional and default to <code>false</code>, like defined in the spec (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=891340" title="FIXED: Make Range.collapse optional and default to false">bug 891340</a>).</li>
- <li>Support of <a href="/zh-TW/docs/Web/API/ParentNode" title="ParentNode 介面定義了可以擁有子節點之 Node 物件的方法。"><code>ParentNode</code></a> interface on <a href="/zh-TW/docs/Web/API/Document" title="Document 介面代表所有在瀏覽器中載入的網頁,也是作為網頁內容 DOM 樹"><code>Document</code></a> and <a href="/zh-TW/docs/Web/API/DocumentFragment" title="DocumentFragment 介面表示了一個沒有父節點的最小化文件物件。DocumentFragment 被當作一種輕量化的 Document,用如同標準文件一般的方式保存片段的文件結構(由節點組成)。關鍵的區別在於文件片段不是真實的 DOM 結構,文件片段的變動並不會影響目前的網頁文件,也不會導致回流(reflow)或引起任何影響效能的情況發生。"><code>DocumentFragment</code></a> has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=895974" title="FIXED: document.firstElementChild is not defined">bug 895974</a>).</li>
- <li>The <code>previousElementSibling</code> and <code>nextElementSibling</code> have been moved to <a href="/zh-TW/docs/Web/API/ChildNode" title="childNodes 介面定義了可以擁有父節點之 Node 物件的方法。"><code>ChildNode</code></a> allowing them to be called not only on a <a href="/zh-TW/docs/Web/API/Element" title="Element 介面表示了一個在 Document 中的物件,其描述了各類型元素的共同屬性與方法,Element 的子介面則定義了不同類型元素的具體行為並增加額外的功能。"><code>Element</code></a> object but also on a <a href="/zh-TW/docs/Web/API/CharacterData" title="CharacterData 介面表示了含有字元的 Node 物件。CharacterData 為抽象介面,代表不會有型別為 CharacterData 的物件。物件是由其子介面,如 Text、Comment 或 ProcessingInstruction 等非抽象介面來實作。"><code>CharacterData</code></a> or <a href="/zh-TW/docs/Web/API/DocumentType" title="DocumentType 介面表示了一個代表文件類型的 Node 節點。"><code>DocumentType</code></a> object (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=895974" title="FIXED: document.firstElementChild is not defined">bug 895974</a>).</li>
- <li>The <code>navigator.geolocation</code> property has been updated to match the spec. It never returns <code>null</code>. When the preference <code>geo.enabled</code> is set to <code>false</code>, it now returns <code>undefined</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884921" title="FIXED: Align navigator.geolocation with spec">bug 884921</a>).</li>
- <li>The <code>videoPlaybackQuality</code> attribute on the <a href="/zh-TW/docs/Web/API/HTMLVideoElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLVideoElement</code></a> interface has been changed to the <code>getVideoPlaybackQuality</code> method. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=889205" title="FIXED: Make HTMLVideoElement.videoPlaybackQuality a method">bug 889205</a>)</li>
- <li>Support for the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Range.Range" title="The Range() constructor returns a newly created Range object whose start and end is the global Document object."><code>Range()</code></a> constructor has been added (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=868999" title="FIXED: Range should be constructable">bug 868999</a>).</li>
- <li>Support for the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Text.Text" title="The Text() constructor returns a newly created Text object with the optional DOMString given in parameter as its textual content."><code>Text()</code></a> constructor has been added (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=869000" title="FIXED: Text should be constructable">bug 869000</a>).</li>
- <li>Support for the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Comment.Comment" title="The Comment() constructor returns a newly created Comment object with the optional DOMString given in parameter as its textual content."><code>Comment()</code></a> constructor has been added (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=869006" title="FIXED: Comment should be constructable">bug 869006</a>).</li>
- <li>Support for the <a href="https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.DocumentFragment" title="The DocumentFragment() constructor returns an empty newly created DocumentFragment object ."><code>DocumentFragment()</code></a> constructor has been added (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=869002" title="FIXED: DocumentFragment should be constructable">bug 869002</a>).</li>
- <li>The <a href="https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent" title="The FocusEvent interface represents focus-related events like focus, blur, focusin, or focusout."><code>FocusEvent</code></a> interface has been implemented (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=855741" title="FIXED: FocusEvent interface is missing">bug 855741</a>).</li>
- <li>Support for the <a href="https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove" title="The ChildNode.remove method removes the object from the tree it belongs to."><code>ChildNode.remove()</code></a> method has been added (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=856629" title="FIXED: Implement ChildNode.remove()">bug 856629</a>).</li>
- <li>The interfaces related to the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track" title="The track element is used as a child of the media elements—&lt;audio> and &lt;video>—and does not represent anything on its own. It lets you specify timed text tracks (or time-based data)."><code>&lt;track&gt;</code></a> element, <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement" title="The HTMLTrackElement interface provides access to the properties of &lt;track> elements, as well as methods to manipulate them."><code>HTMLTrackElement</code></a>, <a class="new" href="https://developer.mozilla.org/en-US/docs/Web/API/TextTrack" title="The documentation about this has not yet been written; please consider contributing!"><code>TextTrack</code></a>, <a class="new" href="https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue" title="The documentation about this has not yet been written; please consider contributing!"><code>TextTrackCue</code></a>, <a class="new" href="https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList" title="The documentation about this has not yet been written; please consider contributing!"><code>TextTrackList</code></a>, and <a class="new" href="https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList" title="The documentation about this has not yet been written; please consider contributing!"><code>TextTrackCueList</code></a> have been implemented behind the <code>media.webvtt.enabled</code> property, defaulting to <code>false</code> (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=833385" title="FIXED: [webvtt] Implement Track element and TextTrack* DOM classes">bug 833385</a>).</li>
- <li>The <a class="new" href="https://developer.mozilla.org/en-US/docs/Web/API/Gamepad" title="The documentation about this has not yet been written; please consider contributing!"><code>Gamepad</code></a> interface, and <a class="new" href="https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads" title="The documentation about this has not yet been written; please consider contributing!"><code>Navigator.getGamepads</code></a> have been implemented behind the <code>dom.gamepad.enabled</code> property, defaulting to <code>false</code> (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=690935" title="FIXED: Implement navigator.getGamepads() method">bug 690935</a>).</li>
- <li>On desktop Firefox only, <code>HTMLCanvasElement.getContext()</code> can now take the <code>webgl</code> value, in addition to <code>experimental-webgl</code> (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=870232" title='FIXED: Implement getContext("webgl") for Desktop FF'>bug 870232</a>).</li>
- <li>The non-standard method <code>mozLoadFrom()</code> of <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement" title="The HTMLMediaElement interface has special properties and methods (beyond the properties and methods available for all children of HTMLElement), that are common to all media-related objects."><code>HTMLMediaElement</code></a> has been removed (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=877135" title="FIXED: Remove mozLoadFrom">bug 877135</a>).</li>
- <li>D3E <a href="/en-US/docs/DOM/KeyboardEvent#Key_names_and_Char_values" title="/en-US/docs/DOM/KeyboardEvent#Key_names_and_Char_values"><code>KeyboardEvent.key</code></a> is now supported, but only for non-printable keys (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=842927" title="FIXED: Implement DOM3 KeyboardEvent.key only for non-printable key, first">bug 842927</a>).</li>
- <li>The <code>title</code> attribute of <a href="/zh-TW/docs/Web/API/DOMImplementation/createHTMLDocument" title="The documentation about this has not yet been written; please consider contributing!"><code>DOMImplementation.createHTMLDocument</code></a> is now optional as per updated DOM specification.</li>
- <li>The ability to add a sidebar panel (<code>window.sidebar.addPanel</code>) has been dropped (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=691647" title="FIXED: clean up nsISidebar (remove window.sidebar.addPanel/addPersistentPanel)">bug 691647</a>).</li>
- <li>The unprefixed <a href="/zh-TW/docs/Web/API/Window/requestAnimationFrame" title="The documentation about this has not yet been written; please consider contributing!"><code>Window.requestAnimationFrame</code></a> and <a href="/zh-TW/docs/Web/API/Window/cancelAnimationFrame" title="The documentation about this has not yet been written; please consider contributing!"><code>Window.cancelAnimationFrame</code></a> methods has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=704063" title="FIXED: Add unprefixed requestAnimationFrame">bug 704063</a>).</li>
- <li>The callback for <a href="/zh-TW/docs/Web/API/Window/requestAnimationFrame" title="The documentation about this has not yet been written; please consider contributing!"><code>Window.requestAnimationFrame</code></a> now receives a <a href="/zh-TW/docs/Web/API/DOMHighResTimeStamp" title="The documentation about this has not yet been written; please consider contributing!"><code>DOMHighResTimeStamp</code></a> as argument instead of the less precise <a href="/zh-TW/docs/Web/API/DOMTimeStamp" title="The documentation about this has not yet been written; please consider contributing!"><code>DOMTimeStamp</code></a> used in the unprefixed version (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=753453" title="FIXED: requestAnimationFrame callback should return DOMHighResTimeStamp">bug 753453</a>).</li>
- <li>The text argument for <a href="/zh-TW/docs/Web/API/Window/alert" title="The documentation about this has not yet been written; please consider contributing!"><code>window.alert</code></a> and <a href="/zh-TW/docs/Web/API/Window/confirm" title="The documentation about this has not yet been written; please consider contributing!"><code>window.confirm</code></a> is now optional (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=861605" title="FIXED: Make the arguments to Window.alert, Window.confirm optional">bug 861605</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/HTMLMediaElement/initialTime" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLMediaElement.initialTime</code></a> property, removed from the spec, is no more supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742537" title="FIXED: Remove HTMLMediaElement.initialTime">bug 742537</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/AnimationEvent/AnimationEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>AnimationEvent()</code></a> constructor has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848293" title="FIXED: Update AnimationEvent to be compatible with the spec">bug 848293</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/AnimationEvent/pseudoElement" title="The documentation about this has not yet been written; please consider contributing!"><code>AnimationEvent.pseudoElement</code></a> property has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848293" title="FIXED: Update AnimationEvent to be compatible with the spec">bug 848293</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/TransitionEvent/TransitionEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>TransitionEvent()</code></a> constructor has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848291" title="FIXED: Update TransitionEvent to be compatible with the spec">bug 848291</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/TransitionEvent/pseudoElement" title="The documentation about this has not yet been written; please consider contributing!"><code>TransitionEvent.pseudoElement</code></a> property has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848291" title="FIXED: Update TransitionEvent to be compatible with the spec">bug 848291</a>).</li>
- <li>The non-standard <a href="/zh-TW/docs/Web/API/TransitionEvent/initTransitionEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>TransitionEvent.initTransitionEvent()</code></a> and <a href="/zh-TW/docs/Web/API/AnimationEvent/initAnimationEvent" title='The AnimationEvent.initAnimationEvent() method Initializes an animation event created using the deprecated Document.createEvent("AnimationEvent") method.'><code>AnimationEvent.initAnimationEvent()</code></a> have been removed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=868751" title='FIXED: Remove support for document.createEvent("AnimationEvent"), document.createEvent("TransitionEvent"), AnimationEvent.initAnimationEvent, and TransitionEvent.initTransitionEvent'>bug 868751</a>).</li>
- <li>Support for the <code>multipart</code> property on <code>XMLHttpRequest</code> and <code>multipart/x-mixed-replace</code> responses in <code>XMLHttpRequest</code> has been removed. This was a Gecko-only feature that was never standardized. <a href="/en-US/docs/Server-sent_events" title="Server-sent_events">Server-Sent Events</a>, <a href="/en-US/docs/WebSockets" title="WebSockets">Web Sockets</a> or inspecting <code>responseText</code> from progress events can be used instead.</li>
- <li>Support for <a href="/en-US/docs/WebAPI/Using_Web_Notifications" title="/en-US/docs/WebAPI/Using_Web_Notifications">Web Notifications</a> has been landed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=782211" title="FIXED: Implement notification API spec">bug 782211</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/FormData" title="FormData 介面提供了一個簡單的方式來建立表單欄位與其值的名值對(key/value)集合,還能方便的使用 XMLHttpRequest.send() 方法來送出表單資料。如果 &lt;form> 元素的 enctype 屬性(attribute)值為 multipart/form-data 編碼,則 FormData 物件也會採用與表單相同的格式。"><code>FormData</code></a> <code>append</code> method now accepts a third optional <code>filename</code> parameter (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=690659" title="FIXED: filename parameter in the FormData.append method">bug 690659</a>).</li>
- <li><a href="/zh-TW/docs/Web/API/Node/isSupported" title="The documentation about this has not yet been written; please consider contributing!"><code>Node.isSupported</code></a> has been removed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801562" title="FIXED: Remove Node.isSupported">bug 801562</a>).</li>
- <li><a href="/zh-TW/docs/Web/API/Node/setUserData" title="The documentation about this has not yet been written; please consider contributing!"><code>Node.setUserData</code></a> and <a href="/zh-TW/docs/Web/API/Node/getUserData" title="The documentation about this has not yet been written; please consider contributing!"><code>Node.getUserData</code></a> has been removed for web content and are deprecated for chrome content (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=842372" title="FIXED: Make getUserData and setUserData ChromeOnly">bug 842372</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/Element/attributes" title="The documentation about this has not yet been written; please consider contributing!"><code>Element.attributes</code></a> property has been moved there from <a href="/zh-TW/docs/Web/API/Node" title="Node 是一個被多種 DOM 類型繼承的介面,它讓各種類型的 DOM 都能以同樣的方式來操作。如繼承了相同的方法,或能以相同的方式測試。"><code>Node</code></a> as required by the spec (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=844134" title="FIXED: attributes should be defined on Element and not Node">bug 844134</a>).</li>
- <li>The Mac OS X backend for <a href="/zh-TW/docs/Web/API/DeviceLightEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>Ambient Light Events</code></a> has been implemented.</li>
- <li>Elements in the HTML namespace with local names <a href="/zh-TW/docs/Web/HTML/Element/bgsound" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;bgsound&gt;</code></a>, <a href="/zh-TW/docs/Web/HTML/Element/multicol" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;multicol&gt;</code></a>, and <a href="/zh-TW/docs/Web/HTML/Element/image" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;image&gt;</code></a> no longer implement the <a href="/zh-TW/docs/Web/API/HTMLSpanElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLSpanElement</code></a> interface. <a href="/zh-TW/docs/Web/HTML/Element/bgsound" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;bgsound&gt;</code></a> and <a href="/zh-TW/docs/Web/HTML/Element/bgsound" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;bgsound&gt;</code></a> implement <a href="/zh-TW/docs/Web/API/HTMLUnknownElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLUnknownElement</code></a> and <a href="/zh-TW/docs/Web/HTML/Element/image" title="The documentation about this has not yet been written; please consider contributing!"><code>&lt;image&gt;</code></a> implements <a href="/zh-TW/docs/Web/API/HTMLElement" title="HTMLElement 介面表示了所有的 HTML 元素。部分元素直接實作了此介面,其它則是實作繼承自 HTMLElement 的子介面。"><code>HTMLElement</code></a>.</li>
- <li>The <a href="/zh-TW/docs/Web/API/NodeIterator/detach" title="The documentation about this has not yet been written; please consider contributing!"><code>NodeIterator.detach</code></a> method has been changed to do nothing (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=823549" title="FIXED: Make NodeIterator.detach() a no-op">bug 823549</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/BlobEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>BlobEvent</code></a> interface has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834165" title="FIXED: Implement BlobEvent">bug 834165</a>).</li>
- <li>The properties <code>HTMLMediaElement.crossorigin</code> and <code>HTMLInputElement.inputmode</code> has been removed to match the spec in <a href="/zh-TW/docs/Web/API/HTMLMediaElement/crossOrigin" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLMediaElement.crossOrigin</code></a> and <code>HTMLInputElement.inputMode</code>, respectively (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=847370" title="FIXED: HTMLMediaElement - crossOrigin vs crossorigin">bug 847370</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=850346" title="FIXED: inputmode vs inputMode for nsHTMLInputElement">bug 850346</a>).</li>
- <li>WebRTC: the Media Stream API and Peer Connection API are now supported by default.</li>
- <li>Web Components: the <a href="/zh-TW/docs/Web/API/Document/register" title="The documentation about this has not yet been written; please consider contributing!"><code>Document.register</code></a> method has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=783129" title="FIXED: Implement the document.register interface method">bug 783129</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/ProgressEvent/initProgressEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>ProgressEvent.initProgressEvent()</code></a> constructor method has been removed. Uses the standard constructor, <a href="/zh-TW/docs/Web/API/ProgressEvent/ProgressEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>ProgressEvent()</code></a> to construc and initialize <a href="/zh-TW/docs/Web/API/ProgressEvent" title="The ProgressEvent interface represents events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an &lt;img>, &lt;audio>, &lt;video>, &lt;style> or &lt;link>)."><code>ProgressEvent</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=843489" title='FIXED: [Progress Events] Remove support for ProgressEvent.initProgressEvent() and Document.createEvent("ProgressEvent")'>bug 843489</a>).</li>
- <li>Manipulated data associated with a <code><a href="/zh-TW/docs/Web/Reference/Events/cut" title="/zh-TW/docs/Web/Reference/Events/cut">cut</a></code>, <code><a href="/zh-TW/docs/Web/Reference/Events/copy" title="/zh-TW/docs/Web/Reference/Events/copy">copy</a></code>, or <code><a href="/zh-TW/docs/Web/Reference/Events/paste" title="/zh-TW/docs/Web/Reference/Events/paste">paste</a></code> event can now be accessed via the <a href="/zh-TW/docs/Web/API/ClipboardEvent/clipboardData" title="The documentation about this has not yet been written; please consider contributing!"><code>ClipboardEvent.clipboardData</code></a> property (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=407983" title="FIXED: Add support clipboardData object for the onpaste, oncopy, oncut events">bug 407983</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/HTMLTimeElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLTimeElement</code></a> interface has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=629801" title="FIXED: Implement HTML5 &lt;time> element">bug 629801</a>).</li>
- <li>When a <a href="/zh-TW/docs/Web/API/Worker" title="The documentation about this has not yet been written; please consider contributing!"><code>Worker</code></a> constructor is passed an invalid URL, it now throws <a href="/zh-TW/docs/Web/API/DOMException" title="The documentation about this has not yet been written; please consider contributing!"><code>DOMException</code></a> of type <code>SECURITY_ERR</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=587251" title="FIXED: new Worker(badURL) should throw a SECURITY_ERR">bug 587251</a>).</li>
- <li>The <code>origin</code> property has been added to the <a href="/zh-TW/docs/Web/API/Window/location" title="The documentation about this has not yet been written; please consider contributing!"><code>window.location</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=828261" title="FIXED: Implement `window.location.origin`.">bug 828261</a>).</li>
- <li>The <code>valueAsDate</code> and <code>valueAsNumber</code> methods have been added for <code>&lt;input type="time"&gt;</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=781570" title="FIXED: implement valueAsNumber and valueAsDate for input &lt;input type=time>">bug 781570</a>).</li>
- <li>The <code>min</code> and <code>max</code> attributes now apply to <code>&lt;input type="time"&gt;</code> too (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=781572" title="FIXED: implement the min and max attribute for &lt;input type=time>">bug 781572</a>).</li>
- <li>Some new keyCodes for volume control are supported (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674739" title="FIXED: Implement DOM3 KeyboardEvent types for audio">bug 674739</a>).</li>
- <li>Some new keyCodes for ancient keyboard layout such as AS/400 are now supported on Windows and Linux (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=833719" title="FIXED: Some function keys are not working since Firefox Version 15">bug 833719</a>).</li>
- <li>Various keyCode values for OEM sepecific keys on Windows are now supported again (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=833719" title="FIXED: Some function keys are not working since Firefox Version 15">bug 833719</a>).</li>
- <li>The function <a href="/en-US/docs/DOM/window.crypto.getRandomValues" title="DOM/window.crypto.getRandomValues"><code>window.crypto.getRandomValues</code></a> has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=440046" title="FIXED: expose secure PRNG in the DOM (window.crypto.getRandomValues)">bug 440046</a>).</li>
- <li>The methods <a href="/zh-TW/docs/Web/API/NodeIterator/expandEntityReferences" title="The documentation about this has not yet been written; please consider contributing!"><code>NodeIterator.expandEntityReferences()</code></a> and <a href="/zh-TW/docs/Web/API/TreeWalker/expandEntityReferences" title="The documentation about this has not yet been written; please consider contributing!"><code>TreeWalker.expandEntityReferences()</code></a>, no more in the latest DOM spec, has been removed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=672190" title="FIXED: consider removing expandEntityReferences from NodeIterator and TreeWalker">bug 672190</a>).</li>
- <li>CSSOM: the method <a href="/zh-TW/docs/Web/API/CSSKeyframesRule" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSKeyframesRule</code></a><code>.insertRule</code> has been removed to <a href="/zh-TW/docs/Web/API/CSSKeyframesRule" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSKeyframesRule</code></a><code>.appendRule</code> to match a spec change (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=841896" title="FIXED: CSSKeyframesRule should have a `appendRule` method, not `insertRule`">bug 841896</a>).</li>
- <li>CSSOM If the given parameter given to <a href="/zh-TW/docs/Web/API/CSSStyleSheet/insertRule" title="CSSStyleSheet.insertRule() 方法新增一個新的 CSS 規則,到當前的樣式表,他伴隨著一些限制."><code>CSSStyleSheet.insertRule</code></a> contains more than one rule, a <a href="/zh-TW/docs/Web/API/DOMException" title="The documentation about this has not yet been written; please consider contributing!"><code>DOMException</code></a> with a <code>SYNTAX_ERR</code> is now thrown (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=765599" title="FIXED: CSSStyleSheet.insertRule should throw when there are more than one rule">bug 765599</a>).</li>
- <li>Until now, when the same headers were repeatedly set with <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#setRequestHeader" title="/en-US/docs/Web/API/XMLHttpRequest#setRequestHeader"><code>XMLHttpRequest.setRequestHeader</code></a>, the last-specified value was used. This behavior has been changed to comply with the spec, so those values will be properly combined (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=819051" title="FIXED: XMLHttpRequest.setRequestHeader() overwrites instead of combines values for the same header.">bug 819051</a>).</li>
- <li><a href="/zh-TW/docs/Web/API/HTMLMediaElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLMediaElement</code></a> supports now <code>playbackRate</code> (both read and write), with pitch correction. Pitch correction can be controlled using the property <code>mozPreservesPitch</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=495040" title="FIXED: Implement playbackRate and related bits">bug 495040</a>).</li>
- <li>CSSOM: Support for the new <a href="/zh-TW/docs/Web/API/CSSGroupingRule" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSGroupingRule</code></a> and <a href="/zh-TW/docs/Web/API/CSSConditionRule" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSConditionRule</code></a> has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814907" title="FIXED: implement CSSGroupingRule and CSSConditionRule">bug 814907</a>).</li>
- <li>CSSOM: On <a href="/zh-TW/docs/Web/API/CSSRule" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSRule</code></a> the constant CSSRule.MOZ_KEYFRAME_RULE and CSSRule.MOZ_KEYFRAMES_RULE have been unprefixed to CSSRule.KEYFRAME_RULE and CSSRule.KEYFRAMES_RULE. The prefixed version are temporarily kept for helping Web author to transition their code <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816431" title="FIXED: unprefix CSSRule.MOZ_KEYFRAME{,S}_RULE constants">bug 816431</a>).</li>
- <li>CSSOM: It is now possible to set the value of <code>conditionText</code> for <a href="/zh-TW/docs/Web/API/CSSMediaRule" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSMediaRule</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=815021" title="FIXED: implement CSSMediaRule.conditionText assignment">bug 815021</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/DOMParser" title="DOMParser可以將XML或是HTML格式的字串轉成DOM 文件. DOMParser的規格請參閱DOM解譯與串流化."><code>DOMParser</code></a> <code>parseFromStream</code> and <code>parseFromBuffer</code> methods are no longer available from web content (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816410" title="FIXED: Convert XMLSerializer and DOMParser to WebIDL bindings">bug 816410</a>).</li>
- <li>The <code><a href="/en-US/docs/XMLSerializer">XMLSerializer</a></code> <code>serializeToStream</code> method is no longer available from web content (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816410" title="FIXED: Convert XMLSerializer and DOMParser to WebIDL bindings">bug 816410</a>).</li>
- <li><a href="/zh-TW/docs/Web/API/TextDecoder" title="The documentation about this has not yet been written; please consider contributing!"><code>TextDecoder</code></a> and <a href="/zh-TW/docs/Web/API/TextEncoder" title="The documentation about this has not yet been written; please consider contributing!"><code>TextEncoder</code></a> interfaces have been updated to match the latest spec (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801487" title="FIXED: Update StringEncoding API per the latest spec and fix some bugs">bug 801487</a>) and are now available in Workers (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795542" title="FIXED: Implement StringEncoding API in Workers">bug 795542</a>).</li>
- <li>Support for the <code>CSS.supports()</code> method has been added, behind the <code><code>layout.css.supports-rule.enabled</code></code> pref (off by default) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=779917" title="FIXED: Implement CSS.supports()">bug 779917</a>).</li>
- <li>Support for UndoManager has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=617532" title='FIXED: implement the HTML5 "undo history" feature (UndoManager interface)'>bug 617532</a>).</li>
- <li>The CSSOM <a href="/zh-TW/docs/Web/API/Document/caretPositionFromPoint" title="The documentation about this has not yet been written; please consider contributing!"><code>document.caretPositionFromPoint</code></a> method, which returns a <a href="/zh-TW/docs/Web/API/CaretPosition" title="The documentation about this has not yet been written; please consider contributing!"><code>CaretPosition</code></a> has been implemented.</li>
- <li>The index argument of the <a href="/zh-TW/docs/Web/API/TableRow/insertCell" title="The documentation about this has not yet been written; please consider contributing!"><code>tableRow.insertCell</code></a> and <a href="/zh-TW/docs/Web/API/Table/insertRow" title="The documentation about this has not yet been written; please consider contributing!"><code>table.insertRow</code></a> methods has been made optional as per HTML specification.</li>
- <li><a href="/zh-TW/docs/Web/API/Navigator/getUserMedia" title="The documentation about this has not yet been written; please consider contributing!"><code>Navigator.getUserMedia</code></a>, still prefixed as <code>Navigator.mozGetUserMedia</code> is now activated by default.</li>
- <li>The third, optional, <code>transfer</code> argument of <a href="/zh-TW/docs/Web/API/Window/postMessage" title="The documentation about this has not yet been written; please consider contributing!"><code>Window.postMessage</code></a> is now supported. It allows to transfer a sequence of <a href="/zh-TW/docs/Web/API/Transferable" title="The documentation about this has not yet been written; please consider contributing!"><code>Transferable</code></a> objects to the destination (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=822094" title="FIXED: Implement transfer parameter of window.postMessage">bug 822094</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/Element/getElementsByTagName" title="The documentation about this has not yet been written; please consider contributing!"><code>element.getElementsByTagName</code></a> method will now return <code>HTMLCollection</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799464" title="FIXED: Make Element.getElementsBy* return HTMLCollection">bug 799464</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/File" title="File 介面提供了檔案的資訊並且允許網頁中的 JavaScript 存取檔案的內容。"><code>File</code></a> <code>mozLastModifiedDate</code> property has been implemented. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=793955" title="FIXED: [DeviceStorage] files returned by DeviceStorage.get() don't always have lastModifiedDate">bug 793955</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/File" title="File 介面提供了檔案的資訊並且允許網頁中的 JavaScript 存取檔案的內容。"><code>File</code></a> <code>lastModifiedDate</code> property returns the current date, when the date of the last modification is unknown. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=793459" title="FIXED: Update File.lastModifiedDate to latest spec">bug 793459</a>.</li>
- <li>The <a href="/zh-TW/docs/Web/API/CanvasRenderingContext2D" title='要取得此實作此介面的實體物件,可以於一個 &amp;amp;lt;canvas> 元素上以 "2d" 為參數呼叫 getContext() 方法:'><code>CanvasRenderingContext2D</code></a> <code>isPointInStroke</code> method has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=803124" title="FIXED: Implement isPointInStroke">bug 803124</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/HTMLCanvasElement" title="HTMLCanvasElement 介面提供控制 canvas 元素的屬性和方法. HTMLCanvasElement 介面也繼承了 HTMLElement 介面的屬性和方法."><code>HTMLCanvasElement</code></a> <code>toBlob</code> method has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648610" title="FIXED: Implement &lt;canvas>.toBlob">bug 648610</a>).</li>
- <li>The <a href="/zh-TW/docs/Web/API/Node/isSupported" title="The documentation about this has not yet been written; please consider contributing!"><code>Node.isSupported</code></a> and the <a href="/zh-TW/docs/Web/API/Document/implementation" title="The documentation about this has not yet been written; please consider contributing!"><code>document.implementation.hasFeature()</code></a> methods have been changed to always return <code>true</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801425" title="FIXED: Make hasFeature() and isSupported() always return true">bug 801425</a>).</li>
- <li>When calling <code>document.createElement(null)</code>, <code>null</code> will now be stringified and works like <code>document.createElement("null")</code>.</li>
-</ul>
-
-<h2 id="SVG">SVG</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>Inconsistent renderings of <code><a href="/zh-TW/docs/Web/MathML/Element/mmultiscripts" title="&lt;mmultiscripts>">&lt;mmultiscripts&gt;</a></code>, <code><a href="/zh-TW/docs/Web/MathML/Element/msub" title="&lt;msub>">&lt;msub&gt;</a></code>, <code><a href="/zh-TW/docs/Web/MathML/Element/msup" title="&lt;msup>">&lt;msup&gt;</a></code> and <code><a href="/zh-TW/docs/Web/MathML/Element/msubsup" title="&lt;msubsup>">&lt;msubsup&gt;</a></code> have been unified and the error handling of these elements has been improved (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=827713" title="FIXED: Inconsistent rendering of mub / mup / msubsup / mmultiscripts">bug 827713</a>).</li>
- <li>The <a href="/en-US/docs/Web/SVG/Attribute/paint-order" title="/en-US/docs/Web/SVG/Attribute/paint-order">paint-order</a> attribute has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=828805" title="FIXED: implement paint-order property from SVG 2">bug 828805</a>).</li>
- <li>The implementation of the <code>contentScriptType</code> and <code>contentStyleType</code> properties has been removed from <a href="https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement" title="/en-US/docs/Web/API/SVGSVGElement"><code>SVGSVGElement</code></a> along with the removal from SVG2 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=819731" title="FIXED: remove contentStyleType and contentScriptType from SVGSVGElement">bug 819731</a>).</li>
-</ul>
-
-<h2 id="MathML">MathML</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>The <code>dir</code> attribute for controlling directionality of formulas on e.g. <code><a href="https://developer.mozilla.org/en-US/docs/Web/MathML/Element/math" title="&lt;math>">&lt;math&gt;</a></code> or <code><a href="https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mrow" title="&lt;mrow>">&lt;mrow&gt;</a></code> elements is now equivalent to using the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/direction" title=""><code>direction</code></a> CSS property.</li>
- <li>The equal sign ("=") is now <a href="https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo#attr-stretchy">stretchable</a>.</li>
- <li>The "<code>updiagonalarrow</code>" value for the <code>notation</code> attribute on <code><a href="https://developer.mozilla.org/en-US/docs/Web/MathML/Element/menclose" title="&lt;menclose>">&lt;menclose&gt;</a></code> elements has been added.</li>
- <li>Negative widths for the <code><a href="/zh-TW/docs/Web/MathML/Element/mspace" title="&lt;mspace>">&lt;mspace&gt;</a></code> element has been implemented (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=717546" title="FIXED: Implement mspace with negative width">bug 717546</a>).</li>
- <li>The <code><a href="/zh-TW/docs/Web/MathML/Element/semantics" title="&lt;semantics>">&lt;semantics&gt;</a></code> element now determines the visible child as described in the MathML3 specification.</li>
- <li>To help MathML authors debugging "invalid-markup" errors in their documents, MathML parsing errors (such as having too many / too few child elements) and warnings about deprecated attributes or wrong attribute values are now reported to the <a href="/en-US/docs/Error_Console" title="Error_Console">Error Console</a>.</li>
- <li>The <code>scriptminsize</code> attribute now accepts unitless values and percent values. They are interpreted as multiples of the default value ("<code>8pt</code>").</li>
- <li>Unitless values are now also allowed for the <code>mathsize</code> and <code>fontsize</code> attributes; they multiply the default value.</li>
-</ul>
-
-<h2 id="Network">Network</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>We continue to update our CSP implementation to match the CSP 1.0 spec, which reached Candidate Recommendation:
- <ul>
- <li>Support for the spec-compliant <code>Content-Security-Policy</code> HTTP header (in addition to the experimental <code>X-Content-Security-Policy</code>) has been added (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=783049" title="FIXED: CSP : use existing/old parser for X-Content-Security-Policy header, new/CSP 1.0 spec compliant parser for Content-Security-Policy header">bug 783049</a>). <strong>Note</strong>: the patch for this new header landed in Firefox 21, it is disabled on builds (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=842657" title="FIXED: Flip the pref to enable the CSP 1.0 parser for Firefox">bug 842657</a>).</li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Worker">Worker</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>The functions <a href="/zh-TW/docs/Web/API/Window/URL/createObjectURL" title="The documentation about this has not yet been written; please consider contributing!"><code>URL.createObjectURL</code></a> and <a href="/zh-TW/docs/Web/API/Window/URL/revokeObjectURL" title="The documentation about this has not yet been written; please consider contributing!"><code>URL.revokeObjectURL</code></a> are now included in the set of <a href="/en-US/docs/DOM/Worker/Functions_available_to_workers" title="DOM/Worker/Functions_available_to_workers">functions available to workers</a>.</li>
-</ul>
-
-<h2 id="Security">Security</h2>
-
-<p>General Gecko:</p>
-
-<ul>
- <li>Mixed content blocking. Firefox will no longer load non-secure (http) resources on secure (https) pages (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834836" title="FIXED: Turn on pref to block mixed active content">bug 834836</a>).</li>
- <li>The standard syntax of <a href="/en-US/docs/Security/CSP" title="/en-US/docs/Security/CSP">CSP</a> 1.0 policies are now implemented and enforced by default.</li>
-</ul>
-
-<h2 id="XForms">XForms</h2>
-
-<p>General Gecko:</p>
-
-<p>Support for <a href="/en-US/docs/XForms" title="XForms">XForms</a> has been <a href="http://www.philipp-wagner.com/blog/2011/07/the-future-of-mozilla-xforms/" title="http://www.philipp-wagner.com/blog/2011/07/the-future-of-mozilla-xforms/"><strong>removed</strong></a> in Firefox 19.</p>
-
-<h2 id="See_also">See also</h2>
-
-<ul>
- <li><a href="http://www.mozilla.org/en-US/firefox/os/notes/1.2/" title="http://www.mozilla.org/en-US/firefox/os/notes/1.2/">Firefox OS 1.2 Notes</a></li>
-</ul>
-
-<h2 id="Older_versions">Older versions</h2>
-
-<p></p><div class="multiColumnList">
-<ul>
-<li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.1">Firefox OS 1.1 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li></ul>
-</div><p></p>
-
-<p> </p>
-
-<p>Share this article: <a href="http://mzl.la/1av9ZRr">http://mzl.la/1av9ZRr</a></p>
diff --git a/files/zh-tw/archive/b2g_os/releases/index.html b/files/zh-tw/archive/b2g_os/releases/index.html
deleted file mode 100644
index 3edbcd4c75..0000000000
--- a/files/zh-tw/archive/b2g_os/releases/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Firefox OS developer release notes
-slug: Archive/B2G_OS/Releases
-tags:
- - Firefox OS
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/B2G_OS/Releases
----
-<h2 id="Firefox_OS_release_notes_by_version">Firefox OS release notes by version</h2>
-<p>This section provides articles covering each new release of Gaia and Gecko for Firefox OS, explaining what features were added and bugs eliminated in each update. There is also a linked summary table showing what APIs are supported by each version of Firefox OS.</p>
-<div class="multiColumnList">
- {{ListSubpages("",1,0,1)}}</div>
-<h2 id="Other_supporting_information">Other supporting information</h2>
-<dl>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/API_support_table">Firefox OS API support table</a></dt>
- <dd>
- Lists the different APIs available, and what versions of Firefox have support for them.</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/App_permissions">App permissions</a></dt>
- <dd>
- Lists hosted, privileged and certified APIs, along with information on the permissions they need to have set in the App Manifest of your installable apps, such as the manifest permission name, app type required, description, access property, and default permission.</dd>
-</dl>
diff --git a/files/zh-tw/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html b/files/zh-tw/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html
deleted file mode 100644
index be4fefd747..0000000000
--- a/files/zh-tw/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: 在 WebIDE 中執行 Firefox OS/Gaia 自訂版本
-slug: Archive/B2G_OS/Running_custom_builds_in_the_App_Manager
-translation_of: Archive/B2G_OS/Developing_Gaia/Running_custom_builds_in_WebIDE
----
-<div class="summary">
- <p><span class="seoSummary">Firefox OS 模擬器 (Firefox OS Simulator) 已於 2014 年 2 月新增功能,可執行自訂的 B2G 執行環境及/或 Gaia 設定檔 (Profile)。本文將說明相關設定方式,並透過 <a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE">WebIDE</a> 執行模擬器。</span></p>
-</div>
-<div class="note">
- <p><strong>注意:</strong>在本文發表之時,滑鼠事件尚未能正確對應觸控事件。例如回到主畫面鈕並無法回應滑鼠點擊的動作。但只要使用 B2G Desktop 鍵盤指令,即可解決此問題。可參閱「<a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_B2G_desktop_client">Using the B2G Desktop client</a>」。</p>
-</div>
-<div class="note">
- <p><strong>注意:</strong>如果你能提交 Try 版本,則可在各個 B2G 桌面平台的版本路徑中產生模擬器附加元件。如此可讓模擬器搭配自訂的 Gecko,或搭配對 Gaia 上進行的修改。在某些使用條件下可選用此較簡易的方式。</p>
-</div>
-<h2 id="必要條件">必要條件</h2>
-<p>要在模擬器內執行自訂版本,必須齊備相關工具。</p>
-<ol>
- <li>安裝 Firefox 並確定其內有 <a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE">WebIDE</a> (工具<em> &gt; </em>網頁開發者<em> &gt; </em>WebIDE)。</li>
- <li>安裝最新版 <a href="http://nightly.mozilla.org/">B2G Desktop Nightly</a>,或<a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_B2G_desktop_client#Building_the_desktop_client">建構自己的版本</a>。</li>
- <li>安裝<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">最新版 Firefox OS 模擬器</a>套件,即 7.0pre7.20140113 或更高版本。或可將 FXOS_SIMULATOR=1 添增到自己的 mozconfig,並使用 ./mach build &amp;&amp; ./mach package,從自己的 B2G Desktop 原始碼來建構。</li>
- <li>用 <code>SIMULATOR=1 flag</code> 建立 Gaia 設定檔。舉例來說,你可在自己的 Gaia 路徑中執行 <code>make SIMULATOR=1 PROFILE_FOLDER=profile-b2g profile-b2g</code> 指令 (請參閱 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia/Hacking#Make_options">Hacking Gaia</a> 進一步了解)。</li>
-</ol>
-<h2 id="設定自己的模擬器">設定自己的模擬器</h2>
-<p>你必須完成某些設定,才能讓模擬器找到你的 B2G Desktop 與自訂的 Gaia。</p>
-<ol>
- <li>打開附加元件管理分頁 (工具 &gt; 附加元件;或在網址列中輸入 <code>about:addons</code>)。</li>
- <li>點擊「擴充套件 (Extensions)」分頁,可列出現已安裝的套件。</li>
- <li>在清單中找到新的 Firefox OS 模擬器擴充套件。應該會顯示如 <em>Firefox OS 1.3 Simulator 7.0pre.7.20140113</em>。</li>
- <li>點擊此擴充套件內的「選項 (Preferences)」按鈕。<br>
- <img alt="the Firefox OS simulator preferences: Preferences, disable and remove." src="https://mdn.mozillademos.org/files/7241/about-addon.png" style="width: 1247px; height: 63px; display: block; margin: 0px auto;"></li>
- <li>如果你要使用自訂的可執行檔 (最新的 B2G Desktop 版本),以利於 WebIDE 中執行 Firefox OS,則點擊「<em>Select a custom runtime executable</em>」旁邊的「<em>Browse...</em>」按鈕,在檔案選擇介面中找到自己的 B2G Desktop 可執行檔。如果是 Windows/Linux 環境就很好找;而在 Mac 環境中,只要安裝於 <code>Applications</code> 路徑下,就可於 <code>/Applications/B2G.app/Contents/MacOS/b2g</code> 找到。</li>
- <li>你也能在 WebIDE 中執行自訂的 Gaia 設定檔。同樣點擊「<em>Select a custom Gaia profile directory</em>」旁邊的「<em>Browse...</em>」按鈕,找到自訂的設定檔路徑 (應該是 <em>gaia/profile-b2g</em>)。</li>
- <li>如果要回到非自訂的模擬器,只要重新設定組態值即可。但<strong>不能</strong>單純的刪除再重新安裝模擬器附加元件。你必須開啟新的分頁,在網址列中輸入「about:config」,繼續在該頁的搜尋欄位中輸入「fxos」或「simulator」,找到如「extensions.fxos_2_0_simulator@mozilla.org.customRuntime」,或「extensions.fxos_2_0_simulator@mozilla.org.gaiaProfile」。這時按下滑鼠右鍵並點選「Reset」。最後重新啟動模擬器版本,就能使用非自訂版本的模擬器。</li>
-</ol>
-<h2 id="使用自訂的模擬器">使用自訂的模擬器</h2>
-<p>最後說明該如何使用自訂的模擬器。</p>
-<ol>
- <li>啟動 <a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE">WebIDE</a> (工具<em> &gt; </em>網頁開發者<em> &gt; WebIDE</em>);或可按下「Shift + F8」。</li>
- <li>點擊右上方的按鈕,開啟「Runtime」選單。</li>
- <li>點擊「Firefox OS 1.3」按鈕 (或你安裝的任何最新版本)。即使你的 B2G desktop/Gaia 版本比較新,仍建議點選 Firefox OS 1.3 版。</li>
- <li>接著就會啟動模擬器,將載入 B2G Desktop 並執行你的 B2G Nightly 版本與自訂 Gaia!</li>
-</ol>
-<p><img alt="a screenshot of the b2g desktop simulator " src="https://mdn.mozillademos.org/files/7239/b2g-desktop.png" style="width: 434px; height: 616px; display: block; margin: 0px auto;"></p>
diff --git a/files/zh-tw/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html b/files/zh-tw/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html
deleted file mode 100644
index ae38c355ea..0000000000
--- a/files/zh-tw/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
----
-title: 系列影片:Firefox OS App 開發入門
-slug: 'Archive/B2G_OS/Screencast_series:_App_Basics_for_Firefox_OS'
-translation_of: 'Archive/B2G_OS/Firefox_OS_apps/Screencast_series:_App_Basics_for_Firefox_OS'
----
-<div class="summary">
-<p><span class="seoSummary"><a href="http://mozilla.com.tw/firefox/os/">Firefox OS</a> 這款作業系統,就是要將 Web 帶入行動裝置所設計。Firefox OS 不是以新技術或新開發環境所建構的全新 OS;而是以行之有年的標準化 Web 技術所打造而成。如果你本身就是 Web 開發者且想建構行動 App,那麼 Firefox OS 就能提供最適合的工具,且不會要求你改變自己以熟悉的工作流程,也不需再重新學習另一套開發環境。此系列短片是由 Mozilla 與 Telenor 在挪威共同錄製而成,將引領你入門 Firefox OS App 的開發作業。</span></p>
-</div>
-
-<p>你可透過本系列影片了解:</p>
-
-<ul>
- <li>該如何建構自己的第一個 Firefox OS App</li>
- <li>該如何在桌機與實際裝置上測試 App 並除錯</li>
- <li>該如何將 App 提交至 <a href="https://developer.mozilla.org/en-US/Marketplace">Firefox Marketplace</a> 中</li>
- <li>該如何使用 API,以及 Firefox OS 針對 JavaScript 所提供的特殊介面,進而存取智慧型手機中的硬體</li>
-</ul>
-
-<div class="note">
-<p><strong>注意:</strong>每部短片均極為精簡扼要,讓你短暫休息時也能欣賞。一口氣看完整個系列也不會超過一個小時。</p>
-</div>
-
-<h2 id="程式碼與開發環境">程式碼與開發環境</h2>
-
-<p>除了短片之外,你也能<a href="https://github.com/comoyo/fxos-video-script/">從 GitHub 下載程式碼範例</a>。如果你想自己測試程式碼範例,就必須先設定簡易的開發環境。必備條件如下:</p>
-
-<ul>
- <li>最新版本的 <a href="http://mozilla.com.tw/firefox/new/">Firefox</a> (內含現成的開發工具)─ 如果你真的要把玩最新技術,那我們建議可下載 <a href="http://www.mozilla.org/en-US/firefox/aurora/">Firefox Aurora</a> 或 <a href="https://nightly.mozilla.org/">Nightly</a> 版本</li>
- <li>文字編輯器 ─ 短片中使用了 <a href="http://www.sublimetext.com/">Sublime Text</a>,但其實任何文字編輯器均可。如果你想直接在 Web 上編輯程式,則可嘗試 <a href="http://brackets.io/">Adobe Brackets</a></li>
- <li>可供你推播自己 Demo 檔案的伺服器。某些展示用 App 需要 HTTP 連線,而不適用本地伺服器</li>
-</ul>
-
-<h2 id="系列影片介紹">系列影片介紹</h2>
-
-<p>此系列短片是由 Telenor Digital 的 <a href="http://twitter.com/janjongboom">Jan Jongboom (@janjongboom)</a> 與 <a href="http://twitter.com/sergimansilla">Sergi Mansilla (@sergimansilla)</a>,以及 Mozilla 的 <a href="http://twitter.com/codepo8">Chris Heilmann (@codepo8)</a> 於 2014 年 2 月所錄製。地點位於挪威首都奧斯陸的 Telenor Digital 辦公室內。</p>
-
-<p>這三位接下來將為大家簡短介紹系列影片:</p>
-
-<p>{{EmbedYouTube("835Z2RTPdQk")}}</p>
-
-<h2 id="Section_1:建構並發佈">Section 1:建構並發佈</h2>
-
-<h2 id="自己的第一款_Firefox_OS_App">自己的第一款 Firefox OS App</h2>
-
-<p>接下來 5 支短片將說明如何建構 Firefox OS App、如何在電腦和實體裝置上測試 App 並除錯、如何將 App 發佈至 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 中。這看起來好像很複雜,但其實只要你已經知道怎麼寫網站,就等於能完成 90% 的 App。</p>
-
-<h3 id="不只是網站">不只是網站</h3>
-
-<p>Firefox OS App 就是 HTML5 App;其所使用的技術本質上也與網站技術相同。你可以先寫個網站,再提供 manifest 檔案 (可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F/Manifest-840092-dup#csp">App manifest</a>》進一步了解) 即可將網站轉為 App。這個動作就等於告知 Firefox OS 你在撰寫 App,並可讓你:</p>
-
-<ul>
- <li>能把 App 發佈到 Marketplace 上</li>
- <li>可存取裝置的硬體,蒐集如<a href="https://developer.mozilla.org/en-US/docs/Web/API/Geolocation">地理位置資訊 (Geolocation)</a> 與<a href="https://developer.mozilla.org/en-US/Apps/Build/gather_and_modify_data/Keep_it_level_responding_to_device_orientation_changes">裝置方向 (Device Orientation)</a> 等資訊</li>
- <li>還有更多功能!</li>
-</ul>
-
-<p>HTML5 App 其實是透過網站強化其功能,也同樣遵循相同的規則,如:</p>
-
-<ul dir="ltr">
- <li>「Progressive enhancement」,亦即先撰寫可用的配置,再視情況套用適合的版面。</li>
- <li>因應當前的執行裝置環境。如透過 <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries">media queries</a> 與 <a href="https://developer.mozilla.org/en-US/Apps/app_layout/responsive_design_building_blocks#Responsive_images.2Fvideo">responsive images</a> 而最佳化 App,已配合不同的螢幕尺寸、解析度、可用網路的速度等。</li>
- <li>採用 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML">HTML</a>、<a href="https://developer.mozilla.org/en-US/docs/Web/CSS">CSS</a>、<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a> 作為其核心技術。</li>
-</ul>
-
-<p>若要將網頁轉為絕佳的 App,其中的差異就在於開發者就必須考量到行動裝置使用者。也代表 App 首先必須要能:</p>
-
-<ul dir="ltr">
- <li><a href="https://developer.mozilla.org/en-US/Apps/Build/Offline">離線作業</a></li>
- <li>在讓使用者進行某個作業之餘,也要提供可輕鬆使用的介面</li>
- <li>妥善利用有限的電池容量、處理器的速度、可用的螢幕空間而能盡情把玩 App</li>
-</ul>
-
-<p>在大多數的情況下,開發者必須稍微讓網頁「瘦身」並簡化介面。而使用者也確實能因此獲得更好的經驗。</p>
-
-<p>{{EmbedYouTube("oUbOw2cQC4k")}}</p>
-
-<div class="note">
-<p><strong>注意:</strong>若要進一步設計出絕佳的 HTML5 App,可參閱 <a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/In-app_payments">MDN 上的《應用程式中心》</a>一文。</p>
-</div>
-
-<h3 id="App_的_Manifest_檔案">App 的 Manifest 檔案</h3>
-
-<p><a href="https://developer.mozilla.org/en-US/Apps/Developing/Manifest">Firefox OS App 的 manifest 檔案</a> (你會在「應用程式管理員 App Manager」看到中文翻譯為「安裝資訊檔」),屬於簡易的 JSON 檔案,將告知作業系統該 App 的相關訊息;另外也可將網頁轉為 <a href="https://developer.mozilla.org/en-US/Apps/Quickstart/Build/Intro_to_open_web_apps">Open Web App</a>。開發者可於 manifest 定義 App 不同語系的名稱,也可要求作業系統存取不同的服務與硬體。當然亦可定義該 App 適合的方向 (直幅或橫幅),亦能依需要而鎖定畫面。</p>
-
-<p>{{EmbedYouTube("UTXIVg6sYtA")}}</p>
-
-<p>進一步了解 manifest 檔案與相關工具:</p>
-
-<ul>
- <li><a href="https://marketplace.firefox.com/developers/validator">Open Web Apps Manifest Validator</a> ─ 亦可作為 <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/">API</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Apps/Developing/Manifest">Open Web App 的 Manifest 檔案相關 MDN 文章 </a> ─ 另說明該如何從自己的伺服器提供 manifest 檔案</li>
-</ul>
-
-<h3 id="應用程式管理員_(App_Manager)">應用程式管理員 (App Manager)</h3>
-
-<p>要想開始入門 Firefox OS,最簡單的方法就是使用「<a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">應用程式管理員 (App Manager)</a>」。應用程式管理員也是<a href="https://developer.mozilla.org/en-US/docs/Tools/">桌面版 Firefox 的開發者工具之一</a>,可在電腦上模擬 Firefox OS 裝置。開發者可盡情把玩 Firefox OS,也可像在實際裝置上安裝並測試 App。此外,你也能離線或上線編輯 App,進而體驗 App 並進行除錯,在模擬裝置中即時看到修改之後的結果。</p>
-
-<p>{{EmbedYouTube("oyAlYjpK-PE")}}</p>
-
-<p>若要進一步了解應用程式管理員:</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">MDN 上的《</a><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">App Manager</a><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">》說明文章</a></li>
- <li><a href="https://hacks.mozilla.http://blog.mozilla.com.tw/posts/3965/">介紹「應用程式管理員」的部落格文章</a></li>
-</ul>
-
-<h3 id="在實體裝置上測試">在實體裝置上測試</h3>
-
-<p>在模擬器上測試 App 當然不錯,但畢竟會受限於模擬的環境。如果想測試 App 互動時的效能或畫面呈現方向,就需要實體裝置。實機同樣可搭配既有的開發者工具,以及「應用程式管理員 (App Manager)」。在實機上使用 App 時,可透過上述 2 種工具進一步了解 App 所發生的作業。而且 App 不必更新,也不必解除安裝,即可即時看到 App 的變化。</p>
-
-<p>{{EmbedYouTube("T8sr9SHKDHE")}}</p>
-
-<h3 id="發佈至_Marketplace">發佈至 Marketplace</h3>
-
-<p><a href="http://marketplace.firefox.com/">Firefox Marketplace</a> 可供開發者提交 App,並讓消費者能夠接觸到自己的作品。Marketplace 亦可發佈如 Firefox 桌面版與行動版所適用的 App。而消費者只需要簡單的幾個步驟,就能對 App 評分、提出反饋意見、購買自己所需的 App。要發佈自己的 App 真的很簡單:</p>
-
-<ul>
- <li>為 manifest 檔案 (你可能會看到中文翻譯為「安裝資訊檔」) 設定網址</li>
- <li>為 App 填寫必要敘述說明 (可讓消費者更快找到自己需要的 App)</li>
- <li>提供 App 的截圖或影片</li>
- <li>為 App 挑選適合的分類</li>
- <li>填寫自己的電子郵件,讓 Mozilla 能聯絡你</li>
- <li>如果開發者有自己的隱私權政策與支援服務網站,也應提供給消費者知道</li>
- <li>為自己的 App 設定內容分級</li>
-</ul>
-
-<p>{{EmbedYouTube("kk3gYALtE0Q")}}</p>
-
-<p>App 在提交到 Marketplace 之後,均會由 Mozilla 審查團隊進行審閱,並在幾天內就會通知審查結果。如果 App 有任何問題,在提交期間就會收到相關的檢驗訊息。開發者也有可能收到詳細的問題說明,並獲得修復問題的方法。</p>
-
-<h2 id="Section_2:Firefox_OS_進階說明">Section 2:Firefox OS 進階說明</h2>
-
-<h3 id="引言">引言</h3>
-
-<p>在前幾支影片中,我們談了 Firefox OS 的基礎概念、打造自己第一個 App 的步驟、在桌機與 Firefox OS 實體裝置上進行 App 除錯,最後把自己的 App 提交到 Marketplace 上。</p>
-
-<p>而接下來的影片會再進一步說明 Firefox OS App 的技術;也會談談存取功能,讓開發者能妥善利用平板電腦與智慧型手機。但這些技術目前僅適用於 Firefox OS,還未能擴及其他平台。Firefox OS 內的所有程式,都是針對標準化與開放源碼的目標所設計。也就是說,我們很快就能在其他裝置或平台上看到 Firefox OS App 的蹤跡。</p>
-
-<h3 id="Web_API">Web API</h3>
-
-<p>智慧型手機具備 GPS、相機、加速規等的多樣高階功能。但問題是 Web 技術並無法碰觸到這些功能技術。如果要存取這些功能,就必須撰寫原生應用程式。為了克服這個問題,Mozilla 與合作夥伴定義了一系列 API,可讓開發者以安全的方式,透過 JavaScript 存取行動裝置所搭載的硬體。這些開放的 API 即所謂的<a href="https://wiki.mozilla.org/WebAPI"> Web API</a>,同樣也提供給他人建構更多功能。Firefox OS 也是第一個使用 Web API 的平台。開發者不需另外撰寫原生的應用程式,即可存取智慧型手機上所需的功能。</p>
-
-<p>{{EmbedYouTube("QkpH_qugrPk")}}</p>
-
-<p>若要進一步了解 Web API:</p>
-
-<ul>
- <li>此 <a href="https://wiki.mozilla.org/WebAPI">Wiki 頁面說明目前 API 的建構情形</a>;也有作為該 API 基礎的其他標準</li>
- <li><a href="https://hacks.mozilla.org/category/webapi/">Mozilla Hacks 上亦有其他文章</a>提及 WebAPI</li>
-</ul>
-
-<h3 id="Web_Activities">Web Activities</h3>
-
-<p><a href="https://wiki.mozilla.org/WebAPI/WebActivities">Web Activities</a> 可視為 Web API 的替代方案,同樣可存取某些特定裝置的硬體。相較於 API 直接與裝置溝通,Web Activities 則是在裝置上建立所有 App 的生態系統,讓 App 彼此相互溝通。舉例來說,App 不會存取相機而是要求圖片,讓使用者可透過自己最愛用的 App 取得圖片。也就是說,App 不要求使用者存取硬體 (偏安全性的考量),而是讓使用者所信賴的 App 去取得圖片。此外,你也可以註冊特定 App 負責處理 OS 中的特定作業。Web Activities 其實就像對桌機裡的檔案按下滑鼠右鍵,你能在右鍵選單中看到有多種 App 可開啟檔案。而使用者可要求 OS 預設特定 App 開啟此一類型的檔案。Web Activities 可讓裝置上的 App 相互溝通,而不需再透過伺服器作為媒介。App 之間傳送的資料均已為最終資料。</p>
-
-<p>{{EmbedYouTube("RQbCyDd9ejE")}}</p>
-
-<p>進一步了解 Web Actitivies:</p>
-
-<ul>
- <li><a href="https://wiki.mozilla.org/WebAPI/WebActivities">Web Activities 的 Wiki 頁面</a></li>
- <li><a href="https://hacks.mozilla.org/2013/01/introducing-web-activities/">介紹 Web Activities 的相關 Hacks 文章</a></li>
-</ul>
-
-<h3 id="推播通知">推播通知</h3>
-
-<p>使用 <a href="https://wiki.mozilla.org/WebAPI/SimplePush">SimplePush WebAPI</a> 的推播通知 (Push notification) 功能,可在裝置接收到特定訊息時喚醒 App。如此可在省電狀態下讓 App 保持待機,再隨時根據需求喚醒 App;此功能對行動裝置 App 格外重要。用這種方式所傳送的通知也有其優點:這種通知不會攜帶任何資料,Mozilla 不會取得 App 的資訊,而惡意攻擊者也無法監聽。</p>
-
-<p>{{EmbedYouTube("F5UF4dKojzw")}}</p>
-
-<p>若要進一步了解 SimplePush 所推播的通知:</p>
-
-<ul>
- <li><a href="https://wiki.mozilla.org/WebAPI/SimplePush">SimplePush 的 Wiki 頁面 </a></li>
- <li>Mozilla Hacks 對 <a href="https://hacks.mozilla.org/2013/07/dont-miss-out-on-the-real-time-fun-use-firefox-os-push-notifications/">SimplePush 的介紹</a></li>
-</ul>
-
-<h3 id="離線功能">離線功能</h3>
-
-<p>如果 App 無法離線作業,那可用性就會大大降低。有部分使用者也因為這個理由,比較喜歡安裝 App 之後只要開啟瀏覽器,就能在裝置的瀏覽器上查看所需的內容。其實「Web App」這個詞看起來會有「需要網路連線才能運作」的感覺。但使用者總是有無法上網的時候:飛機上必須關機、地底下收不到訊號,甚或手機內沒留任何資料。開發者應該要確保自己的 App 能離線運作。而 HTML5 即具備幾項離線作業的技術,主要就是 <a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">AppCache</a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage">DOMStorage</a>。</p>
-
-<p>{{EmbedYouTube("Q_WmkCzEKho")}}</p>
-
-<p>進一步了解離線功能:</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage">DOMStorage 的 Wiki 頁面</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">AppCache 的 Wiki 頁面</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB">使用 IndexedDB</a> - 用戶端的進階儲存方式</li>
- <li><a href="https://github.com/mozilla/localForage">LocalForage</a> 是 Firefox OS 中所使用的 wrapper,可兼顧 DOMStorage 的簡單易用,與 IndexedDB 的強大功能 (<a href="https://hacks.mozilla.org/2014/02/localforage-offline-storage-improved/">本篇 Mozilla Hacks 文章</a> 另外詳細說明)</li>
-</ul>
-
-<h2 id="深入了解">深入了解</h2>
-
-<p>我們希望這一系列的影片,能夠順利帶領開發者建構出自己的第一款 Open Web App。如果你很感興趣也想了解更多細節,也有許多其他資源與管道可供你利用:</p>
-
-<p>{{EmbedYouTube("UVf2EVrLpl8")}}</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Apps/">MDN 上的「應用程式中心」</a>另提供有關絕佳 Open Web App 的設計訣竅、可供下載的範例程式碼,另有將自己 App 提交到 Marketplace 的詳細說明</li>
- <li><a href="https://hacks.mozilla.org">Hacks 部落格</a>將持續提供 Firefox OS App 的文章 (當然也有像你的第三方開發者所撰寫的心得文),並有說明 WebAPI 等不同技術的進階文章,讓你能提早了解下一版 Firefox 與 Firefox OS 所將具備的特色功能</li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS">MDN 的 Firefox OS 區塊</a>以及 <a href="https://wiki.mozilla.org/B2G">B2G 的 Wiki 頁面</a>,均有 Firefox OS 的深入資訊</li>
- <li>我們很多人都掛在 IRC 上;只要到 <a href="http://irc.mozilla.org">irc.mozilla.org</a> 並透過 #devrel、#b2g、#openwebapps、#marketplace 都能找到我們</li>
-</ul>
-
-<p>歡迎大家多多交流</p>
-
-<p>影片錄製人:Chris、Sergi、Jan</p>
diff --git a/files/zh-tw/archive/b2g_os/security/application_security/index.html b/files/zh-tw/archive/b2g_os/security/application_security/index.html
deleted file mode 100644
index 3e8f8d576e..0000000000
--- a/files/zh-tw/archive/b2g_os/security/application_security/index.html
+++ /dev/null
@@ -1,124 +0,0 @@
----
-title: 應用程式安全
-slug: Archive/B2G_OS/Security/Application_security
-translation_of: Archive/B2G_OS/Security/Application_security
----
-<div class="summary">
- <p>本文涵蓋 Firefox OS 應用程式安全模型細節內容。</p>
-</div>
-<p>Firefox OS Web app 核心安全控制如下:</p>
-<ul>
- <li>Web app 並非瀏覽器中的網頁,而是實際需要安裝後執行的,為了保護使用者更新和移除 app 都會有安全管理機制。</li>
- <li>存取 Web API 都有權限系統管制,Web app 安裝前必須宣告會使用到那些權限,如果要存取功能更強大的 API,Web app 還得要符合特定條件、被檢驗、受到 Marketplace 簽署。</li>
- <li>Web app 都在 sandbox 環境下運作,只能看到自己的資源 (cookies、離線 IndexedDB 資料庫等等)。即使剛好兩個 app 載入一樣網址的網頁,這兩份網頁也不會被視為來自同一個網域。</li>
-</ul>
-<h3 id="App_類別">App 類別</h3>
-<p>Firefox OS 支援: "<strong>web</strong>", "<strong>privileged</strong>" 和 <strong>internal</strong> ("<strong>certified</strong>") 三種類別的 Web app,app 的類別宣告在 <a href="/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">manifest</a> 裡 (另外使用權限也在裡面) 。</p>
-<ul>
- <li><strong>Web Apps:</strong> 大多數第三方 app 都屬於這一類;算是預設類別,沒有超出網頁可用的多餘權限。Web app 能自其他網站安裝而無須額外的驗證程序,也可以被<a href="/en-US/docs/Web/Apps/Packaged_apps" title="/en-US/docs/Web/Apps/Packaged_apps">封裝 (packaged)</a> 起來,但同樣沒有多餘權限。</li>
- <li><strong>Privileged Apps</strong>: 要求提高權限的 app,一定要被驗證以及通過 Marketplace 簽署。</li>
- <li><strong>Internal/Certified Apps: </strong>只能,如被 OEM 廠商,預裝的 app。</li>
-</ul>
-<div class="note">
- <p><strong>Note</strong>: 關於 App 類別,詳細說明請見 <a href="/en-US/docs/Apps/Manifest#type" title="/en-US/docs/Apps/Manifest#type">App Manifest</a>。</p>
-</div>
-<h3 id="App_下載">App 下載</h3>
-<p>Firefox OS 共有兩種 App 下載機制:hosted 以及 packaged。一般 web app 兩種方式都能適用,但 privileged 和 certified apps 只能走 packaged 的方式。</p>
-<h4 id="Hosted(託管式)_apps"><span class="mw-headline" id="Hosted_apps">Hosted(託管式</span><span class="mw-headline">) apps </span></h4>
-<p>Hosted app 只包含開發者網站伺服器上的 <a class="external text" href="/en-US/docs/Apps/Manifest" rel="nofollow">application manifest</a> 檔案,Manifest 檔案裏面有 app 開啟時的<a href="/en-US/Apps/Build/Manifest#launch_path">啟動頁面路徑</a>。從安全性角度來看 hosted app 和網頁差不多,當打開 hosted app ,載入頁面的 URL 就是網頁在伺服器上的一般 URL,如果之前有 appcache 存檔的話則會從裝置上載入。</p>
-<h4 id="Packaged(封裝式)_apps"><span class="mw-headline" id="Packaged_apps">Packaged(封裝式) apps</span></h4>
-<p>Packaged app 將所有的資源 (HTML, CSS, JavaScript, app manifest 等等) 包在一份 zip 檔中,而非網頁伺服器,細節請見<a href="/en-US/docs/Apps/Packaged_apps" title="Apps/Packaged_apps"> Packaged apps</a>. </p>
-<h3 id="App_來源">App 來源</h3>
-<p>對於 hosted app,<a class="external text" href="/en-US/docs/Apps/Manifest" rel="nofollow">application manifest</a> 檔案所在地就是其來源。</p>
-<p>至於 packaged apps,其來源就是安裝當下決定的應用程式識別,而 <a href="/en-US/Apps/Publishing/Packaged_Apps#Types_of_packaged_apps">Privileged 和 Internal apps </a>另外可以在 applications manifest 檔案裡用 <a href="/en-US/Apps/Build/Manifest#origin">origin</a> 參數請求使用特定來源。</p>
-<h3 id="App_安裝"><strong>App 安裝</strong></h3>
-<p>App 透過 <a href="/en-US/docs/JavaScript_API" title="/en-US/docs/JavaScript_API">Apps JavaScript API</a> 安裝:</p>
-<ul>
- <li>Hosted App: Hosted app 是藉由呼叫 <code>navigator.mozApps.<a href="/en-US/docs/Web/API/Apps.install" title="/en-US/docs/Web/API/Apps.install">install</a>(manifestURL)進行安裝,其中</code> manifestURL 是一個指向 app 位置的 URL。更多資訊請參考<a href="/en-US/docs/DOM/Apps.install">安裝 Apps</a>。</li>
- <li>Packaged App: Packaged app 是藉由呼叫 <code>navigator.mozApps.<a href="/en-US/docs/Web/API/Apps.installPackage" title="/en-US/docs/Web/API/Apps.installPackage">installPackage</a>(packageURL) 進行安裝。</code>Packaged app 的主程式 manifest 檔經過簽署、存在封裝包之中,另外還會有一個用來發起安裝程序的 "mini-manifest" 檔。更多資訊請見<a href="/en-US/docs/DOM/Apps.installPackage">安裝 Packaged Apps</a> 和<a href="/en-US/docs/Apps/Packaged_apps" title="Apps/Packaged_apps"> Packaged apps</a>。</li>
-</ul>
-<p>App manifest 和 App 來源必須一致,這樣避免了未知的第三方冒用 App;另外為了避免網站被不小心或故意被偽裝成有 app manifest,manifest 檔必須以特定 mime-type,<code>application/x-web-app-manifest+json,</code> 發送。</p>
-<h3 id="更新"><span class="mw-headline" id="Updates">更新</span></h3>
-<p>更新程序請見<a href="/en-US/docs/Apps/Updating_apps" title="Apps/Updating_apps">更新 apps</a>。</p>
-<h2 id="權限">權限</h2>
-<p>App 能夠被授予比一般網頁更多的權限。基本上 app 擁有和網頁同等的權限,如果 app 需要更多額外權限,那麼 app 便需要在 manifest 檔裡明白列出需要的額外權限。</p>
-<h3 id="Manifest_宣告">Manifest 宣告</h3>
-<p>在 manifest 裡,每一個需要的額外權限必須加入供人閱讀的描述說明為何需要此額外權限,例如 app 想要 <a href="/en-US/docs/Web/API/window.navigator.geolocation" title="/en-US/docs/Web/API/window.navigator.geolocation">navigator.geolocation</a> API 使用權限,manifest 裡就必須如此宣告:</p>
-<pre class="brush: html">"permissions": {
- "geolocation":{
-<code class="language-js"><span class="token string"> "description"</span><span class="token punctuation">:</span> <span class="token string">"Required for autocompletion in the share screen"</span><span class="token punctuation">,</span></code>
- }
-},
-</pre>
-<p>這樣 app 便可以如同網頁一般提示使用者來請求地理位置存取權限。更多細節請見 <a href="/en-US/docs/Apps/Manifest" title="Apps/Manifest">App manifest</a>。</p>
-<div class="note">
- <p><strong>Note</strong>: 目前權限使用目的並不會呈現給使用者看 — 見 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=823385" title="https://bugzilla.mozilla.org/show_bug.cgi?id=823385">bug 823385</a>.</p>
-</div>
-<h3 id="權限授予">權限授予</h3>
-<p>當權限需求在 manifest 中宣告後,依據權限不同,可能會直接被同意,但也可能需要在第一次相關 API 被存取時提示使用者徵詢其同意。一般來說會影響到使用者隱私的權限會需要額外徵詢使用者同意,而且這種情況下使用者也有理由知道甚麼權限被請求使用,例如存取通訊錄前會需要徵詢,但存取 TCP 連線則不需要。權限直接同意會經過 Marketplace 安全審核程序以確保安全性。</p>
-<h3 id="權限駁回">權限駁回</h3>
-<p>使用者可以在任何時候從設定駁回先前授予的權限,但這不包括那些直接同意的權限。</p>
-<h2 id="Web_App_Sandbox">Web App Sandbox</h2>
-<h3 id="App_資料獨立"><span class="mw-headline" id="Data_stored_per_app">App 資料獨立 </span></h3>
-<p>每一個 app 都運行在 sandbox 之中,所以所有資料都和其他 app 隔離開來,這涵蓋了 cookie、localStorage、indexedDB 以及網站權限。</p>
-<p><img alt="A diagram showing three Firefox OS apps all open is separate sandboxes, so none of them can affect each other." src="https://mdn.mozillademos.org/files/7091/sandbox.png" style="width: 1040px; height: 437px; display: block; margin: 0px auto;"></p>
-<p>所以說即使 App A 和 App B 都開啟了指向同一來源 (如<a class="external free" href="http://www.mozilla.org" rel="nofollow"> http://www.mozilla.org</a>) 的 {{ htmlelement("iframe") }},但他們兩者的 cookie 資料還是會不同。結果就是當用  App A 登入 Facebook 帳號,開啟了 App B 前往 Facebook 時,因為 App B 無法存取 App A 的 cookie,所以 App B 還是必須要再執行登入作業,如此一來變確保了 App 之間不互相影響、資料安全。</p>
-<h3 id="Apps_無法啟動彼此"><span class="mw-headline" id="Apps_can.27t_open_each_other">Apps 無法啟動彼此 </span></h3>
-<p>App 不能利用 &lt;iframe&gt; 開啟另一個 App,如果 App A 開啟了一個指向 App B URL 的 iframe,這並不會啟動 App B,相反地這只會前往那個 URL 指向的網頁,任何 App B 的 cookie 都無法被存取,這就和 App B 沒有被安裝的情況一樣。</p>
-<p>就算是 App A 嘗試開啟透過 packaged 式 App B 的 app:// URL,來將 App B 載入到 &lt;iframe&gt; 裡啟動,也會失敗,而且不論 App B 有沒有被安裝,失敗訊息都會一樣,所以說 App A 也無法推敲 App B 的安裝狀態。</p>
-<p>當 App A 上層的 frame 前往 App B 所在的 URL,結果依然相同。我們永遠知道是哪個 frame 開啟哪個 app,所以說透過上層 frame 開啟其他 app 就和前述一樣會失敗,App 之間資料絕對獨立、無法被盜取。</p>
-<h3 id="動機"><span class="mw-headline" id="Motivation">動機</span></h3>
-<p>資料獨立的做法有好有壞,壞處是使用者必須每開一個 app 都要登錄一次同一個網站,或者是網站有存放一些資料於本地端,每個 app 都會儲存一份資料,同樣的資料可能被重複儲存,如果資料剛好又不小的話,將會相當佔儲存空間。</p>
-<p>好處是這是比較安全的做法,app 之間不能透過第三方網站互相影響進而導致未預期的行為,或是一個 App A 移除後,另一個 App B 不會因為依賴 App B 的資料或功能而無法運作。更重要的是,資料獨立確保了惡意 app 難以利用漏洞竊取其他網站的資料。</p>
-<p>最後資料獨立也確保了 app 無法得知使用者是否有裝甚麼其他 app、其他 app 的資料,保護了使用者隱私。</p>
-<h3 id="權限_Sandbox"><span class="mw-headline" id="Sandboxed_Permissions">權限 Sandbox</span></h3>
-<p>如同資料在 snadbox 下是獨立隔離開來的,權限亦然。App A 打開了 <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> 網頁,而使用者也准許永遠允許 <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> 使用地理位置服務,但這也只限於 App A,改天換 App B 打開 <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> 網頁,地理位置服務使用權限還是得再徵詢使用者同意。</p>
-<p>如同一般網頁,每個來源的權限同樣獨立,App A 取得地理位置服務使用權限,但這不代表所有 App A 開啟的網頁都有權使用地理位置服務,如果說 App A 開啟 <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a>,<a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> 照樣需要取得使用者同意才能使用地理位置服務。</p>
-<h3 id="瀏覽器_API_Sandbox">瀏覽器 API Sandbox</h3>
-<p>對於會開啟大量 URL 的應用程式,如瀏覽器,我們引進了一個 <em>browserContent</em> 旗標來強化安全性,這個 browserContent 讓 app 可以有兩個 sandbox,一個供 app 本身使用,另一個給開啟的網頁使用,例如說:</p>
-<p>有一個 MyBrowser app 自 <a class="external free" href="https://mybrowser.com" rel="nofollow">https://mybrowser.com</a> 載入,所以程式碼和資源都隸屬於這個網域。</p>
-<p>當這個 app 建立一個 <code>&lt;iframe mozbrowser&gt;</code>,另一個 sandbox 便會產生,所以說 <code>&lt;iframe mozbrowser&gt;</code> 裡的 cookie、IndexedDB、localStorage 資料都會獨立隔離開來,兩者間不會互相影響。</p>
-<p>從另一方面來看,如果 MyBrowser app 想要整合 Google Map 的地理位置功能,那麼從一般 &lt;iframe&gt; 裡載入 <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a>,便可以存取 Google Map 網站的 cookie 資料;但若是從 <code>&lt;iframe mozbrowser&gt;</code> 裡載入的話,便無法取得 Google Map 的 cookie 資料了。</p>
-<p>假設另一個情況,有一個類似 Yelp、會造訪餐廳網站的 app,這個 app 只要利用 <code>&lt;iframe mozbrowser&gt;</code> 來打開餐廳網站,就可以確保餐廳網站不能含有指回這個 app 的 &lt;iframe&gt; (例如指回 <a class="external free" href="http://yelp.com" rel="nofollow">http://yelp.com</a>),如果有的話,該餐廳網站將只能收到 Yelp 網站的資料,而非此 Yelp app,所以該餐廳網站便無法和 Yelp app 共享資料和權限,進而攻擊 Yelp app。</p>
-<h2 id="App_安全性總結">App 安全性總結</h2>
-<p>下表總結各類 Firefox OS App 的格式、安裝、更新特性:</p>
-<table>
- <caption>
- Web App 類型</caption>
- <thead>
- <tr>
- <th scope="col">類型</th>
- <th scope="col">發布</th>
- <th scope="col">權限</th>
- <th scope="col">安裝</th>
- <th scope="col">更新</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>Web</td>
- <td>Hosted 或 Packaged</td>
- <td>較不敏感的權限,既使未驗證的網站取得也沒關係。</td>
- <td>可以從各種來源安裝</td>
- <td>依據安裝來源和發布機制可以背景更新或透過 marketplace 更新。</td>
- </tr>
- <tr>
- <td>Privileged</td>
- <td>Packaged 和 Signed</td>
- <td>需要驗證和審核才可以取得特殊權限 API。</td>
- <td>從可信任的 marketplace 安裝</td>
- <td>從可信任的 marketplace 更新,需要使用者同意更新。</td>
- </tr>
- <tr>
- <td>Internal</td>
- <td>Packaged</td>
- <td>第三方 app 無法存取高度敏感 API</td>
- <td>裝置預裝</td>
- <td>跟隨系統層級類別更新。</td>
- </tr>
- </tbody>
-</table>
-<div class="note">
- <p><strong>Note</strong>: 版本 1.0 的 Firefox OS,privileged app 只能從 Mozilla Marketplace 安裝,至於其他多種安全 marketplace 的支援尚未底定。</p>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/security/index.html b/files/zh-tw/archive/b2g_os/security/index.html
deleted file mode 100644
index 468bab0472..0000000000
--- a/files/zh-tw/archive/b2g_os/security/index.html
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: Firefox OS security
-slug: Archive/B2G_OS/Security
-tags:
- - B2G
- - Firefox OS
- - Mobile
- - NeedsTranslation
- - Security
- - TopicStub
-translation_of: Archive/B2G_OS/Security
----
-<p>The following articles cover security-related topics about Firefox OS. This includes overall security features as well as application security and how the install process is kept secure.</p>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">Firefox OS security documentation</h2>
- <dl>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Security_model" title="/en-US/docs/Mozilla/Firefox_OS/Security/Security_model">The Firefox OS security model</a></dt>
- <dd>
- An overview of the Firefox OS security model.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Security/System_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Security_model">System security</a></dt>
- <dd>
- Details of security controls built-in to the FirefoxOS runtime.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">Application security in Firefox OS</a></dt>
- <dd>
- An overview of how applications are made secure on Firefox OS.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Installing_and_updating_applications" title="/en-US/docs/Mozilla/Firefox_OS/Security/Installing_and_updating_applications">Securely installing and updating applications</a></dt>
- <dd>
- How Firefox OS securely installs and updates applications.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Software_permissions" title="/en-US/docs/Mozilla/Firefox_OS/Security/Software_permissions">Software permissions in Firefox OS</a></dt>
- <dd>
- A guide to what types of software have permission to perform various tasks on Firefox OS.</dd>
- <dt>
- <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Debugging_and_security_testing#Marionette.3A_A_JavaScript_debugging_shell_for_Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS/Security/Debugging_and_security_testing#Marionette.3A_A_JavaScript_debugging_shell_for_Firefox_OS"><span style="display: none;"> </span>Debugging and security testing with Firefox OS</a></dt>
- <dd>
- This guide shows you the basic security testing steps, from opening a remote JavaScript debugger to setting up an intercepting HTTP(S) proxy against a desktop version of Firefox OS</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">View All...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">Getting help from the community</h2>
- <p>If you're working with Firefox OS, or developing applications you'd like to run on Firefox OS devices, there are community resources to help you!</p>
- <ul>
- <li>Consult the Boot to Gecko project forum: {{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}</li>
- </ul>
- <ul>
- <li>Ask your question on Mozilla's Boot to Gecko IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a></li>
- </ul>
- <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Don't forget about the <em>netiquette</em>...</a></span></p>
- <br>
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related topics</h2>
- <ul>
- <li><a href="/en-US/docs/Mobile" title="en-US/docs/Mobile">Mobile</a></li>
- <li><a href="/en-US/docs/Security" title="/en-US/docs/Security">Security</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
-<div id="cke_pastebin" style="position: absolute; top: 483px; width: 1px; height: 1px; overflow: hidden; left: -1000px;">
- <br>
- Firefox OS</div>
diff --git a/files/zh-tw/archive/b2g_os/security/security_model/index.html b/files/zh-tw/archive/b2g_os/security/security_model/index.html
deleted file mode 100644
index d71380833f..0000000000
--- a/files/zh-tw/archive/b2g_os/security/security_model/index.html
+++ /dev/null
@@ -1,299 +0,0 @@
----
-title: Firefox OS 安全性概述
-slug: Archive/B2G_OS/Security/Security_model
-translation_of: Archive/B2G_OS/Security/Security_model
----
-<p>此篇文章將概述 Firefox OS 的安全架構,可阻絕 App、平台、資料所挾帶的惡意威脅,進而保護行動裝置。Mozilla 建構了完整且多層次的安全模式,為行動電話提供絕佳的防護效果。</p>
-<p> </p>
-<h1 id="平台安全性">平台安全性</h1>
-<p>Firefox OS 平台具備多層次安全模式,可將各層次的開發風險降至最低。第一線的保護機制更整合了深度防禦 (Defense-in-depth) 策略,進而達到完整的防護機制。</p>
-<p> </p>
-<h2 id="安全架構">安全架構</h2>
-<p>Firefox OS 將銜接網路架構的應用與其底層硬體,而其整合式技術囊括了下列層級:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5023/platform.png" style="width: 678px; height: 478px;"></p>
-<p>行動裝置 (Mobile device) 即是執行 Firefox OS 的智慧型手機。Gonk 則包含 Linux kernel、韌體、系統函式庫、裝置驅動程式。Gecko 屬於應用程式的執行時間層,為 App提供執行框架,另建構 Web API 以存取行動裝置的功能。Gaia 則是網頁 App (包含 HTML5、CSS、JavaScript、圖片、媒體等) 套件,可隨時改善使用者經驗。</p>
-<p>Gecko 扮演守門人的角色,可強制執行安全策略,避免行動裝置遭到誤用;並可作為網頁 App (位於 Gaia) 之間的中介層 (Intermediary)。Gonk 則可將行動電話底層的硬體功能,直接提供予 Gecko 使用。只有在 Gecko 放行存取請求時,網頁 App 才能透過 Web API 而存取行動電話的功能;而不會有直接存取或「走後門」的情況發生。Gecko 將強制執行許可,並阻擋未經授權的請求。</p>
-<p> </p>
-<h2 id="佈署安全系統">佈署安全系統</h2>
-<p>手機上的 Firefox OS 系統映像檔 (System image) 是由受信任的來源 (一般為該裝置的 OEM 廠商) 所提供,這些受信任的系統映像檔提供者負責發布檔案的組建、建置、測試以及數位簽章作業。</p>
-<p>整個技術層均需經過安全驗證。由Linux 的存取控制清單 (ACL) 執行檔案系統的權限控制。系統 App 則安裝於唯讀 (僅於更新期間才暫時轉為可讀寫) 媒體之中;若是使用者相關內容的區域,則可能為讀寫性質。裝置硬體中的不同元件,均已內建了業界標準的防護機制。舉例來說,晶片製造商會加入安全防護技巧來提高安全性,我們同樣強化了核心平台 (Gecko 與 Gonk),以阻絕潛在的可能威脅,亦提升了相關編譯器的功能。可參閱<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security/Runtime_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Runtime_security">執行期間的安全性</a>進一步了解細節。</p>
-<p> </p>
-<h2 id="更新安全系統">更新安全系統</h2>
-<p>Firefox OS 平台的後續升級與修正,將透過安全的 Mozilla 程序完成佈署,並確保行動電話上的系統映像保有其完整性。同樣由已知且受信任的來源 (一般為該裝置的 OEM 廠商) 提供更新作業,並負責更新封裝的組裝、建構、測試、數位簽章等作業。</p>
-<p>系統更新可能牽涉 Firefox OS 部分或所有的層級。若更新作業必須變更 Gonk,則安裝作業將使用 FOTA (Firmware Over the Air)。FOTA 更新作業亦可能包含 Firefox OS 的其他層級,如 Gaia、Gecko、安全更新、裝置管理 (FOTA/韌體/驅動程式)、設定管理 (Firefox OS 的設定),還有更多修正檔。</p>
-<p>若更新作業並未牽涉 Gonk,則僅需 Mozilla 系統更新公用程式 (System Update Utility) 即可完成。Firefox OS 所使用之更新架構、程序、Mozilla ARchive (MAR) 格式 (用於更新封裝),與 Firefox 桌面版產品完全相同。可參閱 <a href="https://wiki.mozilla.org/Software_Update">https://wiki.mozilla.org/Software_Update</a> 以進一步了解。</p>
-<p>而行動電話所內建的更新服務 (亦可能由 OEM 廠商提供),將定期檢查是否有系統更新。一旦發佈系統封裝,更新服務隨即將偵測到該封裝,並提醒使用者完成安裝作業。在行動裝置安裝更新檔案之前,另將檢查裝置的儲存容量是否足夠,且將驗證下列分配空間:</p>
-<ul>
- <li>更新檔案來源 (驗證系統更新與 manifest 檔案的來源位置 protocol:domain:port)</li>
- <li>檔案完整性 (SHA-256 雜湊檢查)</li>
- <li>程式碼簽章 ─ 針對憑證簽發源頭 (Trusted Root) 進行憑證檢查</li>
-</ul>
-<p>更新期間應注意下列要點:</p>
-<ul>
- <li>Mozilla 建議透過 SSL 連線進行更新。</li>
- <li>安裝韌體封裝之前,需要高強度的加密驗證作業。</li>
- <li>開始更新程序之前,必須將完整更新檔案下載至特定且安全位置。</li>
- <li>開始更新程序時,系統必須處於安全狀態且不執行任何 Web App。</li>
- <li>必須將金鑰儲存於裝置中的安全位置。</li>
-</ul>
-<p>請確實完成相關檢查,讓行動電話確實完成更新作業。</p>
-<p> </p>
-<h1 id="App_的安全性">App 的安全性</h1>
-<p>Firefox OS 使用深度防禦 (Defense-in-depth) 策略,可保護行動電話免受惡意應用程式的攻擊。此策略必須佈署多種機制,如根據 App 信任模式 (Trust model) 所建構的隱式許可 (Implicit permission) 層級;執行期間的沙箱執行作業 (Sandboxed execution);僅限 API 存取行動電話的底層硬體;健全的許可模型 (Permission model);安全的安裝與更新程序。若要進一步了解相關技術,可參閱<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">應用程式安全性</a>。</p>
-<p>在 Firefox OS 中的所有應用程式,均為 Web App ─ 即以 HTML5、JavaScript、CSS、媒體、其他開放式 Web 技術 (可於瀏覽器中執行的網頁,並不屬於本文所提的 Web App) 所撰寫的程式。由於這些 Web App 並非二進制 ─ 即所謂的「原生 (Native)」─ 應用,因此將由 Web API居中嚴格協調所有的系統存取作業。甚至檔案系統存取都只能透過 Web API 與後端的 SQLite 資料庫, App 不能直接存取 SD 記憶卡上的檔案。</p>
-<p>Firefox OS 可限制 App 所能存取/使用的資源規模,同時又可針對多樣的 App 而支援不同的許可層級。Mozilla 嚴格控制各類 App 所能存取的 API。舉例來說,僅有 Certified App (隨手機出貨) 可存取 Telephony API。另外,Dialer App 必須存取 Telephony API 才能撥打電話,而非所有 Certified App 均可存取此 API。如此可避免安裝了任何第三方 App 之後,撥打出國際/長途電話而讓帳單金額暴增。但針對其他 OEM App,仍可選擇是否給予 Telephony API 存取權。舉例來說,電信服務商可提供系統管理應用程式,讓客戶能管理自己的帳戶,甚至能直接以電話送出電信服務帳單或支援辦公室作業。</p>
-<p> </p>
-<h2 id="受信任_(Trusted)_與未信任_(Untrusted)_的_App">受信任 (Trusted) 與未信任 (Untrusted) 的 App</h2>
-<p>Firefox OS 將 App 分為下列類型:</p>
-<table>
- <thead>
- <tr>
- <th style="width: 82px;">
- <p>類型</p>
- </th>
- <th style="width: 102px;">
- <p>受信任層級</p>
- </th>
- <th style="width: 447px;">
- <p>說明</p>
- </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td style="width: 82px;">
- <p>Certified</p>
- </td>
- <td style="width: 102px;">
- <p>受高度信任</p>
- </td>
- <td style="width: 447px;">
- <p>這類系統 App 經過電信服務商或 OEM (起因於裝置毀損或重要功能所產生的風險) 所核可。但僅限系統 App 與相關服務,並無第三方 App。<br>
- 此信任層級僅用於極少部分的重要 App,例如 SMS、藍牙、相機、電話、系統時鐘、預設的電話播號鍵盤 (為了可確實用於緊急電話)。</p>
- </td>
- </tr>
- <tr>
- <td style="width: 82px;">
- <p>Privileged</p>
- </td>
- <td style="width: 102px;">
- <p>受信任</p>
- </td>
- <td style="width: 447px;">
- <p>由授權的商城審視、核可、數位簽章過的第三方 App。</p>
- </td>
- </tr>
- <tr>
- <td style="width: 82px;">
- <p>Web (與其他 App)</p>
- </td>
- <td style="width: 102px;">
- <p>未受信任</p>
- </td>
- <td style="width: 447px;">
- <p>屬於一般網頁內容。包含安裝式 App (儲存於行動電話中) 與托管式 (Hosted,儲存於遠端,僅有 manifest 檔案儲存於行動裝置中) App。另外也可以從 Marketplace 取得托管式 App 的  manifest 檔案。</p>
- </td>
- </tr>
- </tbody>
-</table>
-<p>App 的受信任層級,某種程度上將決定其所能取用的行動電話功能。</p>
-<ul>
- <li>Certified App 可使用大多數的 Web API 作業。</li>
- <li>針對 Certified App 所能存取的 Web API 作業,Privileged App 可使用這些 Web API 作業的子集。</li>
- <li>針對 Privileged App 所能存取的 Web API 作業,未受信任的 App 則能使用這些 Web API 作業的子集。而相關 Web API 則具備必要的安全機制,以隨時因應未受信任的網頁內容。</li>
-</ul>
-<p>某些作業 (如網路存取) 均先假設為所有 App 的隱式許可。一般來說,越是高敏感性的作業 (如撥打電話號碼或取得通訊錄內容),就僅有更高信任度的 App 才能執行。</p>
-<h3 id="最小權限原則_(Principle_of_Least_Permissions)">最小權限原則 (Principle of Least Permissions)</h3>
-<p>針對 Web App,Firefox OS 安全架構則以《最小權限原則 (<em>principle of least permissions</em>)》為架構:先給予最低權限,僅在必要或合理的情況下,才選擇性的提高權限。依預設值,任一 App 均具備最低權限,以因應未受信任的網頁內容。如果 App 所呼叫的 Web API 需要額外權限,則其 <em>manifest </em>檔案 (本文稍後將敘述) 必須先列舉這些額外權限。而僅在 App 的 manifest 檔案明確要求 App 授權時,Gecko 才會給予 Web API 的存取權。此外,只有在 Web App 的類型 (即上述的 Certified 或 Trusted 或 Web 分類) 符合其存取層級,Gecko 才會給予必要的授權。</p>
-<h3 id="Marketplace_對_Privileged_App_的審核程序">Marketplace 對 Privileged App 的審核程序</h3>
-<p>若要達到 Privileged App,則 App 開發/供應商必須將之提交予經過授權的 Marketplace。而 Marketplace 隨即開始嚴格的程式碼審核程序:檢視其完整性與穩定性、審查其索取的授權是否符合其載明的用途、確認其隱式許可是否使用合宜、審核「Privileged App 的內容」與「未授權的外部內容」之間的介面,是否具備合適的緩衝,以避免權限提升 (Elevation of privilege) 的影響。Marketplace 另需負責確保 Web App 不會對其給予的權限進行惡意動作。</p>
-<p>在 App 通過審核之後即許可使用,且 Marketplace 亦將以數位方式簽署其 manifest 檔案,以供行動裝置的使用者下載之。一旦 Marketplace 遭駭,數位簽章可確保駭客無法將任意內容或惡意程式碼,安裝於使用者的行動電話上。也基於此審查程序,Firefox OS 從 Marketplace 取得的 Privileged App,其可信任度亦高於一般的 (未受信任的) 網頁內容。</p>
-<p> </p>
-<h2 id="封裝式_(Packaged)_與托管式_(Hosted)_App">封裝式 (Packaged) 與托管式 (Hosted) App</h2>
-<p>Firefox OS 可用封裝式 (儲存於行動電話中) 或托管式 (儲存於遠端伺服器中,僅有 manifest 檔案儲存於行動電話中) App。而此 2 種 App 的安全管理方式亦有所不同。封裝式與托管式 App 同可作為應用程式的封閉沙箱,本文稍後將說明。</p>
-<h3 id="封裝式_(Packaged)_App">封裝式 (Packaged) App</h3>
-<p>封裝式 App 是以 ZIP 壓縮檔所構成,內含應用程式的相關資源 (HTML5、CSS、JavaScript、影像、媒體),另以 manifest 檔案提供上述資源的清單,與其對應的 雜湊值 (Hash)。由於 Certified 與 Privileged App 的 manifest 檔案均需完成數位簽章,因此Certified/Privileged App 必為封裝式 App。只要使用者取得封裝式 App,就會將 ZIP 檔案下載至行動電話中,另從 ZIP 檔案內的已知位置讀取 manifest 檔案。系統將在安裝過程中驗證 App 的資源,其他則儲存於本端的封裝內。執行期間將請求所有的顯式許可 (Explicit permission)、顯示使用者 App 的資料儲存目標,最後依預設值完成保存。</p>
-<p>若要清楚指明封裝式 App 中的資源,則 URL 應以 App 開頭並使用下列格式:</p>
-<div class="note">
- <p><code>app://<em>identifier</em>/<em>path_within_zipfile</em>/file.html</code></p>
-</div>
-<p>這裡的「app://」代表 ZIP 檔案的掛載點 (Mount point)。於行動電話上安裝 App 時,隨即產生「<em>identifier</em>」作為 UUID。如此可確保以 :app 的 URL 指向了特定資源,且已納入於 ZIP 檔案中。而 app: 中的路徑為相對路徑,因此可於 ZIP 檔案中允許資源的相對鏈結。</p>
-<p>封裝式 App 主要用於 Certified 與 Privileged App,不過一般的 Web App 亦可作為封裝式。但這些 Web App 不會因為封裝格式,就自動提高其信任度或存取權限。</p>
-<h3 id="托管式_(Hosted)_App">托管式 (Hosted) App</h3>
-<p>托管式 App 均儲存於網頁伺服器上,或需透過 HTTP 載入。僅有其 manifest 檔案儲存於行動電話中;其他所有檔案均儲存於遠端。僅 Privileged 與 Certified App 才能使用特定 API,以因應數位簽章作業而必須將 App 封裝。因此,即使 Web API 作業需要 Privileged/Certified App 的狀態,托管式 App 亦不需存取任何 Web API 作業。</p>
-<p>從安全性的觀點來說,托管式 App 的作業方式比較像一般網頁。在該網頁伺服器上,必須以寫死 (Hard-coded) 的完整 URL 指向 App 根目錄中的起始頁面,才能載入托管式 App。一旦載入托管式 App 之後,行動電話將根據網頁瀏覽時的 URL,跟著連至相同頁面。</p>
-<p> </p>
-<h2 id="App_的_Manifest_檔案">App 的 Manifest 檔案</h2>
-<p>Open Web App 的 manifest 檔案,將提供瀏覽器與 App 互動時的必要資訊。而 manifest 即為 JSON 檔案,至少均具備 App 的名稱與描述。可參閱 <a href="https://developer.mozilla.org/en-US/docs/Apps/FAQs/About_app_manifests" title="/en-US/docs/Apps/FAQs/About_app_manifests">App 的 manifest 檔案常見問題</a>以進一步了解。</p>
-<h3 id="Manifest_範例">Manifest 範例</h3>
-<p>下列程式碼則具備基礎設定的 manifest 範例:</p>
-<table>
- <tbody>
- <tr>
- <td>
- <p>1</p>
- <p>2</p>
- <p>3</p>
- <p>4</p>
- <p>5</p>
- <p>6</p>
- <p>7</p>
- <p>8</p>
- <p>9</p>
- <p>10</p>
- <p>11</p>
- <p>12</p>
- <p>13</p>
- </td>
- <td>
- <p><code>{</code></p>
- <p><code>  "name": "My App",</code></p>
- <p><code>  "description": "My elevator pitch goes here",</code></p>
- <p><code>  "launch_path": "/",</code></p>
- <p><code>  "icons": {</code></p>
- <p><code>    "128": "/img/icon-128.png"</code></p>
- <p><code>  },</code></p>
- <p><code>  "developer": {</code></p>
- <p><code>    "name": "Your name or organization",</code></p>
- <p><code>    "url": "http://your-homepage-here.org"</code></p>
- <p><code>  },</code></p>
- <p><code>  "default_locale": "en"</code></p>
- <p><code>}</code></p>
- </td>
- </tr>
- </tbody>
-</table>
-<h3 id="Manifest_檔案的安全性設定">Manifest 檔案的安全性設定</h3>
-<p>manifest 檔案亦可具備其他設定,如下列的安全性設定:</p>
-<table>
- <thead>
- <tr>
- <th style="width: 152px;">
- <p>欄位</p>
- </th>
- <th style="width: 479px;">
- <p>說明</p>
- </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td style="width: 152px;">
- <p>permissions</p>
- </td>
- <td style="width: 479px;">
- <p>App 的必要許可。任何 App 需列出所要使用的 Web API,以取得使用者的許可。Privileged/Certified App 可識別大多數的許可,但托管式 App 不適用。API 必具備的屬性:</p>
- <ul>
- <li><strong>description</strong> ─ 在請求使用此 API 時,此字串將指定其背後的目的地。必填。</li>
- <li><strong>access</strong> ─ 此字串將指定許可所需的存取類型。安裝時即給予隱式許可 (Implicit permission)。僅數種 API  為必填欄位。僅接受:<strong>read</strong>、<strong>readwrite</strong><strong>、</strong><strong>readcreate</strong><strong>、</strong><strong>createonly</strong> 等數值。</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td style="width: 152px;">
- <p>installs_allowed_from</p>
- </td>
- <td style="width: 479px;">
- <p>App 的來源。而構成來源的陣列 (scheme+unique hostname) 則可觸發此 App 的安裝作業。另可讓 App 廠商限制僅授權過的 Marketplace (如 <a href="https://marketplace.firefox.com/">https://marketplace.firefox.com/</a>) 才可安裝 App。</p>
- </td>
- </tr>
- <tr>
- <td style="width: 152px;">
- <p>csp</p>
- </td>
- <td style="width: 479px;">
- <p>內容安全政策 (Content Security Policy),將套用至 App 所載入的所有頁面。可強化 App 而避免遭惡意插入任何程式碼。若未指定 CSP,則 Privileged 與 Certified App 均已預設了系統定義值,其語法為:<br>
- <a href="https://developer.mozilla.org/en-US/docs/Apps/Manifest#csp">https://developer.mozilla.org/en-US/docs/Apps/Manifest#csp</a></p>
- <p>另請注意,此指令僅能增加所套用的 CSP。舉例來說,此指令並無法減少 Privileged App 所套用的 CSP。</p>
- </td>
- </tr>
- <tr>
- <td style="width: 152px;">
- <p>type</p>
- </td>
- <td style="width: 479px;">
- <p>App 的類型,即 Web、Privileged、Certified 等類型。</p>
- </td>
- </tr>
- </tbody>
-</table>
-<p>Firefox OS 要求 manifest 檔案必須為特定的 mime-type 格式 ("application/x-web-app-manifest+json"),而且必須與該 App 為相同來源的完整主機名稱 (即來源)。若「App 的 manifest 檔案」與「要求安裝 App 的頁面」兩者的來源相同,則將放寬此限制。此機制可確保不能偽裝網站並托管 App 的 manifest 檔案。</p>
-<p> </p>
-<h2 id="隔離式_(Sandboxed)_執行作業">隔離式 (Sandboxed) 執行作業</h2>
-<p>本章節將說明 App 與執行作業的沙箱隔離區 (Sandbox)。</p>
-<h3 id="App_隔離區">App 隔離區</h3>
-<p>Firefox OS 的安全架構,即是將隔離區作為深度防禦 (Defense-in-depth,DID) 策略,以減少風險並保護資料、平台、行動電話。在執行期間,隔離區可為 App 產生邊界與限制。各個 App 僅於自己的工作空間 (Working space) 內執行,另僅經過授權可存取的 Web API 與資料,才能存取;工作空間相關的資訊 (IndexedDB 資料庫、Cookies、離線儲存等) 亦然。請參閱 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security/Security_model">https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security/Security_model</a> 以進一步了解。</p>
-<p>下圖則簡略說明了安全模型:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5025/sandbox.png"></p>
-<p>在隔離各個 App 之後,所產生的影響亦僅限於其工作空間之內,而不會受到工作空間之外的干擾 (如其他 App 或資料)。</p>
-<h3 id="執行作業隔離區">執行作業隔離區</h3>
-<p>B2G (Gecko) 在一個高授權度的系統程序 (可存取行動電話中的硬體功能) 中執行。在執行期間,各個執行環境裡的 App 皆是 B2G 系統程序的子程序。而各個子程序又具備嚴格的 OS 授權。舉例來說,子程序並無法直接讀寫檔案系統中的任意檔案。必須由 Web API 提供相關存取權限;且該權限又由 B2G 母程序所居中協調。在子程序要求授權過的 API 時,母程序將確認子程序具備必要的許可,以執行相關動作。</p>
-<p>App 僅能透過 B2G 核心程序 (非其他程序或 App) 而相互溝通。App 無法於 B2G 之外獨立執行;各 App 亦無法互相開放。App 之間僅能間接「溝通」─ 例如接收器 (Listener) 程序偵測到其他程序所產生的事件,且必須由 B2G 程序居中協調。</p>
-<h3 id="僅透過_Web_API_才能存取硬體">僅透過 Web API 才能存取硬體</h3>
-<p>Web App 若要存取行動電話的功能,唯一管道只有以 Gecko 所建構的 Firefox OS Web API 。Gecko 是行動裝置與底層服務的單一出口,因此必須讓 Web API 進行呼叫作業,才能存取裝置的硬體功能。絕對沒有「原生 (Native)」的 API 或其他途徑可繞過此機制,而直接存取硬體或滲透至初階的軟體層。</p>
-<p> </p>
-<h1 id="安全架構_2">安全架構</h1>
-<p>下圖則為安全架構的元件:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5027/securityframework.png" style="width: 979px; height: 591px;"></p>
-<ul>
- <li><strong>Permission Manager</strong>:可於 Web API 中存取功能的管道,是底層硬體唯一存取路徑。</li>
- <li><strong>Access Control List</strong>:由角色 (Role) 與許可 (Permission) 所構成,存取 Web API 功能所必備。</li>
- <li><strong>Credential Validation</strong>:App 與使用者的授權。</li>
- <li><strong>Permissions Store</strong>:存取 Web API 功能所需的授權集合。</li>
-</ul>
-<p> </p>
-<h2 id="許可的管理與強化">許可的管理與強化</h2>
-<p>針對 Web App 所需的許可 (Permission),Firefox OS 安全機制將進一步驗證並強化。<br>
- 僅當內容 (Content) 請求特殊許可,或當內容具備 manifest 所要求的適當許可時,系統才會發出特定許可至 App。若需要使用者進一步的授權,則某些許可亦將提出請求 (例如 App 要存取使用者目前的位置)。與傳統「角色為中心 (Role-centric)」的方式 (各個獨立角色將獲得一系列的許可)相較,這種「應用為中心 (app-centric)」的架構更能嚴密控管許可。</p>
-<p>現有的 Web API 集合了一系列動作 (Action) 與接收器 (Listener)。各個 Web API 則具備必須的許可層級。每次只要呼叫 Web API,則 Gecko 檢查許可 (角色查找) 的基準為:</p>
-<ul>
- <li>呼叫中 App 的相關許可 (已於 manifest 檔案中指定,並以 App 類型為準)</li>
- <li>執行必要作業 (Web API 呼叫) 所需的許可</li>
-</ul>
-<p>若該請求並不符合許可的準則,則 Gecko 隨即拒絕該請求。舉例來說,只要是受信任 App 所保留的 Web API,未受信任的 App 均無法執行。</p>
-<p> </p>
-<h2 id="要求使用者給予許可">要求使用者給予許可</h2>
-<p>除了與 Web App 隱性關連 (Implicitly associated) 的許可之外,在執行特定作業之前需要使用者給予顯式許可。針對這些作業,Web App 必須在 manifest 檔案中表示索取許可的理由 (Justification)。這種「資料使用意圖 (Data usage intention)」,可讓使用者在給予許可之後,知道 Web App 處理資料的方式,亦將了解可能的風險,進而能做出決定並控管自己的資料。</p>
-<p> </p>
-<h2 id="安全的_App_更新程序">安全的 App 更新程序</h2>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5029/updateprocess.png" style="width: 979px; height: 102px;"></p>
-<p>針對 Privileged app 的升級與修正,開發/供應商必須將更新封裝提交至授權過的 Marketplace,以供 Marketplace 進一步審查。而在核准之後,隨即完成數位簽章並提供予使用者。在搭載 Firefox OS 的裝置上,亦可透過 App 更新公用程式 (暫譯 App Update Utility) 定期檢查 App 是否有可用的更新。若發現可用的更新,系統隨即會詢問使用者是否安裝。在行動裝置安裝更新檔案之前,必將驗證封裝的:</p>
-<ul>
- <li>更新檔來源 (驗證更新與 manifest 檔案的來源位置 protocol:domain:port)</li>
- <li>檔案完整性 (SHA-256 雜湊檢查)</li>
- <li>程式碼簽章 ─ 針對憑證簽發源頭 (Trusted root) 而檢查認證</li>
-</ul>
-<p>透過適當且嚴格的檢查,可確保行動電話已正確套用了更新。<br>
- 在開始更新程序之前,必須先下載完整的更新封裝至特定且安全的位置。安裝作業並不會覆寫任何使用者資料。</p>
-<p> </p>
-<h1 id="裝置安全性_(硬體)">裝置安全性 (硬體)</h1>
-<p>行動裝置硬體的安全機制,一般均由 OEM 廠商所決定。舉例來說,OEM 廠商可能提供 SIM (Subscriber Identity Module) 卡的鎖定機制,另搭配 PUK (PIN Unlock Key) 密碼,以用於輸入錯誤 PIN 而遭鎖定的 SIM 卡。這部份需聯絡 OEM 廠商以了解細節。Firefox OS 則可讓使用者設定密碼與待機畫面,將於稍後說明。</p>
-<p> </p>
-<h1 id="資料安全性">資料安全性</h1>
-<p>使用者可將個人資料儲存於手機中,並可設定其隱私性,包含聯絡資訊、金融資訊 (銀行與信用卡細節)、密碼、行事曆等。Firefox OS 則針對惡意 App (竊取、挖掘、破壞私密資料) 而設計了防護機制。</p>
-<p> </p>
-<h2 id="密碼與待機畫面">密碼與待機畫面</h2>
-<p>Firefox OS 可供使用者設定行動電話的密碼,往後必須輸入正確密碼才能使用該行動電話。Firefox OS 另提供待機畫面的功能。只要設定特定時間內未使用行動電話,隨即顯示待機畫面。此時必須輸入密碼授權才能繼續使用手機。</p>
-<p> </p>
-<h2 id="隔離式_(Sandboxed)_資料">隔離式 (Sandboxed) 資料</h2>
-<p>如之前所述,執行期間的 App 均進入隔離狀態。如此可避免 App 相互存取其內的資料;<strong>除非</strong>該筆資料已設為共享資料,且其他 App 擁有夠高的許可層級可存取之。</p>
-<p> </p>
-<h2 id="序列化_(Serialized)_資料">序列化 (Serialized) 資料</h2>
-<p>Web App 並無法直接讀寫檔案系統。相反的,僅能透過 Web API 而存取儲存媒體。Web API 另將透過 SQLite 資料庫居中協調,才能進一步讀取、寫入儲存媒體。不會直接以 I/O 進行存取作業。各個 App 均擁有自己的資料儲存媒體,將經過資料庫而序列化至磁碟中。</p>
-<p> </p>
-<h2 id="資料銷毀">資料銷毀</h2>
-<p>一旦使用者取消安裝 App,則將刪除該 App 所有的相關資料,如 cookies、localStorage、Indexeddb 等。</p>
-<p> </p>
-<h2 id="隱私性">隱私性</h2>
-<p>根據隱私權原則 (<a href="https://www.mozilla.org/privacy/)%3c">https://www.mozilla.org/privacy/)</a>,Mozilla 致力保護使用者隱私與資料,同時可參閱 Mozilla Manifesto (<a href="https://www.mozilla.org/about/manifesto.html">https://www.mozilla.org/about/manifesto.html</a>)。而 Mozilla 的 Firefox Privacy Policy 則說明 Mozilla 將如何蒐集、利用 Mozilla Firefox 瀏覽器的使用者資訊,包含 Firefox 所傳送至網頁的資料、Mozilla 的資料保護方式、Mozilla 資料實務情況等。若要進一步了解相關細節,可參閱:</p>
-<ul>
- <li><a href="http://www.mozilla.org/en-US/legal/privacy/firefox.html">http://www.mozilla.org/en-US/legal/privacy/firefox.html</a></li>
- <li><a href="https://blog.mozilla.org/privacy/">https://blog.mozilla.org/privacy/</a></li>
- <li><a href="http://support.mozilla.org/en-US/kb/privacy-and-security-settings-firefox-os-phones">http://support.mozilla.org/en-US/kb/privacy-and-security-settings-firefox-os-phones</a></li>
-</ul>
-<p>在擬定 Firefox OS 的原則時,均將使用者資料的控制權交付給使用者本身。而使用者必須自己決定個人資訊的運用方法。Firefox OS 將提供下列功能:</p>
-<ul>
- <li>「不要追蹤我 (Do Not Track)」選項</li>
- <li>可停用 Firefox 瀏覽器的 Cookies</li>
- <li>可刪除 Firefox OS 的瀏覽記錄</li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/security/system_security/index.html b/files/zh-tw/archive/b2g_os/security/system_security/index.html
deleted file mode 100644
index edb0e64697..0000000000
--- a/files/zh-tw/archive/b2g_os/security/system_security/index.html
+++ /dev/null
@@ -1,376 +0,0 @@
----
-title: 系統安全
-slug: Archive/B2G_OS/Security/System_security
-translation_of: Archive/B2G_OS/Security/System_security
----
-<div class="summary">
- <p><span class="seoSummary">本文旨在提供 Firefox OS 系統安全模型概觀,說明系統是如何保持安全性與實施權限管理。</span></p>
-</div>
-<h2 id="名詞解釋">名詞解釋</h2>
-<p>在開始之前,有幾個名詞需要了解一下。</p>
-<dl>
- <dt>
- 網頁應用程式 (Web application)</dt>
- <dd>
- 網頁應用程式 (<strong>web application, web app, open web app</strong>, <strong>moz app</strong>, <strong>application</strong>) 是運行在 Firefox OS (或其他支援平台)、用 <a href="/en-US/docs/HTML" title="/en-US/docs/HTML">HTML</a>, <a href="/en-US/docs/JavaScript" title="/en-US/docs/JavaScript">JavaScript</a>, 以及其他開源網頁技術所寫成的應用程式。所有 B2G 上使用者使用的應用程式都是網頁應用程式,例如撥號程式是一個 web app,但顯示在瀏覽中的網頁並不屬於網頁應用程式的範疇。</dd>
- <dt>
- b2g 程序 (b2g process)</dt>
- <dd>
- Firefox OS <strong>b2g process</strong> 通常會被叫做 "<strong>b2g</strong>" 或 "<strong>Gecko</strong>"。b2g 實際上是一個高權限 (root 權限) 應用程式,控制了所有 web app 對資源和硬體的存取。</dd>
- <dt>
- 內容程序 (Content process)</dt>
- <dd>
- b2g 產生的子程序,會和 b2g 溝通,代表了 web app。它擁有的權限較低 (一般使用者權限;受限的作業系統資源存取),透過 inter-process communication (IPC) 和 OS 核心溝通。</dd>
- <dt>
- IPDL</dt>
- <dd>
- Intercommunication Protocol Definition Language, 請參照 <a href="/en-US/docs/IPDL" title="/en-US/docs/">IPDL</a>.</dd>
- <dt>
- AOSP</dt>
- <dd>
- Android Open Source Project.</dd>
- <dt>
- System call</dt>
- <dd>
- 一個介於使用者空間 (user space) 和核心 (kernel) 的溝通介面,使用者空間只能透過這個介面和核心溝通。</dd>
- <dt>
- DAC, MAC</dt>
- <dd>
- 使用者可設定的自主存取控制 (Discretionary Access Control) 和 系統強制的<span class="st">強制存取控制 (</span>Mandatory Access Control)。</dd>
- <dt>
- FOTA</dt>
- <dd>
- 自動韌體更新機制 (Firmware Over The Air),透過無線網路"空中"更新韌體。</dd>
- <dt>
- MSU (Mozilla System Updater), MAR (Mozilla ARchive)</dt>
- <dd>
- 和 Firefox 桌面產品一樣的更新機制和檔案格式。</dd>
-</dl>
-<h2 id="Firefox_作業系統安全模型目標與範疇">Firefox 作業系統安全模型目標與範疇</h2>
-<p>Firefox OS 安全模型的設計目標:</p>
-<ul>
- <li>限制 web app 所能存取的資源範疇。</li>
- <li>確保作業系統各層安全措施正確執行。</li>
- <li>從 Gonk 層起,限制與控管安全漏洞所造成之衝擊影響。</li>
- <li>Web app 權限以及所有應用程式相關安全性特色都在<a href="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">應用程式安全</a>模型詳述。</li>
-</ul>
-<p>下面將說明每一個目標以及 Firefox OS 如何達成個目標。</p>
-<h2 id="權限強制">權限強制</h2>
-<p><a href="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">應用程式安全</a>模型描述了使用者如何直接或透過受信任第三方來授予應用程式權限,這些強制加諸於內容程序 (content process) 的權限是透過限制資源存取必須經過和核心程序 (core process) 之間的 IPC call。</p>
-<ul>
- <li>Firefox OS 核心程序, <code>b2g</code>, 的權限極高,同時能夠存取大部分硬體資源。</li>
- <li>較低權限的 Web app 的內容程序只能透過 IPC 和 b2g 溝通;IPC 是用 <a href="/en-US/docs/IPDL" title="/en-US/docs/IPDL">IPDL</a> 實現。</li>
- <li>內容程序無法存取系統層級的資源。</li>
- <li>每一個 Web API 都有一個以上相關聯的 IPDL 協定宣告檔 (*.ipdl).</li>
-</ul>
-<h2 id="內容程序初始化"><a name="Content_processes">內容程序初始化</a></h2>
-<p>所有的 web app 都運行在低權限、分開的內容程序。當 web app 載入到一個特別的 {{HTMLElement("iframe")}} 型態: <em>&lt;iframe mozapp&gt;</em> 時 b2g 程序會啟動內容程序,這樣會將 web app 和其他內容隔離開來,而且和 web app 的 manifest 高度相關 (請參照 <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">應用程式安全</a>模型),內容程序會在一個稱為 "out of process" (OOP) 的容器裡啟動,這個 OOP 即是 <code>plugin-container</code> 程序,並且和桌面 Firefox 所用的 <code>plugin-container</code> 程序有著相似的原始碼。</p>
-<h3 id="風險">風險</h3>
-<ul>
- <li>當產生 web app 內容程序時的資訊外洩。</li>
- <li>提高到和 b2g 一樣權限層級以及存取作業系統資源的意外可能性。</li>
- <li>跳過內容程序初始化過程。</li>
-</ul>
-<h3 id="實作">實作</h3>
-<h4 id="在_b2g_程序裡啟動">在 b2g 程序裡啟動</h4>
-<p>順序如下:</p>
-<ol>
- <li><code>fork()</code></li>
- <li><code>setuid(new, different, unused user id|nobody)</code> (無特權的使用者)</li>
- <li><code>chrdir('/')</code></li>
- <li><code>execve('plugin-container')</code></li>
-</ol>
-<p>這邊的啟動順序確保 OOP 程序運行在隔離的記憶體空間,同時只是低權限使用者,無法提高到 b2g 的高權限。</p>
-<h4 id="File_descriptor_(檔案描述子)_管理">File descriptor (檔案描述子) 管理</h4>
-<p>File descriptors 的管理方法是白名單;一份受允許的 file descriptors (FDs) 清單儲存在 <code>mFileMap</code> 物件,在呼叫 fork() 後 (FDs 複製前) 和呼叫 execve()前 (新 web app 開始運行),<code>LaunchApp()</code> 函數會強制關閉不在白名單上的 FD。</p>
-<p>不同於傳統的黑名單作法 (close-on-exec flag: <code>CLOEXEC</code>),這種做法確保不會有多餘的開啟 FD,比較可靠。</p>
-<h2 id="Content_process_sandboxing_(沙箱,低權限內容程序)"><a name="Content_process_sandboxing"></a>Content process sandboxing (沙箱,低權限內容程序)</h2>
-<h3 id="風險_2">風險</h3>
-<ul>
- <li>記憶體錯誤或 Gecko 執行時期邏輯錯誤可能導致意外程式碼的執行。</li>
- <li>作業系統,特別是核心,類似錯誤可能導致意外程式碼的執行。</li>
- <li>資訊洩漏、檔案系統讀寫。</li>
-</ul>
-<p>下表為 sandbox 開啟下可能的威脅列表,附帶前述的可能風險。</p>
-<div class="warning">
- <p dir="ltr"><strong>範疇</strong>: 當攻擊者以內容程序執行意外執行碼時,會出現下面的威脅,也就是說,攻擊者發現了 Gecko 的安全漏洞。</p>
-</div>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">威脅</th>
- <th scope="col">潛在衝擊</th>
- <th scope="col">可能性因子</th>
- <th scope="col">建議對應作法</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <p>惡意內容程序利用核心安全漏洞</p>
- <p>"2 steps attack".</p>
- </td>
- <td><strong>嚴重</strong>:整個裝置都將受到控制</td>
- <td><strong>低</strong>: 內容程序只有有限的方法呼叫系統。</td>
- <td>
- <ul>
- <li>減少允許的系統呼叫數量到最低需要量。</li>
- <li>用預防性修正檔保護核心,例如 PaX (Protection Against eXecution).</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>
- <p>提升到父程序權限</p>
- <p>惡意內容程序利用和父程序之間的 IPDL 安全漏洞</p>
- <p>"2 steps attack".</p>
- </td>
- <td><strong>高</strong>: 許多敏感的系統呼叫都可以被執行 (資料損失、相機存取、網路存取等等)</td>
- <td><strong>中</strong>: 父程序大量的程式碼代表大範圍的可能攻擊點。少量的 IPDL 資料消毒,例如傳送指標。</td>
- <td>
- <ul>
- <li>以非 root / 非特權使用者執行父程序</li>
- <li>盡可能以 sandbox 方法執行父程序</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>
- <p>惡意內容程序利用父程序攻擊核心安全漏洞</p>
- <p>"3 steps attack".</p>
- </td>
- <td><strong>嚴重</strong>:整個裝置都將受到控制</td>
- <td>
- <p><strong>低</strong>: 需要父程序有可以透過 IPDL 攻擊的 bug。</p>
- <p>需要核心和父程序之間的系統呼叫可利用的漏洞 (相較內容程序,父程序有更多可行的系統呼叫)</p>
- </td>
- <td>
- <ul>
- <li>以非 root / 非特權使用者執行父程序</li>
- <li>盡可能以 sandbox 方法執行父程序</li>
- <li>用預防性修正檔保護核心,例如 PaX (Protection Against eXecution)</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>
- <p>惡意內容程序、父程序、web app 利用硬體裝置的 bug</p>
- <p>"1 and 2 steps attack".</p>
- </td>
- <td>
- <p><strong>高</strong>: 可以執行特別權限的作業 (如撥號、傳 SMS 簡訊等)</p>
- <p><strong>嚴重</strong>:整個裝置都將受到控制或執行硬體程式碼。</p>
- </td>
- <td><strong>低</strong>: 需要硬體 bug 以及 IPDL 或系統呼叫授予的硬體溝通管道</td>
- <td>
- <ul>
- <li>對硬體裝置實施模糊測試 (Fuzz testing)</li>
- <li>利用核心或父程序 API 修正檔避開問題 (關閉不安全的硬體功能、消毒資料等等)</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-<div class="note">
- <p><strong>Note</strong>:</p>
- <p>* PaX (Protection Against eXecution) 是一個由 <a href="http://grsecurity.net/~paxguy1/" title="http://grsecurity.net/~paxguy1/">GrSecurity</a> (<a href="http://pax.grsecurity.net/docs" title="http://pax.grsecurity.net/docs">docs</a>) 所發佈的核心修正檔,實作了 PaX 以及額外的保護措施,如 UDEREF 和 SMAP。</p>
- <p>* 未列出的安全性漏洞代表已被 snadbox 解決掉了。</p>
-</div>
-<h3 id="實作內容">實作內容</h3>
-<p><img alt="Process Model Sandbox" src="https://mdn.mozillademos.org/files/5347/sq1ftZvuape-uCT8CDfJ10Q.png" style="width: 708px; height: 470px;"></p>
-<div class="note">
- <p><strong>Note</strong>: 內容程序 (Content Processes) 就是運行中的 web app,也會被限制在 sandbox 環境。</p>
-</div>
-<h4 id="Gecko_APIs_實作">Gecko APIs 實作</h4>
-<p>內容程序可見的 APIs 絕不應該直接存取檔案系統,取而代的是應該透過 IPDL,所以說會需要存取資源的 API 都需要在父程序中有一個對應的元件代表 API 存取資源。</p>
-<p>實作相關部分時要特別小心,所有送到父程序的輸入都應該要先消毒,不可以相信內容程序以及來自內容程序的 IPDL 訊息。</p>
-<div class="warning">
- <p><strong>Warning</strong>: 任何內容程序取得的受信任授權都可以被用來繞過 sandbox 所加諸的限制。</p>
-</div>
-<h4 id="何謂_seccomp">何謂 seccomp</h4>
-<p>Seccomp 代表 secure computing mode (安全電腦模式),目前有兩種版本:</p>
-<ol>
- <li>
- <p><code>seccomp</code>, 可見於 Linux kernel 2.6.12 以上版本:</p>
- <ul>
- <li>
- <p>開啟 <code>seccomp</code> 會將程序的系統呼叫 (System call) 限制在 <code>read</code>, <code>write</code>, <code>sigreturn</code>, 和 <code>exit</code></p>
- </li>
- <li>
- <p>使用 <code>prctl()</code> system call</p>
- </li>
- <li>
- <p>可以在指定地方、程序初始化後啟動</p>
- </li>
- </ul>
- </li>
- <li>
- <p><code>seccomp-bpf</code>, 又稱為 seccomp mode filter 或 mode 2, 可見於 Linux kernel 3.5 以上版本:</p>
- <ul>
- <li>
- <p>如同 <code>seccomp</code>,但多了 BPF 過濾系統呼叫</p>
- </li>
- <li>
- <p>可以使用系統呼叫白名單和啟動時傳入參數,而非單單預先寫死的作法</p>
- </li>
- <li>
- <p>更有彈性,可以有"較多自由的 sandbox",對限制性較低的 sandbox 來說很有用,而且也可以移轉到限制性較高的 sandbox</p>
- </li>
- <li>
- <p>多了一個安全性旗幟避免程序和子程序推翻既有權限限制</p>
- </li>
- </ul>
- </li>
-</ol>
-<div class="note">
- <p><strong>Note</strong>: 基於 <code>seccomp-bpf 更有彈性,所以我們決定採用,並且替版本低於3.5 的 kernel (涵蓋了目前大部分的 Android kernel)提供向下相容移植。</code>目前已經有不會造成衝突、可供使用的移植包 (請見 bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=790923" title="https://bugzilla.mozilla.org/show_bug.cgi?id=790923">790923</a>).</p>
-</div>
-<h4 id="Seccomp-bpf_效能">Seccomp-bpf 效能</h4>
-<p><code>seccomp-bpf</code> 會對每一次系統呼叫造成效能負擔,目前沒有一定的效能標竿準則,但我們預估大約最高 1% 的系統呼叫負擔會產生。</p>
-<p>由於我們的程序模型減少許多系統呼叫,所以實際上我們預估效能負擔將會趨近於無。</p>
-<p>不過因實作細節而異, IPDL 呼叫卻可能造成效能負擔以及增加延遲,建議對於資源需求密集的 API,如 OpenGL 呼叫,可以看一下 <a href="http://code.google.com/p/chromium/issues/detail?id=29120" style="text-decoration: none;">Chromium的實作細節</a>。和 <code>seccomp-bpf</code> 一樣,我們能夠最少化 IPDL 呼叫次數來最小化效能負擔。</p>
-<h3 id="實作內容_2">實作內容</h3>
-<p><code>seccomp</code> 在 Gecko 以 <em><code>--enable-content-sandbox </code></em>開啟。<em>.</em></p>
-<p>預設上系統呼叫拒絕資訊不會被回報,我們可以透過 <code>--enable-content-sandbox-reporter 打</code>開回報機制。</p>
-<p>程式碼放在<em> </em><code>gecko/security/sandbox</code>,白名單放在 <code>gecko/security/sandbox/seccomp_filter.h</code>。</p>
-<h2 id="檔案系統安全強化"><a name="File_system_hardening"></a>檔案系統安全強化</h2>
-<h3 id="風險_3">風險</h3>
-<ul>
- <li>讀、寫、刪除另一位使用者的檔案可能會導致資訊洩漏或未預期權限提升</li>
- <li>經由應用程式漏洞執行本地編譯碼</li>
- <li>setuid 程式的安全漏洞導致權限提升</li>
-</ul>
-<h3 id="實作內容_3">實作內容</h3>
-<p>原則上只有使用者內容區域可以讀寫 (除非 OS 未來要求新的讀寫區域),而且一定要包含 <code>nodev</code>、<code>nosuid</code> 和 <code>noexec</code> 選項。標準檔案系統掛載點限制如下:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">掛載點</th>
- <th scope="col">檔案系統</th>
- <th scope="col">選項</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><code>/</code></td>
- <td>rootfs</td>
- <td>read-only</td>
- </tr>
- <tr>
- <td><code>/dev</code></td>
- <td>tmpfs</td>
- <td>read-write, nosuid, noexec, mode=0755</td>
- </tr>
- <tr>
- <td><code>/dev/pts</code></td>
- <td>ptsfs</td>
- <td>read-write, nosuid, noexec, mode=0600</td>
- </tr>
- <tr>
- <td><code>/proc</code></td>
- <td>proc</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- <tr>
- <td><code>/sys</code></td>
- <td>sysfs</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- <tr>
- <td><code>/cache</code></td>
- <td>yaffs2 or ext4</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- <tr>
- <td><code>/efs</code></td>
- <td>yaffs2 or ext4</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- <tr>
- <td><code>/system</code></td>
- <td>ext4</td>
- <td>read-only, nodev</td>
- </tr>
- <tr>
- <td><code>/data</code></td>
- <td>ext4</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- <tr>
- <td><code>/mnt/sdcard</code></td>
- <td>ext4 or vfat</td>
- <td>read-write, nosuid, nodev, noexec, uid=1000, fmask=0702, dmask=0702</td>
- </tr>
- <tr>
- <td><code>/acct</code></td>
- <td>cgroup</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- <tr>
- <td><code>/dev/cpuctl</code></td>
- <td>cgroup</td>
- <td>read-write, nosuid, nodev, noexec</td>
- </tr>
- </tbody>
-</table>
-<div class="note">
- <p><strong>Note:</strong> 實際的掛載點可能有所變更</p>
-</div>
-<h3 id="Linux_DAC_2"><span class="mw-headline" id="Linux_DAC">Linux DAC</span></h3>
-<p>Linux DAC represents 是一個有名的 Linux 檔案系統權限模型。</p>
-<div class="note">
- <p><strong>Note: </strong>這是傳統的 user/group/others 權限模型,而非 Linux POSIX 1.e ACLs.</p>
-</div>
-<ul>
- <li>Web app 系統使用者沒有寫入任何檔案的權限</li>
- <li>setuid 二進位檔只能在必要時使用</li>
- <li>新內容程序以合理的 umask 啟動</li>
-</ul>
-<h2 id="安全系統更新"><a name="System_updates"></a>安全系統更新</h2>
-<h3 id="風險_4">風險</h3>
-<ul>
- <li>受感染的更新檔案導致未受信任的更新檔被安裝</li>
- <li>受感染的更新檢查
- <ul>
- <li>使用者看不到更新</li>
- <li>使用者更新到過時的更新檔,導致軟體降級</li>
- </ul>
- </li>
- <li>安裝更新時受感染或未知的系統狀態可能導致:
- <ul>
- <li>遺失安裝檔案,例如一些安全性修正檔</li>
- <li>安全性修正被受感染的系統推翻</li>
- </ul>
- </li>
- <li>更新機制的安全漏洞</li>
- <li>對已知漏洞缺乏更新或追蹤</li>
-</ul>
-<h3 id="實作內容_4">實作內容</h3>
-<p>Firefox OS 的更新機制使用安全的 Mozilla 程序,更新檔是由受信任,通常是 OEM 廠商,組建、測試、簽署數位簽章。</p>
-<h4 id="FOTA_(Firmware_over_the_air)_更新">FOTA (Firmware over the air) 更新</h4>
-<p>系統更新可能涵蓋全部或部分 Firefox OS,如果更新涵蓋到 Gonk,那麼 <strong>FOTA</strong> (Firmware Over the Air) 安裝程序會被採用。FOTA 也可涵蓋到 OS 其他部分,例如裝置管理 (FOTA, firmware / drivers)、設定管理 (Firefox OS settings)、安全更新、Gaia、Gecko 等等。</p>
-<h4 id="MSUMAR_更新">MSU/MAR 更新</h4>
-<p>不牽涉到 Gonk 的更新可以透過 Mozilla 系統更新工具。Firefox OS 使用和桌面 FIrefox 一樣的更新架構、程序 Mozilla ARchive (MAR) 格式 (用於更新包)。</p>
-<h4 id="更新服務">更新服務</h4>
-<div class="note">
- <p><strong>Note: </strong>更新服務能由 OEM 廠商提供。</p>
-</div>
-<p>手機內建的更新系統會定期檢查更新,一但發現新更新,會提示使用者安裝更新,另外安裝前也會檢查手機儲存空間以及驗證發行者身分:</p>
-<ul>
- <li>更新來源 (驗證更新和 manifest 檔的來源位置,protocol:domain:port)</li>
- <li>檔案完整性 (加密 hash checksums).</li>
- <li>程式碼簽章</li>
-</ul>
-<p>下列安全性作法會用在更新程序:</p>
-<ul>
- <li>Mozilla 建議並且預期更新有受信任的證明以及通過 SSL 下載。</li>
- <li>更新韌體需要高度加密驗證。</li>
- <li>更新前完整的更新檔必須從特定、安全的來源下載。</li>
- <li>當系統更新時,系統必須要在安全的狀態下,不可以運行任何 web app。</li>
- <li>金鑰必須存在裝置上安全的地方。</li>
-</ul>
-<p>縝密的更新檢查確保正常地安裝更新。</p>
-<div class="note">
- <p><strong>Note</strong>: 更多有關更新資訊,請見 <a href="/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Creating_Firefox_OS_update_packages">Creating and applying Firefox OS update packages</a>.</p>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/simulator/index.html b/files/zh-tw/archive/b2g_os/simulator/index.html
deleted file mode 100644
index 3b5677a518..0000000000
--- a/files/zh-tw/archive/b2g_os/simulator/index.html
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Firefox OS 模擬器
-slug: Archive/B2G_OS/Simulator
-translation_of: Archive/B2G_OS/Simulator
----
-<div class="note">
-<p>本文將針對 Firefox OS 1.2 或更高版本,說明 Firefox OS 模擬器 (Firefox OS Simulator) 相關使用方式。如果開發者目前正開發 Firefox OS 1.1 的 App,則請參閱 <a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_1.1_Simulator">Firefox OS 1.1 Simulator</a> 的相關文章。</p>
-</div>
-
-<p>Firefox OS 模擬器可於桌機中模擬 Firefox OS 裝置。開發者不用真的弄到實際設備就能夠測試 App 並進行除錯。模擬器會在視窗中以 Firefox OS 裝置的實際尺寸執行,亦包含 Firefox OS 使用者介面與已內建的 App,進而模擬多樣的 Firefox OS 裝置 API。</p>
-
-<p>Firefox OS 模擬器是以 Firefox 附加元件的格式發佈,可下載並安裝於 Firefox 瀏覽器之上,接著可透過<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/Using_the_App_Manager">應用程式管理員 (App Manager)</a> 來執行模擬器、將 App 送入模擬器、搭配其他開發者工具。</p>
-
-<h2 id="安裝"><span style="line-height: 1.5;">安裝</span></h2>
-
-<p>直接點擊下方按鈕即可安裝模擬器。現有多個版本可供安裝。我們也建議開發者能安裝所有版本,以達最佳開發靈活度。</p>
-
-<p><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; color: white; text-align: center; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; display: inline-block; background-color: rgb(129, 188, 46); white-space: nowrap; text-shadow: rgba(0, 0, 0, 0.247059) 0px 1px 0px; box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 0px 0px, rgba(0, 0, 0, 0.298039) 0px -1px 0px 0px inset;">安裝 Firefox OS Simulator</a></p>
-
-<p>另請參閱<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/Using_the_App_Manager">《應用程式管理員》中的說明</a>來啟動模擬器。一旦模擬器開始執行,開發者即可將 App 送入應用程式管理員進行除錯;就如同使用實際裝置一樣。</p>
-
-<div class="note" style="line-height: 21px;">
-<p><strong>注意:模擬器</strong> (1.2 與 1.3 版) 目前正回報 1 組錯誤的 Gecko user agent 字串:請參閱 {{ Bug("964598") }} 進一步了解。</p>
-</div>
-
-<h2 id="模擬器的使用者介面_(UI)" style="line-height: 30px;">模擬器的使用者介面 (UI)</h2>
-
-<p>模擬器將另外顯示獨立的視窗,且模擬畫面則為 320x480 像素。若要模擬觸控事件,則可按下滑鼠按鈕不放並拖曳。只要在主畫面上按下滑鼠不放並從右向左拖曳,即可看到已內建的 App,還有開發者剛送入的 App:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/7173/simulator-1.2.png" style="display: block; height: 623px; margin: 0px auto; width: 810px;"></p>
-
-<p>在模擬器視窗底部的工具列共有 2 個按鈕:</p>
-
-<ul>
- <li>左邊「<strong>主畫面</strong>」按鈕可回到主畫面;或長按不放則可關閉模擬器</li>
- <li>右邊「<strong>畫面旋轉</strong>」按鈕可切換裝置的橫向、直向畫面;即產生 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Managing_screen_orientation#Listening_orientation_change" title="/en-US/docs/WebAPI/Detecting_device_orientation">orientationchange</a> 事件。</li>
-</ul>
-
-<h2 id="模擬器的限制">模擬器的限制</h2>
-
-<p>請注意,Firefox OS 模擬器仍無法提供完美的模擬作業。</p>
-
-<h3 id="硬體限制"><strong>硬體限制</strong></h3>
-
-<p>模擬器除了螢幕尺寸的限制之外,也無法模擬 Firefox OS 裝置的硬體 (例如 CPU 速度或可用的記憶體容量)。</p>
-
-<h3 id="音訊視訊編碼">音訊/視訊編碼</h3>
-
-<p>下列編碼 (Codecs) 因硬體加速解碼而有所不同,因此尚未支援:</p>
-
-<ul>
- <li>MP3</li>
- <li>AAC</li>
- <li>H.264 (MP4)</li>
- <li>WebM</li>
-</ul>
-
-<p>也就是說,若 App 或網站 (如 Youtube) 使用這些編碼,則模擬器將無法測試其中的視訊回播功能。</p>
-
-<h3 id="未支援的_API"><a name="Unsupported-APIs">未支援的 API</a></h3>
-
-<p>一般來說,因為桌上型電腦無法使用支援硬體,所以可於裝置上運作的特定 API,可能無法用於模擬器之上。我們另外針對某些 API (例如 Geolocation 地理位置定位) 建構了模擬功能,未來版本亦將新增更多模擬 API。但目前仍尚未支援下列 API。如果使用了這些 API,也只會得到錯誤的報告或結果:</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/WebAPI/WebTelephony" title="/en-US/WebAPI/WebTelephony">Telephony</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/WebSMS" title="/en-US/docs/WebAPI/WebSMS">WebSMS</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/WebBluetooth" title="/en-US/docs/WebAPI/WebBluetooth">WebBluetooth</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/Using_Light_Events" title="/en-US/docs/WebAPI/Using_Light_Events">Ambient Light</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/Proximity" title="/en-US/docs/WebAPI/Proximity">Proximity</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/Network_Information" title="/en-US/docs/WebAPI/Network_Information">Network Information</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Online_and_offline_events" title="/en-US/docs/Online_and_offline_events">navigator.onLine and offline events</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/Vibration" title="/en-US/docs/WebAPI/Vibration">Vibration</a></li>
-</ul>
-
-<h2 id="獲得協助"><a name="Simulator-help"></a>獲得協助</h2>
-
-<p>如果有任何問題,請透過 <a href="https://lists.mozilla.org/listinfo/dev-developer-tools">dev-developer-tools 郵件群組</a>或到 <a href="irc://irc.mozilla.org/#devtools">#devtools on irc.mozilla.org</a> 上發問。</p>
-
-<h3 id="啟動詳細資訊_(verbose)_記錄的方法"><a name="Simulator-verbose-logging"></a>啟動詳細資訊 (verbose) 記錄的方法</h3>
-
-<p>開發者可到<a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console">網頁主控台 (Web Console)</a> 觀看 App 的記錄訊息,並透過<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Firefox_OS/Using_the_App_Manager">應用程式管理員</a>將記錄附加到 App 上。如果想知道 App 啟動時的早期訊息,甚至早於主控台連線並開始作業的訊息,則開發者可啟動模擬器中的詳細資訊記錄功能。</p>
-
-<p>可透過 about:config 並建立新的 preference 設定。依照模擬器的版本,preference 的名稱也有所差異:</p>
-
-<ul>
- <li>Firefox OS 1.3 為extensions.fxos_1_3_simulator@mozilla.org.sdk.console.logLevel</li>
- <li>Firefox OS 1.2 為 extensions.fxos_1_2_simulator@mozilla.org.sdk.console.logLevel</li>
-</ul>
-
-<p>針對「附加元件管理員 (Add-on Manager)」中的附加元件,可將字串值設為「all」、停用,再啟用。目前有關模擬器作業的額外訊息,均將出現於<a href="https://developer.mozilla.org/en-US/docs/Tools/Browser_Console">瀏覽器主控台 (Browser Console)</a> 中。</p>
diff --git a/files/zh-tw/archive/b2g_os/simulator/simulator_walkthrough/index.html b/files/zh-tw/archive/b2g_os/simulator/simulator_walkthrough/index.html
deleted file mode 100644
index 9e7fba8c07..0000000000
--- a/files/zh-tw/archive/b2g_os/simulator/simulator_walkthrough/index.html
+++ /dev/null
@@ -1,268 +0,0 @@
----
-title: Firefox OS 模擬器簡易攻略
-slug: Archive/B2G_OS/Simulator/Simulator_Walkthrough
-translation_of: Archive/B2G_OS/Simulator/Simulator_Walkthrough
----
-<p>這裡將透過 <a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a> 對 Web Apps 進行很簡單的除錯 (但要找的 bug 有點多)。</p>
-<p>整個簡易攻略分成 6 個部分,各自使用不同的診斷/除錯工具,包含 <a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough#manifest_.E6.AA.A2.E9.A9.97.E5.8A.9F.E8.83.BD" title="#Using-manifest-validation">manifest 檢驗功能</a>、<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough#.E4.BD.BF.E7.94.A8.E7.B6.B2.E9.A0.81.E4.B8.BB.E6.8E.A7.E5.8F.B0_(Web_Console)">網頁主控台 (Web Console)</a>、<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough#.E4.BD.BF.E7.94.A8_JavaScript_.E9.99.A4.E9.8C.AF.E5.99.A8_(JavaScript_Debugger)" title="#Using-the-JavaScript-Debugger">JavaScript 除錯器 (JavaScript Debugger)</a>、<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough#.E4.BD.BF.E7.94.A8.E7.B6.B2.E8.B7.AF.E7.9B.A3.E6.B8.AC.E5.99.A8_(Network_Monitor)" title="#Using-the-NetworkMonitor">網路監測器 (Network Monitor)</a>、<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough#.E4.BD.BF.E7.94.A8.E6.A8.A3.E5.BC.8F.E7.B7.A8.E8.BC.AF.E5.99.A8_(Style_Editor)" title="#Using-the-StyleEditor">樣式編輯器 (Style Editor)</a>、<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough#.E4.BD.BF.E7.94.A8.E6.94.B6.E6.93.9A_(Receipts)_.E6.B8.AC.E8.A9.A6.E5.8A.9F.E8.83.BD" title="#Using-the-TestReceipts">收據 (Receipts) 測試</a>。</p>
-<p>這 6 個部分各自獨立。就算你只挑其中幾段來看,應該也能看得懂而不會有銜接上的問題。</p>
-<h3 id="manifest_檢驗功能"><a name="Using-manifest-validation">manifest 檢驗功能</a></h3>
-<div class="note">
- <p>GitHub 上的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough" title="https://github.com/rpl/firefoxos-simulator-walkthrough">firefoxos-simulator-walkthrough</a> 現有不同版本的 App。如果你想從第一段開始了解 App 的修正程序,可從 App 的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-1" title="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-1">whereami-1</a> 版本著手,逐步完成此攻略。</p>
- <p>這個 App 只會顯示 1 個「Where am I?」按鈕。只要點擊按鈕,則 App 就會透過 Geolocation API 取得使用者目前的位置,並於地圖上顯示。</p>
- <p>此處假設你<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator#.E5.AE.89.E8.A3.9D.E6.A8.A1.E6.93.AC.E5.99.A8.E9.99.84.E5.8A.A0.E5.85.83.E4.BB.B6" title="/en-US/docs/Tools/Firefox_OS_Simulator#Installing_the_Simulator_add-on">已經安裝了 Firefox OS 模擬器 (Firefox OS Simulator)</a>,並開啟了 Dashboard。</p>
-</div>
-<p>首先我們點選「<strong>Add Directory</strong>」,將 App 新增至 Dashboard 中,再選擇 manifest 檔案。畫面如下:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5529/manifest-error-collapsed-4.0.png" style="width: 1044px; height: 680px;"><br>
- <br>
- 點選「<strong>(2 errors and 0 warnings)</strong><strong>」就會看到:</strong></p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5531/manifest-error-expanded-4.0.png" style="width: 1044px; height: 680px;"><br>
- 畫面將清楚顯示錯誤訊息。此時看到「<strong>manifest.webapp</strong>」就會發現少了 1 組「<strong>name</strong><strong>」:</strong></p>
-<pre>{
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  }
-}</pre>
-<p><br>
- 我們把「<strong>name</strong>」欄位加入 manifest 檔案之後儲存,再點選 Dashboard 中的「<strong>Refresh</strong>」:</p>
-<pre>{
-  "name": "Where am I?",
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  }
-}</pre>
-<p><br>
- 此時 Dashboard 應該會告知沒有錯誤,也就能執行 App:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5533/whereami-no-map-4.0.png" style="width: 1044px; height: 478px;"></p>
-<p>但這時就算你按下按鈕,模擬器也不會有任何動作。我們會在下一段中使用 WebConsole 診斷此問題。</p>
-<h3 id="使用網頁主控台_(Web_Console)"><a name="Using-the-WebConsole">使用網頁主控台 (Web Console)</a></h3>
-<div class="note">
- <p><strong>如果你要從這裡開始研讀攻略:</strong></p>
- <p>這一段將透過 <a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a>,對很簡單的 Web App 進行除錯。GitHub 上的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough" title="https://github.com/rpl/firefoxos-simulator-walkthrough">firefoxos-simulator-walkthrough</a> 已有不同版本的 App。如果你想從本段開始了解 App 的修正程序,可從 App 的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-2" title="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-2">whereami-2</a> 版本著手,逐步完成此攻略。</p>
- <p>這個 App 只會顯示 1 個「Where am I?」按鈕。只要點擊按鈕,則 App 就會透過 Geolocation API 取得使用者目前的位置,並於地圖上顯示。</p>
- <p>但此版本的 App 不會執行任何作業。本段透過 WebConsole 診斷出問題。</p>
- 此處假設你<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator#.E5.AE.89.E8.A3.9D.E6.A8.A1.E6.93.AC.E5.99.A8.E9.99.84.E5.8A.A0.E5.85.83.E4.BB.B6" title="/en-US/docs/Tools/Firefox_OS_Simulator#Installing_the_Simulator_add-on">已經安裝了 Firefox OS 模擬器 (Firefox OS Simulator)</a>、開啟 Dashboard、點選 Dashboard 中的「Add Directory」而新增了 App,並點選 App 的「manifest.webapp」檔案。</div>
-<p>這裡必須按下 Dashboard 上的「<strong>Connect</strong>」按鈕:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5497/connect-to-app-button.png" style="width: 1044px; height: 650px;"></p>
-<p>隨即自動開啟模擬器視窗並執行 App。而 Dashboard 分頁另將出現網頁主控台 (WebConsole)。</p>
-<p>主控台的輸出結果會提示幾項錯誤、警告、訊息。但請注意最後一項:<br>
- <br>
- <img alt="" src="https://mdn.mozillademos.org/files/5535/webconsole-whereami-error.png" style="width: 1044px; height: 680px;"><br>
- <br>
- 看來是 App 的程式碼「whereami.js」明顯出了問題。這裡列出程式碼的前幾行:</p>
-<pre class="brush: js">var whereami = document.getElementById('whereami');
-
-whereami.onclick = function() {
-  navigator.geolocation.getCurrentPosition(getMap, error);
-};</pre>
-<p><br>
- 若與 App 的「index.html」相較,則問題明顯是:</p>
-<pre class="brush: html">&lt;!DOCTYPE html&gt;
-
-&lt;html&gt;
-
- &lt;head&gt;
-  &lt;meta charset='utf-8'&gt;
-  &lt;script src="http://open.mapquestap.com/sdk/js/v7.0.s/mqa.toolkit.js"&gt;&lt;/script&gt;
-  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"&gt;&lt;/script&gt;
-
- &lt;/head&gt;
-
- &lt;body&gt;
-  &lt;button id ="where-am-i"&gt;Where am I?&lt;/button&gt;
-  &lt;div id="map"&gt;&lt;/div&gt;
-  &lt;script src="scripts/whereami.js"&gt;&lt;/script&gt;
-  &lt;link media="all" href="style/style.css" type="text/css" rel="stylesheet"&gt;
- &lt;/body&gt;
-
-&lt;/html&gt;</pre>
-<p><br>
- 在 HTML 中的按鈕 ID 是「where-am-i」,而不是我們在前面 JavaScript 中所使用的「whereami」。所以我們修改為:</p>
-<pre class="brush: js">var whereami = document.getElementById('where-am-i');
-
-whereami.onclick = function() {
-  navigator.geolocation.getCurrentPosition(getMap, error);
-};</pre>
-<p>接著啟動 App 時雖然沒有問題,但仍未顯示地圖。這時主控台又出現新的訊息:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5537/webconsole-whereami-geolocation-error.png" style="width: 1044px; height: 680px;"></p>
-<p>此訊息是由「whereami.js」程式碼所記錄,指出 Geolocation API 回傳了錯誤,卻沒有說明是哪種錯誤。接著我們可用 JavaScript 除錯器 (JavaScript Debugger) 找出錯誤類型。</p>
-<h3 id="使用_JavaScript_除錯器_(JavaScript_Debugger)"><a name="Using-the-JavaScript-Debugger">使用 JavaScript 除錯器 (JavaScript Debugger)</a></h3>
-<div class="note">
- <p><strong>如果你要從這裡開始研讀攻略:</strong></p>
- <p>這一段將透過 <a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a>,對很簡單的 Web App 進行除錯。GitHub 上的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough" title="https://github.com/rpl/firefoxos-simulator-walkthrough">firefoxos-simulator-walkthrough</a> 已有不同版本的 App。如果你想從本段開始了解 App 的修正程序,可從 App 的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-3" title="https://github.com/wbamberg/firefoxos-simulator-walkthrough/tree/master/whereami-1">whereami-3 </a>版本著手,逐步完成此攻略。</p>
- <p>這個 App 只會顯示 1 個「Where am I?」按鈕。只要點擊按鈕,則 App 就會透過 Geolocation API 取得使用者目前的位置,並於地圖上顯示。</p>
- <p>此版本 App 的 Geolocation API 將回傳錯誤。所以本段將透過 JavaScript 除錯器 (JavaScript Debugger) 找出到底是哪種問題。</p>
- <p>此處假設你<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator#.E5.AE.89.E8.A3.9D.E6.A8.A1.E6.93.AC.E5.99.A8.E9.99.84.E5.8A.A0.E5.85.83.E4.BB.B6" title="/en-US/docs/Tools/Firefox_OS_Simulator#Installing_the_Simulator_add-on">已經安裝了 Firefox OS 模擬器 (Firefox OS Simulator)</a>、開啟 Dashboard、點選 Dashboard 中的「Add Directory」而新增了 App,並點選 App 的「manifest.webapp」檔案。</p>
-</div>
-<p>在連上 App 的網頁主控台 (WebConsole) 中,點選 Geolocation 錯誤記錄的右側鏈結:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5539/webconsole-whereami-geolocation-error-annotated.png" style="width: 1044px; height: 680px;"><br>
- 按下「<strong>whereami.js:8</strong>」鏈結之後,JavaScript 除錯器隨即自動載入相關檔案並跳到有問題的行數。</p>
-<p>根據<a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition#PositionError" title="/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition#PositionError">這篇 Geolocation API 參考</a>所述,這裡將由錯誤處理器 (Error handler) 的 <code>error() 屬性送入 </code><code>code</code> 物件<code>,而我們再透過 </code><code>error 物件的</code><code> code</code><code> 屬性</code><code>獲知此特定錯誤的詳細資訊</code>。所以我們點選左側行數為 8 的那一行,即可於 <code>error()</code> 之內設定中斷點:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5541/webconsole-whereami-set-breakpoint.png" style="width: 1044px; height: 680px;"></p>
-<p>在 App 之內點選「<strong>Where am I?</strong>」之後,執行作業就會停在中斷點:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5545/webconsole-whereami-hit-breakpoint.png" style="width: 1044px; height: 680px;"></p>
-<p>此時只要按下「<strong>Add watch expression</strong>」的地方並鍵入「<strong>error.code</strong>」,就會立刻看到其值為「<strong>1</strong>」:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5547/webconsole-whereami-watch.png" style="width: 1044px; height: 680px;"><br>
- 同樣根據 <a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition#PositionError" title="/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition#PositionError">Geolocation API 參考文件</a>所述,「1」即代表「權限已遭否決」。如果 Web Apps 尚未請求 <a href="https://developer.mozilla.org/en-US/docs/Apps/App_permissions" title="/en-US/docs/Apps/App_permissions">Geolocation 權限</a>,或使用者尚未許可該權限,都會發生這種錯誤。<br>
- <br>
- 這時來看「manifest.webapp」檔案,就會看到我們尚未要求權限:</p>
-<pre>{
-  "name": "Where am I?",
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  }
-}</pre>
-<p><br>
- 接著修復如下:</p>
-<pre>{
-  "name": "Where am I?",
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  },
-  "permissions": {
-    "geolocation": {
-      "description": "Needed to tell the user where they are"
-      }
-  }
-}</pre>
-<p><br>
- 儲存「<strong>manifest.webapp</strong>」之後,再按下 Dashboard 中的「<strong>Refresh</strong>」。這裡記得要在除錯器停在中斷點時,才能繼續除錯。而當你點選「Where am I?」,App 隨即會要求你分享你的位置。而你允許分享之後仍看不到地圖,接著又在 WebConsole 中找到新的訊息:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5549/webconsole-whereami-mapquestapi-not-defined.png" style="width: 1044px; height: 680px;"></p>
-<p>此訊息指出 MapQuest API (在 App 中以 script 標籤所指定) 並未正確載入。接著可使用網路監測器 (Network Monitor) 找出問題。</p>
-<h3 id="使用網路監測器_(Network_Monitor)"><a name="Using-the-NetworkMonitor"></a>使用網路監測器 (Network Monitor)</h3>
-<div class="note">
- <p><strong>如果你要從這裡開始研讀攻略:</strong></p>
- <p>這一段將透過 <a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a>,對很簡單的 Web App 進行除錯。GitHub 上的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough" title="https://github.com/rpl/firefoxos-simulator-walkthrough">firefoxos-simulator-walkthrough</a> 已有不同版本的 App。如果你想從本段開始了解 App 的修正程序,可從 App 的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-4" title="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-4">whereami-4 </a>版本著手,逐步完成此攻略。</p>
- <p>這個 App 只會顯示 1 個「Where am I?」按鈕。只要點擊按鈕,則 App 就會透過 Geolocation API 取得使用者目前的位置,並於地圖上顯示。</p>
- <p>此版本 App 的網頁主控台 (WebConsole) 將顯示「MQA is not defined」錯誤。所以本段將透過網路監測器 (Network Monitor) 找出未載入 MapQuest API 的原因。</p>
- <p>此處假設你<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator#.E5.AE.89.E8.A3.9D.E6.A8.A1.E6.93.AC.E5.99.A8.E9.99.84.E5.8A.A0.E5.85.83.E4.BB.B6" title="/en-US/docs/Tools/Firefox_OS_Simulator#Installing_the_Simulator_add-on">已經安裝了 Firefox OS 模擬器 (Firefox OS Simulator)</a>、開啟 Dashboard、點選 Dashboard 中的「Add Directory」而新增了 App,並點選 App 的「manifest.webapp」檔案。</p>
-</div>
-<div class="warning">
- <p><strong>警告:</strong><a href="https://hacks.mozilla.org/2013/06/network-monitor-now-in-firefox-beta/" title="https://hacks.mozilla.org/2013/06/network-monitor-now-in-firefox-beta/">需 Firefox 23.0 或更高版本才具備網路監測器</a>功能。</p>
-</div>
-<p>在連上 App 的開發者工具中,點選「<strong>Network</strong>」分頁就會看到下列面板。可以看到「<strong>open.mapquestap.com</strong>」網域針對「<strong>mqa.toolkit.js</strong>」資源所發出的請求,從未完全成功過:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5551/network-monitor-timing-panel.png" style="width: 1044px; height: 680px;"></p>
-<p>成功的請求均標記為<strong>綠色</strong>。如果我們點選「<strong>open.mapquestap.com</strong><strong>」</strong>網域 (<strong>深灰色</strong>) 的請求之一,點選「<strong>Timings</strong>」的細節面板,就會看到 DNS 解析 (DNS resolution) 並未成功,因此該請求從未達到「<strong>Connecting</strong>」的狀態。</p>
-<p>再看到「<strong>index.html</strong>」檔案,會發現 script 標籤指向錯誤網域。</p>
-<p>這裡變更 script 標籤以使用正確的網域:<strong>open.mapquestapi.com</strong> (於網域名稱內加入缺少的「i」) 之後,即可修復此錯誤。</p>
-<pre class="brush: html">&lt;!DOCTYPE html&gt;
-
-&lt;html&gt;
-
- &lt;head&gt;
-  &lt;meta charset='utf-8'&gt;
-  &lt;script src="<span style="background-color: #ffff00;">http://open.mapquestapi.com/sdk/js/v7.0.s/mqa.toolkit.js</span>"&gt;&lt;/script&gt;
-  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"&gt;&lt;/script&gt;
-
- &lt;/head&gt;
-
- &lt;body&gt;
-  &lt;button id ="where-am-i"&gt;Where am I?&lt;/button&gt;
-  &lt;div id="map"&gt;&lt;/div&gt;
-  &lt;script src="scripts/whereami.js"&gt;&lt;/script&gt;
-  &lt;link media="all" href="style/style.css" type="text/css" rel="stylesheet"&gt;
- &lt;/body&gt;
-
-&lt;/html&gt;</pre>
-<p>儲存「<strong>index.html</strong>」並點選 Dashboard 中的「<strong>Refresh</strong>」。在 App 執行時按下「Where am I?」,系統就會要求你分享你的位置。在你允許分享之後,App 終於顯示地圖:<br>
- <img alt="" src="https://mdn.mozillademos.org/files/5553/whereami-map.png" style="width: 399px; height: 663px;"></p>
-<h3 id="使用樣式編輯器_(Style_Editor)"><a name="Using-the-StyleEditor"></a>使用樣式編輯器 (Style Editor)</h3>
-<div class="note">
- <p><strong>如果你要從這裡開始研讀攻略:</strong></p>
- <p>這一段將透過 <a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a> 客製化 App 的樣式表 (Stylesheets)。 GitHub 上的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough" title="https://github.com/rpl/firefoxos-simulator-walkthrough">firefoxos-simulator-walkthrough</a> 已有不同版本的 App。如果你想從本段開始了解 App 的修正程序,可從 App 的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-5" title="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-5">whereami-5</a> 版本著手,逐步完成此攻略。</p>
- <p>這個 App 只會顯示 1 個「Where am I?」按鈕。只要使用者點擊按鈕,則 App 就會透過 Geolocation API 取得使用者目前的位置,並於地圖上顯示。</p>
- <p>此版本的 App 已修復前述的所有錯誤。接著我們將透過樣式編輯器 (Style Editor),為執行中的 App 即時變更樣式並儲存之。</p>
- <p>此處假設你<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator#.E5.AE.89.E8.A3.9D.E6.A8.A1.E6.93.AC.E5.99.A8.E9.99.84.E5.8A.A0.E5.85.83.E4.BB.B6" title="/en-US/docs/Tools/Firefox_OS_Simulator#Installing_the_Simulator_add-on">已經安裝了 Firefox OS 模擬器 (Firefox OS Simulator)</a>、開啟 Dashboard、點選 Dashboard 中的「Add Directory」而新增了 App,並點選 App 的「manifest.webapp」檔案。</p>
-</div>
-<div class="warning">
- <p><strong>警告:</strong><a href="https://hacks.mozilla.org/2013/06/network-monitor-now-in-firefox-beta/" title="https://hacks.mozilla.org/2013/06/network-monitor-now-in-firefox-beta/">必須 Firefox 23.0 或更高版本才具備網路監測器</a> (目前 <a href="http://www.mozilla.org/en-US/firefox/beta/" title="http://www.mozilla.org/en-US/firefox/beta/">Firefox Beta 試用版才是 23.0 版</a>)</p>
-</div>
-<p>在連上 App 的開發者工具中,點選「<strong>Style Editor</strong>」分頁就會看到下列面板:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5555/whereami-style-editor.png" style="width: 1044px; height: 536px;"></p>
-<p>點選左側樣式表清單中的「<strong>style/style.css</strong>」,並修改 CSS 規則。新的規則會立刻套用至已連線的 App 上:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5557/whereami-style-editor-changes.png" style="width: 1044px; height: 528px;"></p>
-<p>現在點選樣式表「<strong>style/style.css</strong>」正下方的「<strong>Save</strong>」,即可將之儲存回專案中。</p>
-<h3 id="使用收據_(Receipts)_測試功能"><a name="Using-the-TestReceipts"></a>使用收據 (Receipts) 測試功能</h3>
-<div class="note">
- <p><strong>如果你要從這裡開始研讀攻略:</strong></p>
- <p>這一段將透過 <a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a>,為 Web App 新增付款收據驗證碼。GitHub 上的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough" title="https://github.com/rpl/firefoxos-simulator-walkthrough">firefoxos-simulator-walkthrough</a> 已有不同版本的 App。如果你想從本段開始了解 App 的修正程序,可從 App 的 <a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-6" title="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-6">whereami-6</a> 版本著手,逐步完成此攻略。</p>
- <p>這個 App 只會顯示 1 個「Where am I?」按鈕。只要點擊按鈕,則 App 就會透過 Geolocation API 取得使用者目前的位置,並於地圖上顯示。</p>
- <p>我們要把此版本 App 變更為付費 Web App。</p>
- <p>此處假設你<a href="https://developer.mozilla.org/zh-TW/docs/Tools/Firefox_OS_Simulator#.E5.AE.89.E8.A3.9D.E6.A8.A1.E6.93.AC.E5.99.A8.E9.99.84.E5.8A.A0.E5.85.83.E4.BB.B6" title="/en-US/docs/Tools/Firefox_OS_Simulator#Installing_the_Simulator_add-on">已經安裝了 Firefox OS 模擬器 (Firefox OS Simulator)</a>、開啟 Dashboard、點選 Dashboard 中的「Add Directory」而新增了 App,並點選 App 的「manifest.webapp」檔案。</p>
-</div>
-<p>目前你已經將 App 修改為無錯誤的 App,並已擁有合適的樣式。現在可新增付款收據驗證 (Payment Receipt Validation) 功能,確保使用者必須購買此 App。</p>
-<p>Mozilla 另已提供小型的 JavaScript 函式庫,可協助 Apps 檢查自己的收據:<a href="https://github.com/mozilla/receiptverifier" title="https://github.com/mozilla/receiptverifier">http://github.com/mozilla/receiptverifier</a>。</p>
-<p>為 App 新增 receiptverifier (把新的 script 標籤加入「index.html」檔案中):</p>
-<pre class="brush: html">&lt;!DOCTYPE html&gt;
-
-&lt;html&gt;
-
- &lt;head&gt;
-  &lt;meta charset='utf-8'&gt;
-  <span style="background-color: #ffff00;">&lt;script src="https://raw.github.com/mozilla/receiptverifier/master/receiptverifier.js"&gt;&lt;/script&gt;</span>
-  &lt;script src="http://open.mapquestapi.com/sdk/js/v7.0.s/mqa.toolkit.js"&gt;&lt;/script&gt;
-  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"&gt;&lt;/script&gt;
-
- &lt;/head&gt;
-
- &lt;body&gt;
-  &lt;button id ="where-am-i"&gt;Where am I?&lt;/button&gt;
-  &lt;div id="map"&gt;&lt;/div&gt;
-  &lt;script src="scripts/whereami.js"&gt;&lt;/script&gt;
-  &lt;link media="all" href="style/style.css" type="text/css" rel="stylesheet"&gt;
- &lt;/body&gt;
-
-&lt;/html&gt;</pre>
-<p>接著再以「<strong>mozmarket.receipts.Verifier</strong>」API 檢查「<strong>scripts/whereami.js</strong>」中的收據 (將於按下按鈕,或於載入 App 時檢查收據):</p>
-<pre class="brush: js">...
-
-var verifier = new mozmarket.receipts.Verifier({
-  installs_allowed_from: '*',
-  typsAllowed: 'test-receipt',
-  logLevel: mozmarket.receipts.Verifier.levels.DEBUG,
-  onlog: mozmarket.receipts.Verifier.consoleLogger
-});
-verifier.clearCache();
-
-function verifyPaymentReceipts(cb) {
-  verifier.verify(function (verifier) {
-    if (verifier.state instanceof verifier.states.OK) {
-      cb(null); // valid payment
-    } else {
-      cb("invalid-payment"); // invalid payment
-    }
-  });
-  setTimeout(function checkNoReceipts() {
-    if (verifier.state instanceof verifier.states.NoReceipts) {
-      cb("no-receipts");
-    }
-  }, 2000);
-}
-
-whereami.onclick = function() {
-  verifyPaymentReceipts(function (err) {
-    if (err) {
-      alert("Invalid Payment Receipt.");
-    } else {
-      navigator.geolocation.getCurrentPosition(getMap, error);
-    }
-  });
-};
-</pre>
-<p>正常情況需透過 Marketplace 與 Payment 服務,以加密方式簽署收據。但目前可先用模擬器 App 項目中的「<strong>Receipts</strong>」選單,點選所要安裝的收據類型 (預設為「<strong>None</strong>」),即可為 App 安裝測試收據。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5559/receipts-whereami-menu-annotated.png" style="width: 1044px; height: 742px;"></p>
-<p>現在即可測試 App 具備「<strong>Valid</strong>」、「<strong>Invalid</strong>」、「<strong>Refunded</strong>」收據,或無收據時的行為。另可於網頁主控台觀看「<strong>receiptverifier</strong>」函式庫所產生的記錄,藉以了解相關結果:</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5561/whereami-receipt-invalid.png" style="width: 1044px; height: 539px;"></p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/5563/whereami-receipt-valid.png" style="width: 1044px; height: 535px;"></p>
-<div class="note">
- <p><strong>注意:</strong><a href="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-7" title="https://github.com/rpl/firefoxos-simulator-walkthrough/tree/master/whereami-7">whereami-7 </a>版本即為最終完成的 App。</p>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/b2g_os/using_the_app_manager/index.html b/files/zh-tw/archive/b2g_os/using_the_app_manager/index.html
deleted file mode 100644
index 8486eeb959..0000000000
--- a/files/zh-tw/archive/b2g_os/using_the_app_manager/index.html
+++ /dev/null
@@ -1,259 +0,0 @@
----
-title: 應用程式管理員 (App Manager)
-slug: Archive/B2G_OS/Using_the_App_Manager
-translation_of: Archive/B2G_OS/Using_the_App_Manager
----
-<div class="summary">
-<p>「應用程式管理員 (App Manager)」為 Firefox 桌面版的新工具,具備多樣的有效工具,可透過開發者的瀏覽器,直接於 Firefox OS 手機與 Firefox OS 模擬器 (Firefox OS Simulator) 中進行 HTML5 Web App 的測試、佈署、除錯等作業。</p>
-
-<p>應用程式管理員適用於 Firefox OS 1.2 或更高版本。如果你正為 Firefox OS 1.1 開發 App,則請參閱《<a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_1.1_Simulator">Firefox OS 1.1 Simulator</a>》一文。</p>
-</div>
-
-<p>{{EmbedYouTube("z1Bxg1UJVf0")}}</p>
-
-<p>應用程式管理員具備下列元件:</p>
-
-<ul>
- <li><a href="#Apps_panel">「Apps」面板</a>將管理本端 App (即位於你電腦上的 App 原始碼) 與托管 (Hosted) 於外部的 App,讓開發者能在自己的裝置或模擬器上進行封裝與安裝作業,並透過 Toolboxes 除錯。</li>
- <li><a href="#Device_panel">「Device」面板</a>則顯示已連線裝置的相關資訊,包含 Firefox OS 的版本、所使用裝置 API 的必要權限、已安裝的 App 等。</li>
- <li><a href="/en-US/docs/Tools_Toolbox">Toolboxes</a> 集合一系列的開發者工具 (網頁主控台、檢測器、除錯器等),將透過 Apps panel 而連上執行中的 App,以利執行除錯作業。</li>
-</ul>
-
-<h2 id="快速設定:"><a name="Configuring_device">快速設定:</a></h2>
-
-<p>本段將協助開發者儘快設定並執行應用程式管理員。如果你需要進一步詳細資訊,則請略過本段文章而直接觀看下一段《裝置與系統設定》。若發生任何問題,亦可參閱本文最後一段《疑難排解》。</p>
-
-<ol>
- <li>確認已安裝桌面版 Firefox 26 或更高版本</li>
- <li>開啟應用程式管理員 (可於網址列中鍵入 <code>about:app-manager</code>)</li>
- <li>若你手上並沒有實際的 Firefox OS 裝置:
- <ol>
- <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">先安裝 Firefox OS 模擬器 (Firefox OS Simulator)</a></li>
- <li>在應用程式管理員底部的工具列中,點選 <em>Start Simulator</em> 再點選已安裝的模擬器名稱 (已安裝的模擬器均應出現)。</li>
- </ol>
- </li>
- <li>若你擁有 Firefox OS 實體裝置:
- <ol>
- <li>確認目前為 Firefox OS 1.2 或更高版本</li>
- <li>確認已在視窗系統中安裝該款手機的驅動程式</li>
- <li>進入裝置的「Settings」,停用「Screen Lock (<code>Settings &gt; <code>Screen Lock</code></code>)」並啟用「Remote Debugging (<code>Settings &gt; Device information &gt; More information &gt; Developer</code>)」</li>
- <li>另為 Firefox 桌面版<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/adb-helper/">安裝 ADB Helper</a> 附加元件</li>
- <li>使用 USB 纜線銜接裝置與電腦</li>
- <li>接著應可於應用程式管理員的底部看到裝置名稱,點選該裝置</li>
- </ol>
- </li>
- <li>底部應顯示「Connected to: xxx」</li>
- <li>點選 Apps panel 並新增 App;封裝式 (Packaged) 或托管式 (Hosted) App 均可</li>
- <li>Refresh 按鈕將驗證該 App 並安裝於裝置/模擬器中</li>
- <li>Debug 按鈕則銜接開發者工具與執行中的 App</li>
- <li>若遇上任何錯誤,可參閱〈疑難排解〉章節</li>
-</ol>
-
-<h2 id="裝置與系統設定">裝置與系統設定</h2>
-
-<p>使用應用程式管理員前的第一件事,就是必須正確設定現有的系統與手機。本段將逐步說明各個步驟。</p>
-
-<h3 id="需要_Firefox_1.2_或更高版本">需要 Firefox 1.2 或更高版本</h3>
-
-<p>確認裝置目前為 Firefox OS 1.2/Boot2Gecko 1.2 或更高版本。若要檢查目前 Firefox OS 版本,可點選 <code>Settings &gt; Device Information &gt; Software</code>。</p>
-
-<p>如果尚未安裝必要的 Firefox OS 版本,則根據手機型號的不同,你可能必須安裝 Firefox 1.2 或更高的 nightly 版本,或自行透過原始碼進行設定與建置 (Build)。</p>
-
-<p>目前可用的建置:</p>
-
-<ul>
- <li><a href="http://downloads.geeksphone.com/">Geeksphone Keon/Peak builds</a> (若要進一步了解使用方式,可參閱 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Updating and Tweaking your Firefox OS Developer Preview phone/Geeksphone</a>)</li>
- <li>敬請期待更多後續資訊</li>
-</ul>
-
-<p>若要建構自己的 Firefox OS 1.2 或更高版本,請參閱 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">Building and installing Firefox OS</a> 說明,並從 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Firefox OS build prerequisites</a> 著手開始。</p>
-
-<h3 id="遠端除錯_(Remote_debugging)">遠端除錯 (Remote debugging)</h3>
-
-<p>接著必須啟動 Firefox OS 中的遠端除錯 (Remote debugging) 功能。點選<code>Settings &gt; Device information &gt; More information &gt; Developer</code>,最後勾選 Remote Debugging 方塊即可。</p>
-
-<h3 id="Adb_Helper_Add-on" name="Adb_Helper_Add-on">ADB 或 ADB helper</h3>
-
-<p>透過 Android Debug Bridge (ADB) 處理裝置與電腦之間的連線作業。現有 2 種 ADB 執行方式:</p>
-
-<ul>
- <li>
- <p>讓 Firefox 直接處理 ADB (建議使用)。<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/adb-helper/">先安裝 ADB Helper 附加元件</a>可簡化相關流程。安裝 ADB Helper 之後就不需再安裝 ADB,也不需再輸入 <code>adb forward</code> 指令。此附加元件將處理所有作業。</p>
- <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;" title="https://addons.mozilla.org">下載 ADB Helper 附加元件</a></li>
- <li>手動操作 ADB。你必須自行下載並安裝 <code>adb</code> (可參閱 <a href="http://developer.android.com/sdk/index.html">Get the Android SDK</a>),再於終端機內鍵入下列指令,以啟動轉發通訊埠 (Port forwarding):
- <pre>adb forward tcp:6000 localfilesystem:/data/local/debugger-socket</pre>
- 另請注意,每次只要重新啟動或重新插拔手機,均必須重複上述動作 1 次。</li>
-</ul>
-
-<div class="note">
-<p>注意:只要安裝 ADB Helper 附加元件,就不需執行此指令。</p>
-</div>
-
-<h2 id="將裝置連上應用程式管理員">將裝置連上應用程式管理員</h2>
-
-<p>完成所有設定之後,就可將裝置連上電腦並啟動應用程式管理員:</p>
-
-<ol>
- <li>以 USB 纜線銜接裝置與電腦。</li>
- <li>進入 <code>Settings &gt; Screen Lock</code> 並取消勾選 <code>Lock Screen</code><code>,以停用裝置的螢幕鎖定功能。一旦螢幕鎖定之後,手機與電腦的連線將隨之中斷,也就無法進行除錯作業。因此最好先停用此功能。</code></li>
- <li>啟動應用程式管理員 — 到 Firefox 桌面版中點選「工具 (<code>Tools)」&gt;「網頁開發者 (Web Developer)」&gt;「</code>應用程式管理員 (<code>App Manager)」選單;或於網址列中鍵入</code> <code>about:app-manager</code>。</li>
- <li>應用程式管理員分頁的底部可看到連線狀態顯示列 (如下圖所示)。只要點選「Connect to localhost:6000」按鈕即可連線裝置。</li>
- <li>若連線成功,裝置畫面隨即出現「An incoming request to permit remote debugging connection was detected. Allow connection?」對話框。按下「OK」鈕 (你可能必須按下手機的電源鍵,才會看到該對話框)。接著應會更新連線狀態列並顯示「Connected to B2G」。此時也將出現「Disconnect」按鈕,以利隨時中斷連線。</li>
-</ol>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6263/connection-status.png" style="width: 600px; height: 30px; display: block; margin: 0px auto;"></p>
-
-<div class="note">
-<p>另請注意,位於連線狀態列中的其他控制鈕,可讓你銜接模擬器與應用程式管理員 (將於下一段中說明),並更改連線所使用的通訊埠。若要更改通訊埠,則必須啟動該通訊埠的「轉發通訊埠 (Port forwarding)」功能。可參閱上述的<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Using_the_App_Manager#Enable_port_forwarding">啟動轉發通訊埠</a>。</p>
-</div>
-
-<h2 id="使用_Firefox_OS_Simulator_附加元件"><a name="Simulator">使用 Firefox OS Simulator 附加元件</a></h2>
-
-<p>如果你手上還沒有實際的 Firefox OS 裝置可搭配 App Manager,也能透過 Firefox OS 模擬器 (Firefox OS Simulator) 附加元件體驗應用程式管理員。請先為自己的作業系統安裝合適的模擬器:</p>
-
-<p><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">安裝 Firefox OS 模擬器</a></p>
-
-<div class="note">
-<p><strong>注意:</strong>目前僅有 Firefox OS 1.2 模擬器。未來將提供更多版本選擇。</p>
-</div>
-
-<p>安裝模擬器之後,請透過 about:app-manager 找到應用程式管理員分頁底部的連線狀態列,點選「Start simulator」按鈕。接著將出現至少 3 組按鈕:</p>
-
-<ul>
- <li>「Firefox OS 1.3」、「Firefox OS 1.2」或類似的呈現方式:左邊按鈕將顯示目前安裝的模擬器版本。點選按鈕即可連線至模擬器。</li>
- <li>「Add」:中間按鈕則提供本文所提到的模擬器安裝鏈結,讓你新增更多版本的模擬器 (Firefox OS 1.2、Firefox OS 1.3 等)。</li>
- <li>「Cancel」:右邊按鈕可取消連線。</li>
-</ul>
-
-<div class="note">
-<p><strong>注意:</strong>模擬器 (1.2 與 1.3 版) 目前回報 1 組錯誤的 Gecko user agent 字串:可參閱 {{ Bug("964598") }} 進一步了解。</p>
-</div>
-
-<h2 id="「Apps」面板"><a name="Apps_panel">「Apps」面板</a></h2>
-
-<p>所有要件設定完畢之後,就從「Apps」面板開始了解應用程式管理員的功能吧。先透過 Apps 面板將現有 App 送入裝置中並進行除錯:</p>
-
-<ul>
- <li>若要安裝本端 App,則請點選「Add Packaged App」按鈕旁的「+」加號按鈕,再從檔案選擇對話框中找到放置該 App 的目錄即可。</li>
- <li>若要安裝外部的托管式 (Hosted) App,請將該 App manifest 檔案的絕對路徑輸入「Add Hosted App」對話框中,再點選「+」加號按鈕。</li>
-</ul>
-
-<p>視窗右側隨即顯示 App 的相關資訊,如下圖所示:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6261/apps-panel.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p>
-
-<h3 id="Manifest_檔案編輯器_(Manifest_Editor)">Manifest 檔案編輯器 (Manifest Editor)</h3>
-
-<p>從 Firefox 28 開始,「Apps」面板即包含編輯器功能,可用於 App 的 manifest 檔案:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6613/apps-panel-fx-28.png" style="width: 600px; display: block; margin: 0px auto;"></p>
-
-<h3 id="除錯">除錯</h3>
-
-<p>此時點選「Update」就會更新 (或安裝) 裝置上的 App。點選「Debug」則會連上工具箱,以利直接對程式碼進行除錯:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6265/debug.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p>
-
-<div class="note">
-<p><strong>注意:</strong>你可能會玩工具箱玩到上癮 — 快試著修改 DOM、CSS 等。接著就能看到裝置即時反應出更新的效果。相關更新均將儲存於已安裝的 App 程式碼中,下次再開啟裝置中的 App 就能一目了然。</p>
-</div>
-
-<p>若是 Firefox 28 之前的版本,這些工具將顯示於另一個獨立視窗中。從 Firefox 28 開始,這些工具均顯示於應用程式管理員之內的獨立分頁中;就接在「Apps」與「Device」分頁之下。此分頁將顯示目前 App 的圖示,因此極容易辨識:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6615/toolbox-fx-28.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p>
-
-<h3 id="錯誤">錯誤</h3>
-
-<p>如果新增 App 失敗 (可能是 URL 錯誤,或選到了封裝式 App 的資料夾),則該頁仍會顯示所新增的 App 項目,也會包含錯誤資訊。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6259/apps-error.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p>
-
-<p>另外只要將滑鼠游標移至視窗左邊的 App 名稱/說明之上,在「X」按鈕出現時按下,即可在此畫面中刪除該 App。請注意此動作並不會刪除裝置中的 App。必須從裝置上手動移除 App,才會真正刪除裝置中的 App。</p>
-
-<h2 id="「Device」面板"><a name="Device_panel">「Device」面板</a></h2>
-
-<p>「Device」面板將顯示已連線裝置的相關資訊。另可透過「Installed Apps」視窗中開啟裝置上的 App 並進行除錯。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6267/device-tab.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p>
-
-<div class="note">
-<p><strong>注意:</strong>依預設值,此處並不會顯示 Certified App。<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Using_the_App_Manager#Debugging_Certified_Apps">可參閱 Certified App 的除錯方式</a>。</p>
-</div>
-
-<p>「Permissions」視窗將針對目前裝置上的不同 <a href="https://developer.mozilla.org/zh-TW/docs/WebAPI">Web API</a>,顯示必要的權限。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/6269/permissions.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p>
-
-<p>最後可按下「Screenshot」按鈕,即可對目前裝置的顯示項目拍下截圖。此截圖將以 Firefox 的新分頁開啟,讓你決定是否要儲存該圖。</p>
-
-<h2 id="Certified_App_的除錯"><a name="Debugging_Certified_Apps">Certified App 的除錯</a></h2>
-
-<p>目前僅限搭載 Firefox OS 1.2 開發版本的裝置,才能進行 Certified Apps 的除錯。若你手上的裝置正執行開發版本,則可將設定檔中的「 <code>devtools.debugger.forbid-certified-apps</code><code>」變更為「</code><code>false</code><code>」,即可開始 </code>Certified App<code> 的除錯。可參閱下列步驟:</code></p>
-
-<ol>
- <li>
- <p>在電腦的終端/主控台上輸入下列指令,以進入裝置的 filesystem:</p>
-
- <pre class="brush: bash">adb shell</pre>
-
- <p>接著命令列提示將轉為 <code>root@android</code>。</p>
- </li>
- <li>
- <p>接著以下列指令暫停執行 B2G:</p>
-
- <pre class="brush: bash">stop b2g</pre>
- </li>
- <li>
- <p>進入以下目錄:</p>
-
- <pre>cd /data/b2g/mozilla/*.default/</pre>
- </li>
- <li>
- <p>以下列指令更改 prefs.js 檔案:</p>
-
- <pre class="brush: js">echo 'user_pref("devtools.debugger.forbid-certified-apps", false);' &gt;&gt; prefs.js</pre>
- </li>
- <li>
- <p>在完成編輯並儲存檔案之後,再以下列指令重新啟動 B2G:</p>
-
- <pre class="brush: bash">start b2g</pre>
- </li>
- <li>
- <p>輸入 <code>exit</code> 指令以退出 Android 的 filesystem 之後,就會回到正常的終端畫面。</p>
- </li>
- <li>
- <p>最後再次連回應用程式管理員,就能看到 Certified App 出現,即可進行除錯。</p>
- </li>
-</ol>
-
-<div class="note">
-<p><strong>注意:</strong>如果你想把這個偏好設定加入自己的 Gaia 版本,則可執行 <code>DEVICE_DEBUG=1 reset-gaia</code></p>
-</div>
-
-<h2 id="在應用程式管理員中執行自訂的版本">在應用程式管理員中執行自訂的版本</h2>
-
-<p>只要透過 Firefox OS 模擬器,即可於應用程式管理員中執行自訂的 B2G Desktop 與 Gaia 版本。可參閱《<a href="https://developer.mozilla.org/en-US/Firefox_OS/Running_custom_builds_in_the_App_Manager">Running custom Firefox OS/Gaia builds in the App Manager</a>》進一步了解。</p>
-
-<h2 id="疑難排解"><a name="Troubleshooting">疑難排解</a></h2>
-
-<p id="My_device_is_not_recognized">如果系統無法辨認裝置:</p>
-
-<ul>
- <li>請先完整閱讀上方的《裝置與系統設定》段落,確認已完成所有步驟:</li>
- <li>自己的裝置是否執行 Firefox OS 1.2 或更高版本?</li>
- <li>是否已啟用手機的「Remote Debugging」設定?</li>
- <li>如果你尚未使用 <a href="#Adb_Helper_Add-on">ADB Helper 附加元件</a>:
- <ul>
- <li>是否已成功執行 <code>adb forward</code> 指令?</li>
- </ul>
- </li>
- <li>如果你正使用 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Using_the_App_Manager#Adb_Helper_Add-on">ADB Helper 附加元件</a>,但自己的裝置並未出現於底部的工具列中:
- <ul>
- <li>如果是使用 Linux,<a href="http://developer.android.com/tools/device.html#setting-up">請確認已正確設定 udev</a></li>
- <li>如果是使用 Windows,<a href="http://developer.android.com/tools/device.html#setting-up">請確認已安裝正確的驅動程式</a></li>
- </ul>
- </li>
- <li>你手機的螢幕解鎖了嗎?</li>
-</ul>
-
-<p>還是無法讓自己的裝置連上應用程式管理員或啟動模擬器嗎?<a href="https://wiki.mozilla.org/DevTools/GetInvolved#Communication">快讓我們知道</a>或<a href="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&amp;assigned_to=nobody%40mozilla.org&amp;attach_text=&amp;blocked=&amp;bug_file_loc=http%3A%2F%2F&amp;bug_ignored=0&amp;bug_severity=normal&amp;bug_status=NEW&amp;cf_blocking_b2g=---&amp;cf_crash_signature=&amp;cf_status_b2g18=---&amp;cf_status_b2g_1_1_hd=---&amp;cf_status_b2g_1_2=---&amp;cf_status_firefox24=---&amp;cf_status_firefox25=---&amp;cf_status_firefox26=---&amp;cf_status_firefox27=---&amp;cf_status_firefox_esr17=---&amp;cf_status_firefox_esr24=---&amp;cf_tracking_b2g18=---&amp;cf_tracking_firefox24=---&amp;cf_tracking_firefox25=---&amp;cf_tracking_firefox26=---&amp;cf_tracking_firefox27=---&amp;cf_tracking_firefox_esr17=---&amp;cf_tracking_firefox_esr24=---&amp;cf_tracking_firefox_relnote=---&amp;cf_tracking_relnote_b2g=---&amp;comment=&amp;component=Developer%20Tools%3A%20App%20Manager&amp;contenttypeentry=&amp;contenttypemethod=autodetect&amp;contenttypeselection=text%2Fplain&amp;data=&amp;defined_groups=1&amp;dependson=&amp;description=&amp;flag_type-203=X&amp;flag_type-37=X&amp;flag_type-41=X&amp;flag_type-5=X&amp;flag_type-607=X&amp;flag_type-720=X&amp;flag_type-721=X&amp;flag_type-737=X&amp;flag_type-748=X&amp;flag_type-781=X&amp;flag_ty">到 bugzilla 回報錯誤</a>。</p>
diff --git a/files/zh-tw/archive/b2g_os/using_the_b2g_desktop_client/index.html b/files/zh-tw/archive/b2g_os/using_the_b2g_desktop_client/index.html
deleted file mode 100644
index 46fc57a972..0000000000
--- a/files/zh-tw/archive/b2g_os/using_the_b2g_desktop_client/index.html
+++ /dev/null
@@ -1,180 +0,0 @@
----
-title: 使用 Firefox OS 的電腦桌面 client 程式
-slug: Archive/B2G_OS/Using_the_B2G_desktop_client
-translation_of: Archive/B2G_OS/Building_the_B2G_OS_simulator
----
-<p>Firefox OS 的 desktop client,也被稱為 <em>B2G desktop client</em>,讓您可以在一個以 Gecko 為基礎的環境-有點類似實際行動裝置的環境下執行 Gaia 和 web apps。它不會模擬行動裝置的硬體,因此它並不適合拿來測試行動裝置的 API,也不能取代在實際硬體上的測試。然而,它的確擁有一些 Firefox 上所沒有 APIs,像是聯絡人(Contacts)和設定(Settings)的 Apis。因此,當我們在開發應用程式、或是在操作 Gaia 使用者介面上可以派上用場。</p>
-
-<p>這篇文章不但涵蓋下載或是建置 Firefox desktop client,也包含了如何使用它。</p>
-
-<h2 id="下載_nightly_版本">下載 nightly 版本</h2>
-
-<p>如同 <a href="http://nightly.mozilla.org" title="http://nightly.mozilla.org">Firefox Nightlies</a> 一般,Firefox OS 的 desktop client 每天都會用最新的原始碼編譯出一個版本。最新的版本將 <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/" title="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/">可以從 Mozilla FTP 伺服器取得</a>。請確定挑到最新的版本和對的封存給您的作業系統。</p>
-
-<p>我們現在可以略過下面內容,直接到「執行<a href="#Running_the_desktop_client" title="#Running_the_desktop_client"> desktop client</a>」。</p>
-
-<h2 id="建置_desktop_client">建置 desktop client</h2>
-
-<p>我們需要做的地一件事情是架起<a href="/En/Developer_Guide/Build_Instructions#Build_prerequisites" title="En/Developer_Guide/Build_Instructions#Build_prerequisites"> Mozilla 的標準建置環境</a>。一旦我們有了這個環境,我們可以降低我們所需要的原始碼,並且設定建置 Firefox OS 的 desktop client。</p>
-
-<h3 id="第一次下載原始碼">第一次下載原始碼</h3>
-
-<p>在我們要放置程式碼的目錄(資料夾)中,讓我們將包含所有 Gecko 的 <code>mozilla-central</code> 倉儲 (repository)給複製下來。</p>
-
-<pre> hg clone http://hg.mozilla.org/mozilla-central
-</pre>
-
-<h3 id="更新程式碼">更新程式碼</h3>
-
-<p>當我們之後編譯後來的版本時,我們要確定我們有最新的原始碼。下列就是如何拉到最新的更新的指令:</p>
-
-<pre>cd mozilla-central
-hg pull -u
-</pre>
-
-<h3 id="建立_mozconfig">建立 mozconfig</h3>
-
-<p>接著,我們要在 <code>mozilla-central</code> 目錄下新增一個檔案 <code>mozconfig</code> 來設定建置系統去編譯 Boot to Gecko client 程式而不是 Firefox:</p>
-
-<pre>mk_add_options MOZ_OBJDIR=../build
-mk_add_options MOZ_MAKE_FLAGS="-j9 -s"
-
-ac_add_options --enable-application=b2g
-ac_add_options --disable-libjpeg-turbo
-
-# This option is required if you want to be able to run Gaia's tests
-ac_add_options --enable-tests
-
-# turn on mozTelephony/mozSms interfaces
-# Only turn this line on if you actually have a dev phone
-# you want to forward to. If you get crashes at startup,
-# make sure this line is commented.
-#ac_add_options --enable-b2g-ril</pre>
-
-<h3 id="建置(編譯)">建置(編譯)</h3>
-
-<p>現在我們已經準備好要在目錄 <code>mozilla-central</code> 裡面、透過下面的指令來編譯 desktop client。</p>
-
-<pre class="brush: bash language-html"><code class="language-bash">./mach build</code></pre>
-
-<p>編譯好的 client 會被放在 <code>../build/dist </code>目錄下 (基本上是依照 <code>mozconfig </code>檔案裡面的 <code>MOZ_OBJDIR 參數</code>所指定的值)。</p>
-
-<h2 id="執行_desktop_client">執行 desktop client</h2>
-
-<p>預設 desktop client 會顯示空的畫面,因為它並不知道一開始要載入哪個 web app 來當做系統 app。系統 apps 和 Firefox OS 中預設會有的 apps 就被稱為 Gaia。</p>
-
-<h3 id="下載_Gaia">下載 Gaia</h3>
-
-<p>第一次下載 Gaia、讓我們從 GitHub 上複製原始碼的倉儲 (repository):</p>
-
-<pre> git clone https://github.com/mozilla-b2g/gaia</pre>
-
-<p>為了更新成 Gaia 的一個已存在的版本,我們可以從 GitHub 拉最新的更新:</p>
-
-<pre>cd gaia
-git pull
-</pre>
-
-<h3 id="產生_profile">產生 profile</h3>
-
-<p>接著我們需要設定 desktop client 中 Gaia 的 apps。這包括包裝行動裝置上也有的 Gaia apps,以及設定系統 apps 的權限。我們透過產生一個 profile 來做這些事情。接著的指令會做這些事情:新的 profile 包含一個客製的擴充以及其他 B2G 正常運作所需的設定。所以在 <code>gaia</code> 目錄裡執行下面的指令:</p>
-
-<pre>cd gaia
-make
-</pre>
-
-<p>這應該會在 <code>gaia </code>目錄下面建立一個 <code>profile</code> 目錄。</p>
-
-<h3 id="在_Linux_上執行">在 Linux 上執行</h3>
-
-<p>只要在啟動 <code>b2g</code> 執行檔的時候加上 profile 參數,就可以使用我們剛剛產生的 profile 來啟動 desktop client 。如果是自己編譯的話,執行檔的位置會在早先下載下來的 tarball 裡面,如果是自己編譯的話,就會在 <code>../build/dist/bin 的目錄裡。</code></p>
-
-<pre>.../b2g -profile gaia/profile
-</pre>
-
-<p>您可能會碰到惱人的 rendering 問題。只要在 <code>gaia/profile/prefs.js</code> 裡面加上下面這行就可以避開這個問題:</p>
-
-<pre>user_pref("layers.acceleration.disabled", true);
-</pre>
-
-<h3 id="在_Mac_上執行">在 Mac 上執行</h3>
-
-<p>在 Mac 上,<code>b2g 執行檔的位置和需要指定 profile 的絕對路徑,因此指令比較複雜:</code></p>
-
-<pre>.../B2G.app/Contents/MacOS/b2g -profile /full/path/to/gaia/profile
-</pre>
-
-<h2 id="指令的選項(或參數)">指令的選項(或參數)</h2>
-
-<p>在使用 desktop client 時,你可以使用一些指令的參數來調校執行時的體驗。您可以用 <code>-help</code> 這個參數來列出參數的列表。這一節涵蓋一些特別的參數。</p>
-
-<h3 id="option-screen" name="option-screen">明確指定螢幕大小</h3>
-
-<p>您可以用 <code>--screen</code> 來指定您想要模擬的行動裝置的螢幕大小:</p>
-
-<pre>b2g --screen=<em>&lt;width&gt;</em>x<em>&lt;height&gt;</em>[@<em>&lt;dpi&gt;</em>]</pre>
-
-<p><em>&lt;width&gt;</em>, <em>&lt;height&gt;</em>, and <em>&lt;dpi&gt;</em> 都是相當不用解釋的參數:行動裝置以 pixels 為單位的長和寬以及 DPI 解析度。舉例來說:</p>
-
-<pre>b2g --screen=320x480
-b2g --screen=320x480@160
-</pre>
-
-<p>或者,您可以使用某些行動裝置的名字來模擬他們的螢幕大小和解析度:</p>
-
-<ul>
- <li><code>iphone</code></li>
- <li><code>ipad</code></li>
- <li><code>nexus_s</code></li>
- <li><code>galaxy_nexus</code></li>
- <li><code>galaxy_tab</code></li>
- <li><code>wildfire</code></li>
- <li><code>tattoo</code></li>
- <li><code>salsa</code></li>
- <li><code>chacha</code></li>
-</ul>
-
-<h3 id="option-console" name="option-console">開啟 JavaScript console</h3>
-
-<p>在您開啟 B2G 的 desktop client 時,您可以藉由加上 <code>-jsconsole</code> 這個記號來開啟<br>
- JavaSCript console。在編譯之後,只要:</p>
-
-<pre>.../b2g -jsconsole -profile <em>/path/to/your/profile</em></pre>
-
-<p>如果您已經在 Mac 上安裝了 nightly 版本的話,您可以照著下面的指令:</p>
-
-<pre>/Applications/B2G.app/Contents/MacOS/b2g -jsconsole -profile <em>/path/to/your/profile</em></pre>
-
-<h3 id="option-runapp" name="option-runapp">在 B2G 啟動時,指定開啟一個應用程式</h3>
-
-<p>您現在可以指定一個應用程式在 b2g desktop client 開始運作時,自動執行起來。這會在其他系統程式被掛載起來之後,馬上讓指定的應用程式被執行起來。只要加上 <code>--runapp</code> 這個參數、後面在加上要執行應用程式的名字,就可以做到了。如下:</p>
-
-<pre> .../b2g -profile <em>/path/to/your/gaia/profile</em> --runapp email</pre>
-
-<p>在尋找要執行的 app 之前,指定的名字要被正規化為全部小寫、且不能帶有 - 和空白的符號。接著這個正規化過的名字會被拿來和 app 的 manifest 的名字做比較。</p>
-
-<p>舉例來說,現在 email app 的名字是「E-mail」,但是因為正規化的效果, <code>--runapp</code> <code>email</code> 這個參數是 ok<u> 且</u>可以執行的。</p>
-
-<p>如果您加了 <code>--runapp</code> 參數但是卻沒有帶後面的 app 名字、或是帶了空的名字的話,b2g client 會列出一串列表,其中包括已知的應用程式和簡短的使用訊息。</p>
-
-<div class="note">
-<p><strong>Note:</strong> 用 <code>--runapp</code> 參數會有關閉螢幕鎖的副作用,且不會再度啟用螢幕鎖。這是假設您不會用這個指令加上 profile 來測試螢幕鎖,否則您會重新打開這個選項。如果這個行為會造成問題的話,也歡迎提供 patch 來改變這個它。</p>
-</div>
-
-<h2 id="Usage_tips">Usage tips</h2>
-
-<p>這一節提供一些在使用 B2G desktop client 時,有幫助的技巧。</p>
-
-<ul>
- <li>ESC 鍵提供了和 "back" 一樣的功能。</li>
- <li>Home 鍵提供了和 "home" 按鈕一樣的功能;如果您用的是 Mac 的話,Home 鍵是 Fn+← (Fn + 左鍵)。</li>
-</ul>
-
-<h2 id="Next_steps">Next steps</h2>
-
-<p>現在您有一個執行 Boot to Gecko 的 desktop 版本了,您可以在上面測試、開發以及做其他事情:</p>
-
-<ul>
- <li><a href="/en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko">在 Boot to Gecko 上除錯</a></li>
- <li><a href="/en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko">測試 Boot to Gecko</a></li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/using_the_b2g_emulators/index.html b/files/zh-tw/archive/b2g_os/using_the_b2g_emulators/index.html
deleted file mode 100644
index 6dccacbe06..0000000000
--- a/files/zh-tw/archive/b2g_os/using_the_b2g_emulators/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: 使用 B2G 模擬器
-slug: Archive/B2G_OS/Using_the_B2G_emulators
-translation_of: Archive/B2G_OS/Using_the_B2G_emulators
----
-<p>這篇文章提供簡潔的指南,包括使用 Boot to Gecko 模擬器時需要知道的一些重要的事情。這不意味著這是一個完整的使用手冊;相反地,它只告訴您一些有用的事情,讓您不必自己去學。</p>
-<p>這篇指南假設您已經編譯了一個模擬器;如果您還沒編譯的話,請跳回「<a href="/en/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">建置和安裝 Boot to Gecko</a>」!</p>
-<h2 id="關於_B2G_模擬器">關於 B2G 模擬器</h2>
-<p>有兩種 B2G 模擬器。第一種是 x86 行動裝置的模擬器,使用 "emulator-x86" 設定以 <code>config.sh</code> 編譯而成。雖然這遠比模擬 ARM 處理器快多了,但是它執行的沒有那麼接近一個實體行動裝置的結果。而第二種則是 ARM 行動裝置的模擬器,使用 "emulator" 的設定編譯。</p>
-<p>一旦你選擇、設定及編譯模擬器,就使用者而言,剩下來要做的事情都是一樣的,所以這篇導覽剩下的共同部分是兩種模擬器都適用的。</p>
-<div class="note">
- <strong>Note:</strong> 在 Mac OS X 上,B2G 模擬器需要 Core 2 Duo 或更快 CPU;也就是說,一個相容於 Mac OS X 10.7 "Lion" 的系統。你不必一定得使用 Lion,只是要在和 Lion 相容的系統上面執行就可以了。</div>
-<h2 id="啟動模擬器">啟動模擬器</h2>
-<p>執行下列指令,就可以打開 B2G 模擬器了:</p>
-<pre>./run-emulator.sh
-</pre>
-<p>這個指令將會會您操作所有模擬器的起始作業。現在就耐心等模擬器啟動以及 Boot to Gecko 在上面開始運作起來。啟動會花好幾分鐘,所以請耐心等候。</p>
-<h2 id="當模擬器掛了">當模擬器掛了</h2>
-<p>有時候模擬器會啟動失敗。歡迎來到尖端科技的前緣。這裡有一些派的上用場的技巧,可用來解決問題。</p>
-<h3 id="確定_adb_server_是不是還活著">確定 adb server 是不是還活著</h3>
-<p>adb server 處理與模擬的行動裝置之間的互動,而這裡常常出問題的原因是 adb server 不是沒在執行就是故障。</p>
-<div class="note">
- <p><strong>Note:</strong> 舉例來說,如果您使用 B2G 版本所編譯出的 <code>adb</code> 的話,它的位置會在 <code>$B2G/out/host/&lt;platform&gt;/bin</code> 目錄裡。在 Mac 上的話,則是在 <code>$B2G/out/host/darwin-x86/bin</code> 目錄下。</p>
-</div>
-<p>使用下列指令來看 <code>adb</code> 是否還在運作中:</p>
-<pre>ps aux | grep adb
-</pre>
-<p>If it's there, do this to kill it, because it's probably not working correctly.</p>
-<pre>adb kill-server
-</pre>
-<p>If it's not there, do this:</p>
-<pre>adb start-server
-</pre>
-<p>接著試試看再執行模擬器一次看看。如果還是沒辦法運作的話, 就是時候到 irc.mozilla.org 使用 <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a> 搜尋尋求幫助了。</p>
-<h3 id="抹掉_configuration_設定值">抹掉 configuration 設定值</h3>
-<p>有時候,在模擬的行動裝置上使用過期的設定檔的設定值也會讓它暴走。你可以砍掉 indexedDB 資料庫來解決這個問題,如下:</p>
-<ol>
- <li>確定 adb 在執行中,如同 <a href="#Make_sure_the_adb_server_is_running">Make sure the adb server is running</a> 中所描述的一般。</li>
- <li>啟動模擬器。</li>
- <li>先打開電腦裡的 terminal,然後切換到編譯模擬器的主目錄 (root code build directory),接著打:「<code>out/host/&lt;platform&gt;/bin/adb -e shell</code>」;在 Mac 上使用「<code>out/host/darwin-x86/bin/adb -e shell</code>」。</li>
- <li>現在你已經在 adb 的 shell 裡面、且可以直接在模擬器的行動 裝置上執行 shell 指令 (commands)了。讓我們使用「<code>stop b2g</code>」來停止裝置上的 B2G。</li>
- <li>刪除 indexedDB 資料庫:<code>rm -rf /data/local/indexedDB</code>。</li>
- <li>在模擬的行動裝置上重新啟動 B2G:<code>start b2g</code>。</li>
-</ol>
-<p>希望此時您所打開 Gaia 介面一切都恢復正常。</p>
-<h2 id="設定模擬器">設定模擬器</h2>
-<p>如果您想要調整模擬器更接近您想要模擬的裝置的話,有幾個選項可以改改看。這一節提供一些關於「如何調校」的基本資訊。您可以編輯 <code>run-emulator.sh</code> (觀念上還是複製一份來編輯)這個 script 來調校模擬器的設定。這裡指會討論到一些最常用到的參數;您可以 <a class="external" href="http://www.qemu.org/" title="http://www.qemu.org/">連到 qemu 網站</a> 來看其他部分的細節。</p>
-<div class="note">
- <strong>Tip:</strong> 您可以為每個想要模擬的裝置建立一個 <code>run-emulator.sh 的</code>複製版本;這會您比較容易以不同的設定啟動模擬器。</div>
-<h3 id="改變外觀">改變外觀</h3>
-<p>模擬器預設會以 HVGA 模式啟動;VGA 的一半、也就是 320x480 pixels 的外觀。在啟動時,我們可以給模擬器加上 -skin 的參數來指定外觀。您可以編輯 <code>run-emulator.sh 來</code>切換成不同的顯示模式來執行模擬器。可以使用的外觀列表如下:</p>
-<ul>
- <li>HVGA (320x480)</li>
- <li>QVGA (240x320)</li>
- <li>WQVGA (240x400)</li>
- <li>WQVGA432 (240x432)</li>
- <li>WSVGA (1024x600)</li>
- <li>WVGA800 (480x800)</li>
- <li>WVGA854 (480x854)</li>
- <li>WXGA720 (1280x720)</li>
- <li>WXGA800 (1280x800)</li>
-</ul>
-<p>外觀的存放位置在 <code>B2G/development/tools/emulator/skins</code> 目錄。外觀的格式很簡單;如果您打開來看的話,他們只是一些資料夾,裝著一些使用者介面物件的 PNG 檔案以及一個描述使用者介面的配置及螢幕區域的文字檔 <code>layout。如果需要建立客製化的外觀的話,是還蠻簡單的。</code></p>
-<h3 id="改變記憶體的大小">改變記憶體的大小</h3>
-<p>另一個您可能想要/需要改變的選項就是行動裝置的記憶體大小。預設是 512MB;然而,如果您要模擬的行動裝置的記憶體比較大或小的話,或許對您而言,將記憶體調整成一樣的大小是很重要的,這樣才能確定您的 app 會在您想要執行的基礎裝置上執行。您可以將 <code>-memory</code> 參數的數值修改成您需要的數字(以 MB 為單位),就可以改變執行時的記憶體大小。除了預設的 512MB 之外,您可能會想要以 256MB 和 1024MB 來做測試。</p>
-<p>而如果想要改變模擬裝置的儲存容量大小的話 (就是 local 資料的儲存空間,像是行動電話的內建快閃記憶體或是電腦的硬碟),可以改變 <code>-partition-size</code> 參數的數值。預設是 512MB,但是您可以改成任何大小 (以 MB 為單位)來模擬想要測試的行動裝置。</p>
-<h3 id="網路連線">網路連線</h3>
-<p>如果因為某些原因,您沒辦法將您的模擬器連上網際網路 (internet)的話,您可以從命令提示字元來執行下面的指令 (commandline):</p>
-<pre>adb shell setprop net.dns1 10.0.2.3</pre>
diff --git a/files/zh-tw/archive/b2g_os/web_telephony_api/index.html b/files/zh-tw/archive/b2g_os/web_telephony_api/index.html
deleted file mode 100644
index c9e0c9516b..0000000000
--- a/files/zh-tw/archive/b2g_os/web_telephony_api/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Web Telephony
-slug: Archive/B2G_OS/Web_Telephony_API
-translation_of: Archive/B2G_OS/Web_Telephony_API
----
-<p>WebTelephony API 可透過 JavaScript 程式碼,讓網頁內容處理一般音訊電話。</p>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozTelephony" title="Returns a Telephony object you can use to initiate and control telephone calls from the browser."><code>window.navigator.mozTelephony</code></a> 即可存取此 API。另請參閱下列的完整介面列表:</p>
-<h2 id="DOM_介面">DOM 介面</h2>
-<ul>
- <li>{{domxref("window.navigator.mozTelephony")}}</li>
- <li><a href="/en-US/docs/Web/API/Telephony"><code>Telephony</code></a></li>
- <li><a href="/en-US/docs/Web/API/TelephonyCall"><code>TelephonyCall</code></a></li>
- <li><a href="/en-US/docs/Web/API/CallEvent"><code>CallEvent</code></a></li>
-</ul>
-<h2 id="範例程式碼與介紹">範例程式碼與介紹</h2>
-<div>
- <ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Guide/Telephony/Introduction_to_WebTelephony">WebTelephony 介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Guide/Telephony/Using_the_Telephony_API">使用 Telephony API</a></li>
- </ul>
-</div>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li><a class="link-https" href="https://wiki.mozilla.org/WebAPI/WebTelephony">WebTelephony API</a> (設計文件)</li>
-</ul>
diff --git a/files/zh-tw/archive/b2g_os/writing_apps_for_boot_to_gecko/index.html b/files/zh-tw/archive/b2g_os/writing_apps_for_boot_to_gecko/index.html
deleted file mode 100644
index a38efda16e..0000000000
--- a/files/zh-tw/archive/b2g_os/writing_apps_for_boot_to_gecko/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: 寫 Boot to Gecko 的 apps
-slug: Archive/B2G_OS/Writing_apps_for_Boot_to_Gecko
-translation_of: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS
----
-<p>B2G apps 不外乎是安裝於 B2G 手機的 <a href="/en/Apps" title="https://developer.mozilla.org/en/Apps">Open Web apps</a>。</p>
-<ul>
- <li><a href="/en/Apps/Getting_Started" title="Getting started with making apps">從製作 apps 開始上手</a>。</li>
- <li><a href="/en/Mozilla/Boot_to_Gecko/Writing_a_web_app_for_B2G" title="Writing a web app">寫一個 B2G 的 Web app。</a></li>
-</ul>
-<div class="note">
- <strong>Note:</strong> B2G 現在和 Fennec 用相同的 UA (User Agent) 來分辨。例如:"Mozilla/5.0 (Android; Mobile; rv:15.0) Gecko/15.0 Firefox/15.0a1".</div>
diff --git a/files/zh-tw/archive/css3/index.html b/files/zh-tw/archive/css3/index.html
deleted file mode 100644
index 85374e3a65..0000000000
--- a/files/zh-tw/archive/css3/index.html
+++ /dev/null
@@ -1,584 +0,0 @@
----
-title: CSS3
-slug: Archive/CSS3
-translation_of: Archive/CSS3
----
-<p><span class="seoSummary"><strong>CSS3</strong> 是<em>層疊樣式表語言</em>的最新版且目標是為了延伸 CSS2.1。它有許多久違的新東西,像是圓角、陰影、<a href="/en-US/docs/Web/Guide/CSS/Using_CSS_gradients" title="Using CSS gradients">漸層</a>、或是<a href="/en-US/docs/Web/Guide/CSS/Using_CSS_animations" title="CSS animations">動畫</a>, 還有像是<a href="/en-US/docs/Web/Guide/CSS/Using_multi-column_layouts" title="Using CSS multi-column layouts">多列</a>, 有彈性的盒子或是網格佈局之類的。</span> 實驗的部分會有供應商前綴且應該在生產環境中盡可能地避免,使用那些未來可能會改變的語法或語義都要格外小心。</p>
-
-<h2 id="模組及標準化程序">模組及標準化程序</h2>
-
-<p>CSS Level 2 需要 9 年(2002年八月~2011年六月),以達到建議的狀態。 This was due to the fact that a few secondary features hold back the whole specification. In order to accelerate the standardization of non-problematic features, the <a class="external" href="http://www.w3.org/blog/CSS/" title="http://www.w3.org/blog/CSS/">CSS Working Group</a> of the W3C, in a decision referred as the <a class="external" href="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/modules" title="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/modules">Beijing doctrine</a> , divided CSS in smaller components called <em>modules</em> . Each of these modules is now an independent part of the language and moves towards standardization at its own pace. While some modules are already W3C Recommendations, other still are early Working Drafts. New modules are also added when new needs are identified.</p>
-
-<p><a href="/@api/deki/files/6120/=CSS_Modules_and_Snapshots.png" title="CSS_Modules_and_Snapshots.png"><img alt="CSS Modules and Snapshots as defined since CSS3" class="internal lwrap" src="/files/3623/CSS_Modules_and_Snapshots.png" style="float: left; width: 550px;"> </a> Formally, there is no CSS3 standard <em>per se</em> . Each module being standardized independently, the standard CSS consists of CSS2.1 amended and extended by the completed modules, not necessary all with the same level number. At each point of time, a snapshot of the CSS standard can be defined, listing CSS2.1 and the mature modules.</p>
-
-<p>The W3 consortium periodically publishes such snapshots, like in <a class="external" href="http://www.w3.org/TR/css-beijing/" title="http://www.w3.org/TR/css-beijing/">2007</a> or <a class="external" href="http://www.w3.org/TR/css-2010/" title="http://www.w3.org/TR/css-2010/">2010.</a></p>
-
-<p>Though today no module with a level greater than 3 is standardized, this will change in the future. Some modules, like Selectors 4 or CSS Borders and Backgrounds Level 4 already have an Editor's Draft, though they haven't yet reached the First Published Working Draft status.</p>
-
-<h2 id="CSS_模組狀態" style="">CSS 模組狀態</h2>
-
-<h3 id="穩定模組">穩定模組</h3>
-
-<p>A few CSS modules are already fairly stable and have reached one of the three recommendation level of the CSSWG: Candidate Recommendation, Proposed Recommendation or Recommendation. These can be used without prefixed and are pretty stable, though a few features can still be dropped at the Candidate Recommendation stage.</p>
-
-<p>These modules extend and amend the CSS2.1 specification which build the core of the specification. Together with it, they are the current snapshot of the CSS specification.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td class="thirdColumn greenBg"><strong>{{ SpecName("CSS3 Colors", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Colors") }}  自 2011 年 6 月 7 號起</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>增加 {{ cssxref("opacity") }} 屬性,還有 <code>hsl</code><code>()</code>, <code>hsla()</code>, <code>rgba()</code> <code>和 rgb()</code> 函式來創造 {{cssxref("&lt;color&gt;")}} 值。它也定義了關鍵字 <code>currentColor</code> 唯有效的顏色。</p>
-
- <p>現在透明色是一個真實的顏色(因為支援了 alpha 通道)。若想要使用透明度,請使用 <code>rgba(0,0,0,0.0)</code>。</p>
-
- <p><a href="http://www.w3.org/TR/CSS2/ui.html#system-colors">關鍵字 system-color 不應該繼續使用</a>,因為他已經被棄用。</p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Selectors", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Selectors") }} 自 2011 年 9 月 29 號起</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Adds:</p>
-
- <ul>
- <li>Substring matching attribute selectors, <code>E[attribute^="value"]</code> , <code>E[attribute$="value"]</code> , <code>E[attribute*="value"]</code> .</li>
- <li>New pseudo-classes: {{ cssxref(":target") }}, {{ cssxref(":enabled") }} and {{ cssxref(":disabled") }}, {{ cssxref(":checked") }}, {{ cssxref(":indeterminate") }}, {{ cssxref(":root") }}, {{ cssxref(":nth-child") }} and {{ cssxref(":nth-last-child") }}, {{ cssxref(":nth-of-type") }} and {{ cssxref(":nth-last-of-type") }}, {{ cssxref(":last-child") }}, {{ cssxref(":first-of-type") }} and {{ cssxref(":last-of-type") }}, {{ cssxref(":only-child") }} and {{ cssxref(":only-of-type") }},{{ cssxref(":empty") }}, and {{ cssxref(":not") }}.</li>
- <li>Pseudo-elements are now characterized by two colons rather then one: <code>:after</code> becomes {{ cssxref("::after") }}, <code>:before</code> becomes {{ cssxref("::before") }}, <code>:first-letter</code> becomes {{ cssxref("::first-letter") }}, and <code>:first-line</code> becomes {{ cssxref("::first-line") }}.</li>
- <li>The new <em>general sibling combinator</em> ( <code>h1~pre</code> ).</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>The <a class="external" href="http://dev.w3.org/csswg/selectors4/" title="http://dev.w3.org/csswg/selectors4/">next iteration of the Selectors specification</a> is already in progress, though it still hasn't reached the First Public Working Draft stage.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Namespaces", "", "") }}</strong></td>
- <td>
- <p>{{ Spec2("CSS3 Namespaces") }} 自 2011 年 9 月 29 日起</p>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Adds the support for the XML Namespaces by defining the notion of <em>CSS qualified name</em> , using the ' <code>|</code> ' syntax and adding the {{ cssxref("@namespace") }} CSS at-rule.</p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Media Queries", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Media Queries") }} 自 2012 年 6 月 19 日起</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Extends the former media type ( <code>print</code>, <code>screen</code>, <code>…</code> ) to a full language allowing <a href="/en/CSS/Media_queries" title="en/CSS/Media_queries">queries on the device media capabilities</a> like <code>only screen and (color)</code> .</p>
-
- <p>Media queries are not only used in CSS document but also in some attributes of HTML Elements, like the {{ htmlattrxref("media","link") }} attribute of the {{ HTMLElement("link") }} element.</p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>The <a href="http://dev.w3.org/csswg/mediaqueries4" title="http://dev.w3.org/csswg/mediaqueries4">next iteration of this specification</a> is in the work, allowing to tailor a Web site regarding the input methods available on the user agent, with new media features like <code>hover</code> or <code>pointer</code>. Detection of EcmaScript support, using the <code>script</code> media features is also proposed.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Style", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Style") }} 自 2013 年 11 月 7 日起</td>
- </tr>
- <tr>
- <td colspan="2">Formally defines the syntax of the content of the HTML <a href="/en/HTML/Global_attributes#attr-style" title="en/HTML/Global_attributes#attr-style"> <code>style</code> </a> global attribute.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Backgrounds", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Backgrounds") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Adds:</p>
-
- <ul>
- <li>Support, on backgrounds, for any type of {{cssxref("&lt;image&gt;")}}, and not only for <code>uri()</code> defined ones.</li>
- <li>Support for multiple background images.</li>
- <li>The {{ cssxref("background-repeat") }} <code>space</code> and <code>round</code> values, and for the 2-value syntax of this CSS property.</li>
- <li>The {{ cssxref("background-attachment") }} <code>local</code> value.</li>
- <li>The CSS {{ cssxref("background-origin") }}, {{ cssxref("background-size") }}, and {{ cssxref("background-clip") }} properties.</li>
- <li>Support for curved border corners, with the CSS {{ cssxref("border-radius") }}, {{ cssxref("border-top-left-radius") }}, {{ cssxref("border-top-right-radius") }}, {{ cssxref("border-bottom-left-radius") }}, and {{ cssxref("border-bottom-right-radius") }} properties.</li>
- <li>Support for the use of an {{cssxref("&lt;image&gt;")}} as the border with the CSS {{ cssxref("border-image") }}, {{ cssxref("border-image-source") }}, {{ cssxref("border-image-slice") }}, {{ cssxref("border-image-width") }}, {{ cssxref("border-image-outset") }}, and {{ cssxref("border-image-repeat") }} properties.</li>
- <li>Support for shadows of the element with the CSS {{ cssxref("box-shadow") }} property.</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>The <a class="external" href="http://dev.w3.org/csswg/css4-background/" title="http://dev.w3.org/csswg/css4-background/">CSS4 iteration of the Backgrounds and Borders specification</a> is already in progress, though it still hasn't reached the First Public Working Draft stage, it plans to add the ability to clip a border (with the CSS {{ cssxref("border-clip") }}, {{ cssxref("border-clip-top") }}, {{ cssxref("border-clip-right") }}, {{ cssxref("border-clip-bottom") }}, and {{ cssxref("border-clip-left") }} properties) or to control the shape of the border in a corner (using the CSS {{ cssxref("border-corner-shape") }} property).</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Multicol", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Multicol") }}</td>
- </tr>
- <tr>
- <td colspan="2">Adds support for easy multi-column layouts using the CSS {{ cssxref("columns") }}, {{ cssxref("column-count") }}, {{ cssxref("column-fill") }}, {{ cssxref("column-gap") }}, {{ cssxref("column-rule") }}, {{ cssxref("column-rule-color") }}, {{ cssxref("column-rule-style") }}, {{ cssxref("column-rule-width") }}, {{ cssxref("column-span") }}, {{ cssxref("column-width") }}, {{ cssxref("break-after") }}, {{ cssxref("break-before") }}, and {{ cssxref("break-inside") }}.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table" style="width: 100%;">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Speech", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Speech") }}</td>
- </tr>
- <tr>
- <td colspan="2">Defines the <code>speech</code> media type, an aural formatting model and numerous properties specific for speech-rendering user agents.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Images", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Images") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Defines the {{cssxref("&lt;image&gt;")}} data type.</p>
-
- <p>Extends the <code>url()</code> syntax to support image slices using media fragments.</p>
-
- <p>Adds:</p>
-
- <ul>
- <li>The <code>dppx</code> unit to the {{cssxref("&lt;resolution&gt;")}} data type.</li>
- <li>The <code>image()</code> function as a more flexible alternative to <code>url()</code> to define an image from an url.<br>
- <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the <code>image()</code> function may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- <li>Support for <code>linear-gradient()</code>, <code>repeating-linear-gradient()</code>, <code>radial-gradient()</code> and <code>repeating-radial-gradient()</code>.</li>
- <li>The ability to define how a replaced element should fit in its element, using the CSS {{ cssxref("object-fit") }} property.<br>
- <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the {{ cssxref("object-fit") }} and property may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- <li>The ability to override the resolution and orientation of an external image using the CSS {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties.<br>
- <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>The <a href="#Images_(Level_4)">CSS Image Values and Replaced Content Level 4</a> which will supersede CSS Image Level 3 is in development and is a {{Spec2("CSS4 Images")}}.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Values", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Values") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Makes <code>initial</code> and <code>inherit</code> keywords usable on any CSS property.</p>
-
- <p>Formally defines the CSS data types of CSS 2.1, that were implicitely defined by their grammar token and some textual precisions.</p>
-
- <p>Adds:</p>
-
- <ul>
- <li>Definition for new font-relative length units: <code>rem</code> and <code>ch</code> .</li>
- <li>Definition for viewport-relative length units: <code>vw</code>, <code>vh</code>, <code>vmax</code>, and <code>vmin</code> .</li>
- <li>Precision about the real size of the absolute length units, which are not really absolute, but defined in relation with the <em>reference pixel</em> .</li>
- <li>Definition for {{ cssxref("&lt;angle&gt;") }}, {{cssxref("&lt;time&gt;")}}, {{cssxref("&lt;frequency&gt;")}}, {{cssxref("&lt;resolution&gt;")}}.</li>
- <li>Normative value to the definition of {{cssxref("&lt;color&gt;")}}, {{cssxref("&lt;image&gt;")}}, and {{ cssxref("&lt;position&gt;") }}.</li>
- <li>Definition for the {{ cssxref("calc", "calc()") }}, {{ cssxref("attr", "attr()")}}, and <code>toggle()</code> functional notations.<br>
- <em><strong>At risk:</strong> due to insufficient browser support, standardization of the <code>calc()</code>, <code>attr()</code>, and <code>toggle()</code> functional notations may be postponed to </em> <em>the next iteration of this module</em><em>.</em></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>Several types definition, like <code>&lt;ident&gt;</code> and <code>&lt;custom-ident&gt;</code>, have been deferred to CSS Values and Units Module Level 4.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Flexbox", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Flexbox") }}</td>
- </tr>
- <tr>
- <td colspan="2">Add a flexbox layout to the CSS {{ cssxref("display") }} property and several new CSS properties to control it: {{ cssxref("flex") }}, {{ cssxref("flex-align") }}, {{ cssxref("flex-direction") }}, {{ cssxref("flex-flow") }}, {{ cssxref("flex-item-align") }}, {{ cssxref("flex-line-pack") }}, {{ cssxref("flex-order") }}, {{ cssxref("flex-pack") }}, and {{ cssxref("flex-wrap") }}.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Conditional", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Conditional") }}</td>
- </tr>
- <tr>
- <td colspan="2">Adds features for conditional processing of parts of style sheets, conditioned on capabilities of the browser or the document the style sheet is being applied to. It consists mainly in allowing nested at-rules inside {{ cssxref("@media") }} and the adding of a new CSS at-rule, {{ cssxref("@supports") }}, and a new DOM method {{domxref("CSS.supports()")}}.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Text-decoration", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Text-decoration") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Extends:</p>
-
- <ul>
- <li>the CSS {{ cssxref("text-decoration") }} property by making it a shorthand for the CSS {{ cssxref("text-decoration-line") }}, {{ cssxref("text-decoration-color") }}, and {{ cssxref("text-decoration-style") }} properties. And adds the {{ cssxref("text-decoration-skip") }}, and {{ cssxref("text-underline-position") }} properties.</li>
- </ul>
-
- <p>Adds:</p>
-
- <ul>
- <li>Support for East-Asian-script emphasis marks with the CSS {{ cssxref("text-emphasis") }}, {{ cssxref("text-emphasis-style") }}, {{ cssxref("text-emphasis-color") }}, and {{ cssxref("text-emphasis-position") }} properties.</li>
- <li>Support for script shadows with the CSS {{ cssxref("text-shadow") }} property.</li>
- </ul>
-
- <p>Precises:</p>
-
- <ul>
- <li>The paint order of the decorations.</li>
- </ul>
-
- <p><em><strong>At risk:</strong> due to insufficient browser support, standardization of the <code>text-decoration-skip</code>, line positioning rules and the ability to place both emphasis marks and ruby above the same base text may be postponed to </em> <em>the next iteration of this module</em><em>.</em></p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Fonts", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Fonts") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Amends the CSS2.1 Font matching algorithm to be closer to what is really implemented.</p>
-
- <p>Adds:</p>
-
- <ul>
- <li>Support for downloadable fonts via the CSS {{ cssxref("@font-face") }} at-rule.</li>
- <li>The control of the contextual inter-glyph spacing via the CSS {{ cssxref("font-kerning") }} property.</li>
- <li>The choice of language-specific glyphs via the CSS {{ cssxref("font-language-override") }} property.</li>
- <li>The choice of glyphs with specific OpenType features via the CSS {{ cssxref("font-feature-settings") }} property.</li>
- <li>The control of the aspect ratio to use when fallback fonts are selected via the CSS {{ cssxref("font-size-adjust") }} property.</li>
- <li>The choice of alternative font faces using the CSS {{ cssxref("font-stretch") }}, {{ cssxref("font-variant-alternates") }}, {{ cssxref("font-variant-caps") }}, {{ cssxref("font-variant-east-asian") }}, {{ cssxref("font-variant-ligatures") }}, {{ cssxref("font-variant-numeric") }}, and {{ cssxref("font-variant-position") }} properties. It also extends the related CSS {{ cssxref("font-variant") }} shorthand property and introduces the {{ cssxref("@font-features-values") }} at-rule.</li>
- <li>The control of the automatic generation of an oblique or bold face when none are found via the CSS {{ cssxref("font-synthesis") }} property.</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Syntax", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Syntax") }}</td>
- </tr>
- <tr>
- <td colspan="2">Precises how charsets are determined; minor changes in parsing and tokenization algorithms.</td>
- </tr>
- </tbody>
-</table>
-
-<h3 id="Modules_in_the_refining_phase">Modules in the refining phase</h3>
-
-<p>Specifications that are deemed to be in the <em>refining phase</em> are already fairly stable. Though changes are still expected, they shouldn't create incompatibilities with current implementations; they should mainly define behavior in edge cases.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Basic UI", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Basic UI") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Adds:</p>
-
- <ul>
- <li>The ability to tweak the box model using the CSS {{ cssxref("box-sizing") }} property.<br>
- <strong><em>At risk:</em> </strong> <em> due to insufficient browser support, standardization of the <code>padding</code><code>-box</code> value may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- <li>Allow the styling of forms according their content using the CSS {{ cssxref(":indeterminate") }}, {{ cssxref(":default") }}, {{ cssxref(":valid") }}, {{ cssxref(":invalid") }}, {{ cssxref(":in-range") }}, {{ cssxref(":out-of-range") }}, {{ cssxref(":required") }}, {{ cssxref(":optional") }}, {{ cssxref(":read-only") }}, and {{ cssxref(":read-write") }} pseudo-classes and the {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} pseudo-elements.<br>
- <em><strong>At risk:</strong> due to insufficient browser support, standardization of the pseudo-elements {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- <li>Support for icons, defined by the CSS {{ cssxref("icon") }} property simultaneously with the new <code>icon</code> value of the CSS {{ cssxref("content") }} property.<br>
- <em><strong>At risk:</strong> due to insufficient browser support, standardization of the {{ cssxref("icon") }} property and the <code>icon</code> value may be postponed to CSS4. </em></li>
- <li>Support for the CSS {{ cssxref("outline-offset") }} property giving more control on the position of the outline.</li>
- <li>Support for the CSS {{ cssxref("resize") }} property allowing Web authors to control if and how elements should be resized.</li>
- <li>Support for the CSS {{ cssxref("text-overflow") }} property defining how text overflows, if needed.<br>
- <em><strong>At risk:</strong> due to insufficient browser support, the 2-value syntax of this property as well as the support for {{cssxref("&lt;string&gt;")}} values may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- <li>The ability to define the hotspot of a cursor as well as the new <code>none</code>, <code>context-menu</code>, <code>cell</code>, <code>vertical-text</code>, <code>alias</code>, <code>copy</code>, <code>no-drop</code>, <code>not-allowed</code>, <code>nesw-</code><code>resize</code>, <code>nwse-</code><code>resize</code>, <code>col-resize</code>, <code>row-resize</code>, <code>all-scroll</code>, <code>zoom-in</code>, <code>zoom-out</code>, extending the {{ cssxref("cursor") }} property.</li>
- <li>The ability to specify the sequential navigation order (that is the <em>tabbing order</em> ) using the CSS {{ cssxref("nav-index") }}, {{ cssxref("nav-up") }}, {{ cssxref("nav-right") }}, {{ cssxref("nav-left") }}, {{ cssxref("nav-down") }} properties.<br>
- <em><strong>At risk:</strong> due to insufficient browser support, standardization of the navigation properties may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- <li>The ability to control the usage of an IME editor, using the CSS {{ cssxref("ime-mode") }} property.<br>
- <em><strong>At risk:</strong> due to insufficient browser support, standardization of the {{ cssxref("ime-mode") }} property may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>An early list of what could be in the next iteration of the CSS Basic User Interface Module is <a class="external" href="http://wiki.csswg.org/spec/css4-ui" title="http://wiki.csswg.org/spec/css4-ui">available</a>.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Transitions", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Transitions") }}</td>
- </tr>
- <tr>
- <td colspan="2">Allows the definition of transitions effects between two properties values by adding the CSS {{ cssxref("transition") }}, {{ cssxref("transition-delay") }}, {{ cssxref("transition-duration") }}, {{ cssxref("transition-property") }}, and {{ cssxref("transition-timing-function") }} properties.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Animations", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Animations") }}</td>
- </tr>
- <tr>
- <td colspan="2">Allows the definition of animations effects by adding the CSS {{ cssxref("animation") }}, {{ cssxref("animation-delay") }},{{ cssxref("animation-direction") }}, {{ cssxref("animation-duration") }}, {{ cssxref("animation-fill-mode") }}, {{ cssxref("animation-iteration-count") }}, {{ cssxref("animation-name") }}, {{ cssxref("animation-play-state") }}, and {{ cssxref("animation-timing-function") }} properties, as well as the {{ cssxref("@keyframes") }} at-rule.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Transforms", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Transforms") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Adds:</p>
-
- <ul>
- <li>the support of bi-dimensional transforms to be applied to any element using the CSS {{ cssxref("transform") }} and {{ cssxref("transform-origin") }} properties. The supported transforms are: <code>matrix</code><code>()</code>, <code>translate()</code>, <code>translateX()</code>, <code>translateY()</code>, <code>scale()</code>, <code>scaleX()</code>, <code>scaleY()</code>, <code>rotate()</code>, <code>skewX()</code>, and <code>skewY()</code>.</li>
- <li>the support of tri-dimensional transforms to be applied to any element by adding the CSS {{ cssxref("transform-style") }}, {{ cssxref("perspective") }}, {{ cssxref("perspective-origin") }}, and {{ cssxref("backface-visibility") }} properties and extended the {{ cssxref("transform") }} property with the following transforms are: <code>matrix</code> <code>3d()</code>, <code>translate3d()</code>, <code>translateZ()</code>,  <code>scale3d()</code>, <code>scaleZ()</code>, <code>rotate3d()</code>, <code>rotateX</code><code>()</code> ,<code>rotateY</code><code>()</code>, <code>rotateZ()</code>, and <code>perspective()</code>.</li>
- </ul>
-
- <p><em><strong>Note:</strong> this specification is a merge of CSS 2D-Transforms, CSS 3D-Transforms and SVG transforms. </em></p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255, 255, 220);"><strong>{{ SpecName("CSS3 Fragmentation", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Fragmentation") }}</td>
- </tr>
- <tr>
- <td colspan="2">Defines how partitions of a Web page should happen, that is page, column breaks, and widows and orphans handling.
- <p>Adds:</p>
-
- <ul>
- <li>Support for defining the behavior of decorations, that is borders and background colors or images, when a box is breaked (at a page, column or line-break) with the CSS {{ cssxref("box-decoration-break") }} property.</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Text", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Text") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Extends:</p>
-
- <ul>
- <li>the CSS {{ cssxref("text-transform") }} property with the value <code>full-width</code>.</li>
- <li>the CSS {{ cssxref("text-align") }} property with the value <code>start</code>, <code>end</code>, <code>start end</code>, and <code>match-parent</code> for a better support of documents with multiple directionalities of text.</li>
- <li>the CSS {{ cssxref("text-align") }} property with a {{cssxref("&lt;string&gt;")}} value to align on that character. This is useful to align number on the decimal point.</li>
- <li>the CSS {{ cssxref("word-spacing") }} and {{ cssxref("letter-spacing") }} properties with range constraints to control flexibility in justification.</li>
- </ul>
-
- <p>Adds:</p>
-
- <ul>
- <li>Control on how whitespaces are displayed using the CSS {{ cssxref("text-space-collapse") }} and {{ cssxref("tab-size") }} properties.</li>
- <li>Control on line breaks and word boundaries using the CSS {{ cssxref("line-break") }}, {{ cssxref("word-break") }}, {{ cssxref("hyphens") }}, {{ cssxref("text-wrap") }}, {{ cssxref("overflow-wrap") }}, and {{ cssxref("text-align-last") }} properties.</li>
- <li>Control on how justification is happening, in order to support more type of scripts, using the CSS {{ cssxref("text-justify") }} property.</li>
- <li>Control on edge effect using the CSS {{ cssxref("text-indent") }} and {{ cssxref("hanging-punctuation") }} properties.</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p>A few features present in early CSS Text Level 3 draft have being <a class="external" href="http://dev.w3.org/csswg/css3-text/#recent-changes" title="http://dev.w3.org/csswg/css3-text/#recent-changes">postponed to the next iteration of this module</a> .</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Variables", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Variables") }}</td>
- </tr>
- <tr>
- <td colspan="2">Defines a mechanism allowing to define variables in CSS.</td>
- </tr>
- </tbody>
-</table>
-
-<h3 id="Modules_in_the_revising_phase">Modules in the revising phase</h3>
-
-<p>Modules that are in the revising phase are much less stable than those in the refining phase. Often the syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntax are tested and often implemented.</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS3 Writing Modes", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Writing Modes") }}</td>
- </tr>
- <tr>
- <td colspan="2">Defines the writing modes of both horizontal and vertical scripts and precises how the CSS {{ cssxref("direction") }} and {{ cssxref("unicode-bidi") }} properties interact with the new CSS {{ cssxref("text-orientation") }} property, and extends them where needed.</td>
- </tr>
- </tbody>
-</table>
-
-<h3 id="Modules_in_the_exploring_phase">Modules in the exploring phase</h3>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS4 Images", "", "") }}</strong></td>
- <td>{{ Spec2("CSS4 Images") }}</td>
- </tr>
- <tr>
- <td colspan="2">
- <p>Extends:</p>
-
- <ul>
- <li>the <code>image()</code> functional notation to describe the directionality of the image (<code>rtl</code> or <code>ltr</code>), allowing for bidi-sensitive images.</li>
- <li>the {{ cssxref("image-orientation") }} property by adding the keyword <code>from-image</code>, allowing to follow EXIF data stored into images to be considered.</li>
- </ul>
-
- <p>Adds:</p>
-
- <ul>
- <li>the <code>image-set()</code> functional notation to allow the definition to equivalent images at different resolution allowing for resolution-negotiated selection of images.</li>
- <li>the <code>element()</code> functional notation allowing the use of part of the page as image.</li>
- <li>the <code>cross-fade()</code> functional notation allowing to refer to intermediate images when transitioning between two images and defines the interpolation between two images.</li>
- <li>the <code>conic-gradient()</code> and <code>repeating-conic-gradient()</code> functional notation describing a new type of gradient.</li>
- <li>the {{cssxref("image-rendering")}} property that allow to define how resize of the object should be handled.</li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table" style="width: 100%;">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Device", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Device") }}</td>
- </tr>
- <tr>
- <td colspan="2">Adds a new at-rule, {{ cssxref("@viewport") }}, allowing to specify the size, zoom factor, and orientation of the viewport that is used as the base for the initial containing block.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table" style="width: 100%;">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Grid", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Grid") }}</td>
- </tr>
- <tr>
- <td colspan="2">Add a grid layout to the CSS <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/display" title=""><code>display</code></a> property and several new CSS properties to control it: {{cssxref("grid")}}, {{cssxref("grid-area")}}, {{cssxref("grid-auto-columns")}}, {{cssxref("grid-auto-flow")}}, {{cssxref("grid-auto-position")}}, {{cssxref("grid-auto-rows")}}, {{cssxref("grid-column")}}, {{cssxref("grid-column-start")}}, {{cssxref("grid-column-end")}}, {{cssxref("grid-row")}}, {{cssxref("grid-row-start")}}, {{cssxref("grid-row-end")}}, {{cssxref("grid-template")}}, {{cssxref("grid-template-areas")}}, {{cssxref("grid-template-rows")}}, and {{cssxref("grid-template-columns")}}.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 GCPM", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 GCPM") }}</td>
- </tr>
- <tr>
- <td colspan="2">Adds the ability to tailor printed version of a document by allowing to control header, footer but also references tables like indexes or tables of content.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Exclusions and Shapes", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Exclusions and Shapes") }}</td>
- </tr>
- <tr>
- <td colspan="2">Extends the floats mechanism to define exclusion regions in any positioning scheme. Adds the notion of shapes, in which content must flows.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Lists", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Lists") }}</td>
- </tr>
- <tr>
- <td colspan="2">Extends the list counter mechanism so that list markers can be styled and Web developers can define new list counter schemes.</td>
- </tr>
- </tbody>
-</table>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Regions", "", "") }}</strong></td>
- <td>{{ Spec2("CSS3 Regions") }}</td>
- </tr>
- <tr>
- <td colspan="2">Defines a new mechanism allowing content to flow across, eventually non-contiguous, multiple areas called regions.</td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/archive/index.html b/files/zh-tw/archive/index.html
deleted file mode 100644
index 6766a22f6e..0000000000
--- a/files/zh-tw/archive/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: 過時內容的存檔
-slug: Archive
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive
----
-<p>在 MDN,我們盡量避免直接刪除內容,因為那些內容可能對要找出遺留平台、作業系統、瀏覽器相關資料的人而言很有用:也許你的目標人群在用很老舊的硬體、使他們的瀏覽器無法升級到最新版本;或著因為某些「原因」,你的公司要用非常老舊的軟體、而你建置的網路內容需要在那個軟體上運行;也可能是你對過時的功能或 API 歷史與運行方法感到興趣。</p>
-
-<p>出於很多原因,老文件非常有用。因此,我們開闢了這個地方,用以保存老文件。這裡的內容<strong>不該</strong>用作建置面向現代瀏覽器的新網站或 apps 參考。這裡存在的目的,只有作為歷史參考。</p>
-
-<div class="note">
-<p><strong>給編者的筆記:</strong>我們要盡可能維持子頁面的組織化、而不該把所有東西都丟到一個大資料夾。試著給內容歸類。另外,只把<strong>非常</strong>老舊的內容移到這裡。若可能有人切實需要還在使用的軟體資訊,就不該移這裡。在你把任何內容移動到這裡以前,最好在 <a href="https://chat.mozilla.org/#/room/#mdn:mozilla.org">MDN Web Docs</a> 頻道討論。</p>
-</div>
-
-<p>{{SubpagesWithSummaries}}</p>
-
-<h2 id="子頁面">子頁面</h2>
-
-<p>{{ListSubpages("/zh-TW/docs/Archive", 2, 0, 1)}}</p>
diff --git a/files/zh-tw/archive/mdn/index.html b/files/zh-tw/archive/mdn/index.html
deleted file mode 100644
index f99cd4e169..0000000000
--- a/files/zh-tw/archive/mdn/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: MDN Archive
-slug: Archive/MDN
-tags:
- - Archive
- - MDN
-translation_of: Archive/MDN
----
-<p>{{MDNSidebar}}</p>
-
-<div class="blockIndicator obsolete">
-<p><strong>Obsolete</strong><br>
- 此文件已過時。</p>
-</div>
-
-<p>The documentation listed below is archived, obsolete material about MDN itself.</p>
-
-<p>{{LandingPageListSubpages}}</p>
diff --git a/files/zh-tw/archive/mdn/persona_sign-ins/index.html b/files/zh-tw/archive/mdn/persona_sign-ins/index.html
deleted file mode 100644
index 7c65870878..0000000000
--- a/files/zh-tw/archive/mdn/persona_sign-ins/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: MDN and Persona sign-ins
-slug: Archive/MDN/Persona_sign-ins
-tags:
- - '3081911'
-translation_of: Archive/MDN/Persona_sign-ins
----
-<div>{{MDNSidebar}}</div><div class="warning">
-<p>Please <a href="/en-US/docs/MDN/Contribute/Howto/Link_a_GitHub_account">link your GitHub account to your MDN profile now</a> so you can continue to sign in to MDN.</p>
-</div>
-
-<p>Currently, MDN lets contributors sign in using two different authentication providers: Mozilla Persona and GitHub. Starting on November 1, 2016, we will remove Persona as an option for logging in. Therefore, you must enable Github authentication on your profile to avoid losing login access to MDN.</p>
-
-<p>We recognize that this is an inconvenience, and we do apologize for it. Unfortunately, this is out of our control.</p>
-
-<h2 id="Why_is_Persona_being_removed">Why is Persona being removed?</h2>
-
-<p>Mozilla has shut down the Persona project, and its servers will be turned off in November, 2016. You can <a href="https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers#FAQs">learn more about Mozilla's decision</a> to shut down Persona on the Mozilla wiki.</p>
-
-<h2 id="When_will_Persona_be_removed">When will Persona be removed?</h2>
-
-<p>We will disable Persona as an authentication provider on November 1, 2016; in other words, the last day you'll be able to sign in to MDN using Persona will be October 31, 2016. We will be issuing increasingly frequent and increasingly urgent notifications to <a href="/en-US/docs/MDN/Contribute/Howto/Link_a_GitHub_account">add a GitHub account to your MDN profile</a> starting now. Please do this as soon as you can, in order to avoid any risk of losing access to your MDN account.</p>
-
-<h2 id="Will_MDN_offer_another_authentication_provider">Will MDN offer another authentication provider?</h2>
-
-<p>We would very much like to do so, but have not yet identified another provider which meets our requirements; in addition, we don't currently have the developer resources to integrate another provider. For the time being, your <em>only</em> option to keep contributor access to MDN is to <a href="/en-US/docs/MDN/Contribute/Howto/Link_a_GitHub_account">link your MDN profile to your GitHub account</a>.</p>
-
-<p>Keep in mind, of course, that you don't need to sign in to MDN in order to read our content. But if you have an account for contributing, and wish to be able to contribute at any time in the future, be sure to <em><strong>add a GitHub account to your profile as soon as you can,</strong></em> before October 31, 2016.</p>
diff --git a/files/zh-tw/archive/meta_docs/custom_classes/index.html b/files/zh-tw/archive/meta_docs/custom_classes/index.html
deleted file mode 100644
index 0aa624f2fd..0000000000
--- a/files/zh-tw/archive/meta_docs/custom_classes/index.html
+++ /dev/null
@@ -1,189 +0,0 @@
----
-title: 自訂 CSS 類別
-slug: Archive/Meta_docs/Custom_classes
-tags:
- - MDC_專案
-translation_of: Archive/Meta_docs/Custom_classes
----
-<p> 以下是 MDC Wiki 上自行定義的樣式類別,若你也想新增類別,請聯絡 <a href="/User:Dria">Dria</a>。</p>
-
-<h3 id=".E7.8F.BE.E6.9C.89_CSS_.E9.A1.9E.E5.88.A5" name=".E7.8F.BE.E6.9C.89_CSS_.E9.A1.9E.E5.88.A5">現有 CSS 類別</h3>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <td class="header">樣式</td>
- <td class="header">使用結果</td>
- </tr>
- <tr>
- <td><code>div.tip</code></td>
- <td>顯示網頁內容中的小技巧文字。</td>
- </tr>
- <tr>
- <td><code>div.bug</code></td>
- <td>顯示網頁內容中的程式錯誤文字。</td>
- </tr>
- <tr>
- <td><code>.float-left</code></td>
- <td>製作向左浮動的元素(通常是圖片)。</td>
- </tr>
- <tr>
- <td><code>.float-right</code></td>
- <td>製作向右浮動的元素(通常是圖片)。</td>
- </tr>
- <tr>
- <td><code>.figure</code></td>
- <td>這個樣式目前還沒有實際作用,是為日後使用準備的。</td>
- </tr>
- <tr>
- <td><code>.standard-table</code></td>
- <td>標準的表格樣式。</td>
- </tr>
- <tr>
- <td><code>.standard-table td.header</code></td>
- <td>標準表格的標題樣式。</td>
- </tr>
- <tr>
- <td><code>.fullwidth-table</code></td>
- <td>寬度設定為 100% 的表格(就像現在這個表格一樣)。</td>
- </tr>
- <tr>
- <td><code>.fullwidth-table td.header</code></td>
- <td>寬度設為 100% 之表格的標題樣式。</td>
- </tr>
- <tr>
- <td><code>div.breadcrumbs</code></td>
- <td>頁面導覽的樣式。</td>
- </tr>
- <tr>
- <td><code>div.breadcrumbs a.breadcrumbs</code></td>
- <td>頁面導覽字串中連結部分的樣式。</td>
- </tr>
- <tr>
- <td><code>div.breadcrumbs span.breadcrumbs</code></td>
- <td>頁面導覽字串中目前頁面標題的樣式。</td>
- </tr>
- <tr>
- <td><code>div.side-note-left div.side-note-right</code></td>
- <td>用以建立文章內的邊欄。此區域之寬度將佔其母元素(通常就是文件本體)的 50%。若要建立邊欄請使用這個樣式,以確保內容顯示上容易閱讀。</td>
- </tr>
- <tr>
- <td><code>div.highlight</code></td>
- <td>在區段左側放上 3 個像素寬的藍色邊框。/td&gt;</td>
- </tr>
- <tr>
- <td><code>.highlightred</code></td>
- <td>將文字改以紅色顯示。</td>
- </tr>
- <tr>
- <td><code>.highlightblue</code></td>
- <td>將文字改以藍色顯示。</td>
- </tr>
- <tr>
- <td><code>.highlightgreen</code></td>
- <td>將文字改以綠色顯示。</td>
- </tr>
- </tbody>
-</table>
-
-<h3 id=".E7.AF.84.E4.BE.8B" name=".E7.AF.84.E4.BE.8B">範例</h3>
-
-<h4 id=".E6.A8.99.E7.A4.BA.E9.83.A8.E5.88.86.E7.A8.8B.E5.BC.8F.E7.A2.BC" name=".E6.A8.99.E7.A4.BA.E9.83.A8.E5.88.86.E7.A8.8B.E5.BC.8F.E7.A2.BC">標示部分程式碼</h4>
-
-<p>通常我們會讓程式碼以特別的區塊顯示,這可以利用 span 搭配 MediaWiki 系統「行前空一格就自動縮排」的功能。須注意的是在 <span class="nowiki">&lt;pre&gt;</span> 區段中不能用 span 元素,因為此時 MediaWiki 會直接把 span 元素當成要顯示的內容而輸出。</p>
-
-<pre>&lt;span class="highlightred"&gt;這樣是沒用的&lt;/span&gt;
-</pre>
-
-<p>這種狀況下就應該將程式碼縮排,然後在其中使用 span 元素。如果程式中有空白行,該行也必須縮排,否則系統會認為空白行的前後為分開的兩個區段。</p>
-
-<pre class="eval">像這樣,
- 程式碼的空白行<span class="highlightred">並沒有</span>縮排,
-</pre>
-
-<pre class="eval"> 所以就顯示成<span class="highlightblue">兩個區段</span>了。
-</pre>
-
-<p>顯然這樣跟我們想要的有所差異,所以你應該這麼做:</p>
-
-<pre class="eval">像這樣,
- 空白行前<span class="highlightred">也加了個空白字元</span>以示縮排,
-
- 這樣系統就將其顯示為<span class="highlightblue">同一個</span>區段。
-</pre>
-
-<h4 id=".E5.B0.8E.E8.A6.BD" name=".E5.B0.8E.E8.A6.BD">導覽</h4>
-
-<p> </p>
-
-<ul>
- <li><a href="/zh_tw/JavaScript_1.5_參考/關於本文" title="zh_tw/JavaScript_1.5_參考/關於本文">JavaScript 1.5 參考:關於本文</a>文件中有一段關於在網頁上添加導覽列的範例。</li>
-</ul>
-
-<h4 id="table.standard-table" name="table.standard-table">table.standard-table</h4>
-
-<p>&lt;tr&gt; &lt;td&gt;此為&lt;/td&gt; &lt;td&gt;<code>table.standard-table</code>&lt;/td&gt; &lt;td&gt;的範例&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;</p>
-
-<h4 id="table.fullwidth-table" name="table.fullwidth-table">table.fullwidth-table</h4>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th>表格標題 1&lt;/td&gt;
- <p>&lt;th&gt;表格標題 2&lt;/td&gt; &lt;th&gt;表格標題 3&lt;/td&gt;</p>
- </th>
- </tr>
- </tbody>
-</table>
-
-<p>&lt;tr&gt; &lt;td&gt;此為&lt;/td&gt; &lt;td&gt;<code>table.fullwidth-table</code>&lt;/td&gt; &lt;td&gt;的範例&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;</p>
-
-<h4 id="DIV_.E5.8D.80.E6.AE.B5" name="DIV_.E5.8D.80.E6.AE.B5">DIV 區段</h4>
-
-<h5 id=".E5.B0.8F.E6.8A.80.E5.B7.A7" name=".E5.B0.8F.E6.8A.80.E5.B7.A7">小技巧</h5>
-
-<p>小技巧區段以 <code>div class="note"</code> 標示,例如:</p>
-
-<div class="note">這就是個小技巧</div>
-
-<h5 id=".E7.A8.8B.E5.BC.8F.E9.8C.AF.E8.AA.A4" name=".E7.A8.8B.E5.BC.8F.E9.8C.AF.E8.AA.A4">程式錯誤</h5>
-
-<p>已知的程式錯誤可用 <code>div class="bug"</code> 標示參照,內含 bugzilla 上的對應資訊連結,例如:</p>
-
-<div class="bug"><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=176320">Bug 176320:彈出視窗 innerWidth 及 innerHeight 的最小值</a></div>
-
-<h5 id=".E8.AD.A6.E5.91.8A" name=".E8.AD.A6.E5.91.8A">警告</h5>
-
-<p>請使用 <code>div class="warning"</code> 來標示文件中的警告文字,很快我們會為此樣式加上圖示等特殊效果。</p>
-
-<div class="warning">此段為警告文字</div>
-
-<h5 id=".E6.B3.A8.E9.87.8B" name=".E6.B3.A8.E9.87.8B">注釋</h5>
-
-<p>請使用 <code>div class="note"</code> 來標示文件中的注釋文字。</p>
-
-<div class="note">這是注釋,雖然沒什麼意思但還是個注釋。</div>
-
-<h5 id=".E6.A8.99.E7.A4.BA.E5.8D.80.E6.AE.B5" name=".E6.A8.99.E7.A4.BA.E5.8D.80.E6.AE.B5">標示區段</h5>
-
-<p>以下為 <code>div class="highlight"</code> 的範例:</p>
-
-<div class="highlight">
-<p>此為以 CSS 標示區段的範例,您可用這個方法讓某個程式碼區段更加顯眼。這個樣式最先是為 <a href="/zh_tw/XUL_教學" title="zh_tw/XUL_教學">XUL 教學</a>而加進 MDC 的。</p>
-
-<pre>而這是
- 標示之區段中
- 文字預先格式化的
- 範例
-</pre>
-</div>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <th>表格標題 1&lt;/td&gt;
- <p>&lt;th&gt;表格標題 2&lt;/td&gt; &lt;th&gt;表格標題 3&lt;/td&gt;</p>
- </th>
- </tr>
- </tbody>
-</table>
diff --git a/files/zh-tw/archive/meta_docs/index.html b/files/zh-tw/archive/meta_docs/index.html
deleted file mode 100644
index 52de2c8447..0000000000
--- a/files/zh-tw/archive/meta_docs/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: MDN "meta-documentation" archive
-slug: Archive/Meta_docs
-tags:
- - Archive
- - MDN
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Meta_docs
----
-<p>Here you'll find archived "meta-documentation"; that is, documentation about how to write documentation on MDN. The articles here are obsolete and should no longer be referenced; we are retaining them here for reference while we migrate some content to new places, but very little of this is useful.</p>
-<p>{{LandingPageListSubpages}}</p>
diff --git a/files/zh-tw/archive/misc_top_level/creating_a_web_based_tone_generator/index.html b/files/zh-tw/archive/misc_top_level/creating_a_web_based_tone_generator/index.html
deleted file mode 100644
index 590a003de0..0000000000
--- a/files/zh-tw/archive/misc_top_level/creating_a_web_based_tone_generator/index.html
+++ /dev/null
@@ -1,91 +0,0 @@
----
-title: 製作一個 Web 上的音調產生器
-slug: Archive/Misc_top_level/Creating_a_Web_based_tone_generator
-translation_of: Archive/Misc_top_level/Creating_a_Web_based_tone_generator
----
-<p>這是一個簡單的音調產生器的範例。<code>requestSoundData()</code> 是產生音頻樣本的函式,這個函式在經過某個特定的時間間隔會透過 <code>setInterval()</code> 被呼叫。<code>mozWriteAudio()</code> 是在被呼叫時,把樣本寫入音頻串流的函式。為了確保總是有可以播放的樣本,這個範例設置了一個 500 ms 的緩衝。<code>mozCurrentSampleOffset()</code> 是一個用來知道正在被播放的樣本所在位置的函式,這的函式被這個範例用來確保我們填進緩衝的總是正在被播放後的 500 ms。</p>
-<pre class="brush: js">&lt;!DOCTYPE html&gt;
-&lt;html&gt;
- &lt;head&gt;
- &lt;title&gt;JavaScript 音頻寫入範例&lt;/title&gt;
- &lt;/head&gt;
- &lt;body&gt;
- &lt;input type="text" size="4" id="freq" value="440"&gt;&lt;label for="hz"&gt;Hz&lt;/label&gt;
- &lt;button onclick="start()"&gt;play&lt;/button&gt;
- &lt;button onclick="stop()"&gt;stop&lt;/button&gt;
-
- &lt;script type="text/javascript"&gt;
- function AudioDataDestination(sampleRate, readFn) {
- // 音頻輸出的初使化
- var audio = new Audio();
- audio.mozSetup(1, sampleRate);
-
- var currentWritePosition = 0;
- var prebufferSize = sampleRate / 2; // 緩衝 500ms
- var tail = null;
-
- // 這個函數會被定期呼叫以填充音頻輸出緩衝
- setInterval(function() {
- var written;
- // 看看之前也沒有留下未被寫入的資料
- if(tail) {
- written = audio.mozWriteAudio(tail);
- currentWritePosition += written;
- if(written &lt; tail.length) {
- // 並非所有資料都被寫入了,把剩下的存下來...
- tail = tail.slice(written);
- return; // ... 並結束這個函式
- }
- tail = null;
- }
-
- // 看看是不是有需要再加新資料至音頻輸出
- var currentPosition = audio.mozCurrentSampleOffset();
- var available = currentPosition + prebufferSize - currentWritePosition;
- if(available &gt; 0) {
- // 從回撥函式(callback)要一些音效資料
- var soundData = new Float32Array(parseFloat(available));
- readFn(soundData);
-
- // 寫這些資料
- written = audio.mozWriteAudio(soundData);
- if(written &lt; soundData.length) {
- // 不是所有資料都被寫入了,存下剩下的部份。
- tail = soundData.slice(written);
- }
- currentWritePosition += written;
- }
- }, 100);
- }
-
- // 控制並製造聲音
-
- var frequency = 0, currentSoundSample;
- var sampleRate = 44100;
-
- function requestSoundData(soundData) {
- if (!frequency) {
- return; // 已被靜音
- }
-
- var k = 2* Math.PI * frequency / sampleRate;
- for (var i=0, size=soundData.length; i&lt;size; i++) {
- soundData[i] = Math.sin(k * currentSoundSample++);
- }
- }
-
- var audioDestination = new AudioDataDestination(sampleRate, requestSoundData);
-
- function start() {
- currentSoundSample = 0;
- frequency = parseFloat(document.getElementById("freq").value);
- }
-
- function stop() {
- frequency = 0;
- }
- &lt;/script&gt;
- &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-<p>{{ languages( { "en": "en/Creating_a_Web_based_tone_generator"} ) }}</p>
diff --git a/files/zh-tw/archive/misc_top_level/index.html b/files/zh-tw/archive/misc_top_level/index.html
deleted file mode 100644
index 0959a3b10b..0000000000
--- a/files/zh-tw/archive/misc_top_level/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Misc top level
-slug: Archive/Misc_top_level
-translation_of: Archive/Misc_top_level
----
-<p>In progress. These pages were moved from the top level of MDN in a spate of furious reorganization.</p>
-
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html b/files/zh-tw/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html
deleted file mode 100644
index b0fd952355..0000000000
--- a/files/zh-tw/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: '檔案同源政策 (Same-origin policy for file: URIs)'
-slug: 'Archive/Misc_top_level/Same-origin_policy_for_file:_URIs'
-translation_of: 'Archive/Misc_top_level/Same-origin_policy_for_file:_URIs'
----
-<p>在 Gecko 1.8 之前,任兩份檔案都會被視為同源(same-origin),換句話說本機端的任一份HTML檔可以讀取任一份檔案。</p>
-
-<p>自 Gacko 1.9 起,檔案讀取檔案開始受到限制:唯有當主檔案父資料夾是被讀取檔案的祖先資料夾 (<span style="line-height: 19.0909080505371px;">ancestor directory) 的情況之下,檔案讀取才會被允許,但資料夾載入並非以此規範。</span></p>
-
-<p>舉例來說,我們從 index.html 進入同一層資料夾的另一個 foo.html 檔,而這個 <span style="line-height: 19.0909080505371px;">foo.html 檔</span>想要讀取 bar.html 檔,只有當 bar.html 存放於 index.html 所在資料夾或是 index.html 所在資料夾底下的子資料夾中,foo.html 才能讀取 bar.html。</p>
-
-<p>檔案同源政策會影響到包括 <a class="internal" href="/en/DOM/XMLHttpRequest" title="En/XMLHttpRequest"><code>XMLHttpRequest</code></a>, XSLT, 與 XBL 等同源政策的檢查。</p>
-
-<p>至於跨 window 的 DOM 存取,基本上各檔案都被視為不同源,除了以下例外:若是檔案 B 被另一個檔案 A 載入(例如透過 iframe 或 <a class="internal" href="/en/DOM/window.open" style="text-decoration: underline; line-height: 19.0909080505371px;" title="En/DOM/Window.open"><code>window.open()</code></a>),而檔案 A、B 遵照此份檔案同源政策可以被判定屬於同源,那麼當發生<span style="line-height: 19.0909080505371px;">跨 window 的 DOM 存取時,也可以視為同源。</span></p>
-
-<p>比如說 <code>/home/user/</code><span style="font-family: consolas,monaco,andale mono,monospace; line-height: 19.0909080505371px;">subdir/</span><code>foo.html</code> 是一個 frameset,而它下嵌了 另一個 <span style="font-family: consolas,monaco,andale mono,monospace; line-height: 19.0909080505371px;">/home/user/subdir/subdir2/bar.html </span><span style="line-height: 19.0909080505371px;">的 </span><span style="font-family: consolas,monaco,andale mono,monospace; line-height: 19.0909080505371px;">frame</span>, 那麼 foo.html 和 bar.html 可以視為同源,但如果 bar.html 的位置變成 /home/user/bar.html,<span style="line-height: 19.0909080505371px;">那麼 foo.html 和 bar.html 便不可以視為同源。</span></p>
-
-<p>另外當使用者想要關閉這些檔案同源政策檢查,可以變更 <code>security.fileuri.strict_origin_policy</code> 偏好設定為從預設 true 到 false。</p>
diff --git a/files/zh-tw/archive/mozilla/creating_a_microsummary/index.html b/files/zh-tw/archive/mozilla/creating_a_microsummary/index.html
deleted file mode 100644
index 40afef30b6..0000000000
--- a/files/zh-tw/archive/mozilla/creating_a_microsummary/index.html
+++ /dev/null
@@ -1,214 +0,0 @@
----
-title: 製作即時摘要
-slug: Archive/Mozilla/Creating_a_microsummary
-tags:
- - 即時摘要
-translation_of: Archive/Mozilla/Creating_a_microsummary
----
-<p>
- 即時摘要來源(microsummary generator)內含一組從網頁中製出即時摘要的指令,而網頁能在 <code>&lt;head&gt;</code> 元素中放入 <code>&lt;link rel="microsummary"&gt;</code> 以指定適用的摘要來源。即時摘要來源檔案中如含有適用頁面列表,則也可以獨立安裝。</p>
-<p>
- 在這份教學文件中,我們將建立 <a class="external" href="http://www.spreadfirefox.com/">Spread Firefox 首頁</a>的即時摘要來源,藉以顯示目前 Firefox 的總下載數。 (例: <cite>Fx 下載數: 174475447</cite>)。</p>
-<p>
- 接下來我們會用一份 XSLT 樣式表將該網頁轉換為即時摘要、指定此摘要來源的適用頁面並了解摘要來源傳佈方式,讓使用者能下載及安裝。在這份文件中每階段新增的程式碼會以粗體顯示,方便您辨識。</p>
-<h2 id=".E9.96.8B.E5.A7.8B" name=".E9.96.8B.E5.A7.8B">
- 開始</h2>
-<p>
- 摘要來源是 XML 文件的一種,而其根元素為 <code>&lt;generator&gt;</code>、名稱空間 (namespace) 需指定為 <cite><a class="external" href="http://www.mozilla.org/microsummaries/0.1" rel="freelink">http://www.mozilla.org/microsummaries/0.1</a></cite>,所以要建立一份摘要來源就先得在空的純文字檔中放入 XML 宣告及空的 <code>&lt;generator&gt;</code> 標籤:</p>
-<pre class="eval"><b>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</b>
-<b>&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"&gt;</b>
-<b>&lt;/generator&gt;</b>
-</pre>
-<h2 id=".E5.91.BD.E5.90.8D" name=".E5.91.BD.E5.90.8D">
- 命名</h2>
-<p>
- 每個即時摘要來源都必須有個名字,該名稱以 <code>name</code> 屬性記載、明確說明此摘要來源所建立的摘要主題。由於我們要建立的摘要來源將顯示 Firefox 總下載數,所以便命名為「Firefox 下載計數」:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- <b>name="Firefox 下載計數"</b>&gt;
-&lt;/generator&gt;
-</pre>
-<h2 id=".E5.8A.A0.E4.B8.8A_XSLT_.E6.A8.A3.E5.BC.8F.E8.A1.A8" name=".E5.8A.A0.E4.B8.8A_XSLT_.E6.A8.A3.E5.BC.8F.E8.A1.A8">
- 加上 XSLT 樣式表</h2>
-<p>
- 即時摘要來源檔案中必須含有一份 XSLT 樣式表,以便將網頁依樣式表設定轉換為即時摘要。同一份資料碰上不同的 XSLT 樣式便能轉換為「相貌」不同的文件,這便是 XSLT 威力所在。</p>
-<p>
- 以下示範以 <code>&lt;template&gt;</code> 元素在摘要來源中添加 XSLT 樣式表:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- <b>&lt;template&gt;</b>
- <b>&lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;</b>
- <b>&lt;/transform&gt;</b>
- <b>&lt;/template&gt;</b>
-&lt;/generator&gt;
-</pre>
-<p>
- 即時摘要來源中可以放任何形式的 XSLT,設定為產生超文件也行,但 Firefox 目前只會顯示純文字內容。</p>
-<h2 id=".E8.A8.AD.E5.AE.9A.E8.BC.B8.E5.87.BA.E6.A0.BC.E5.BC.8F" name=".E8.A8.AD.E5.AE.9A.E8.BC.B8.E5.87.BA.E6.A0.BC.E5.BC.8F">
- 設定輸出格式</h2>
-<p>
- 由於 XSLT 樣式表會產岀文字摘要,所以 XSLT 的 <code>&lt;output&gt;</code> 元素需設定如下:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- &lt;template&gt;
- &lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;
- <b>&lt;output method="text"/&gt;</b>
- &lt;/transform&gt;
- &lt;/template&gt;
-&lt;/generator&gt;
-</pre>
-<h2 id=".E4.BD.BF.E7.94.A8_XSLT_.3Ctemplate.3E" name=".E4.BD.BF.E7.94.A8_XSLT_.3Ctemplate.3E">
- 使用 XSLT <code>&lt;template&gt;</code></h2>
-<p>
- XSLT 處理器會分別比對 XSLT 樣式表中每組 <code>&lt;template&gt;</code> 元素及文件中的節點。當 <code>&lt;template&gt;</code> 的 <code>match</code> 屬性設定與節點相符,處理器便依設定轉換文件。</p>
-<p>
- 這種處理方式可以循序檢查網頁中每個節點,依據設定條件顯示內容,非常有用。不過本例只是要顯示 Spread Firefox 網站上的即時摘要,僅用一個 <code>&lt;template&gt;</code> 元素來找一回根元素下的內容即可:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- &lt;template&gt;
- &lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;
- &lt;output method="text"/&gt;
- <b>&lt;template match="/"&gt;</b>
- <b>&lt;/template&gt;</b>
- &lt;/transform&gt;
- &lt;/template&gt;
-&lt;/generator&gt;
-</pre>
-<h2 id=".E5.8A.A0.E4.B8.8A.E4.B8.8B.E8.BC.89.E6.AC.A1.E6.95.B8" name=".E5.8A.A0.E4.B8.8A.E4.B8.8B.E8.BC.89.E6.AC.A1.E6.95.B8">
- 加上下載次數</h2>
-<p>
- 若想將下載次數放到 XSLT 輸出的文件中,我們得在 XSLT 中的 <code>template</code> 元素加上 <code>&lt;value-of&gt;</code> 元素,而此 <code>template</code> 元素的 <code>select</code> 屬性中指定的 XPath 必須指向涵括計數器的節點。</p>
-<p>
- XPath 是用來指定 HTML/XML 文件節點的語言,也有基本的節點內容處理函式。要得知能指向此節點的 XPath 陳述式,最輕鬆的方法就是使用 <a class="link-https" href="https://addons.mozilla.org/firefox/1095/">XPath Checker 擴充套件</a>。</p>
-<p>
- 安裝 XPath Checker 並重新啟動 Firefox 之後,先到 <a class="external" href="http://www.spreadfirefox.com/">Spread Firefox 首頁</a>去,找到 Firefox 下載次數(網頁右邊欄最下方的數字),在上頭按下右鍵,於快捷選單中選擇 <cite>View XPath</cite>。此時 XPath Checker 會開啟一個新視窗,其中 <cite>XPath</cite> 欄位包含方才所選節點的 XPath 陳述式: <cite>id('download-count')</cite> 。</p>
-<p>
- 在 XSLT 的 <code>&lt;template&gt;</code> 元素中加上一個 <code>&lt;value-of&gt;</code> 元素,其中 <code>select</code> 屬性便設為此 XPath 陳述式,如下:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- &lt;template&gt;
- &lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;
- &lt;output method="text"/&gt;
- &lt;template match="/"&gt;
- <b>&lt;value-of select="id('download-count')"/&gt;</b>
- &lt;/template&gt;
- &lt;/transform&gt;
- &lt;/template&gt;
-&lt;/generator&gt;
-</pre>
-<h2 id=".E5.8A.A0.E4.B8.8A.E6.96.87.E5.AD.97" name=".E5.8A.A0.E4.B8.8A.E6.96.87.E5.AD.97">
- 加上文字</h2>
-<p>
- 為了在即時摘要中加上 <cite>Fx 下載數:</cite> 這段文字,我們必須將 <code>&lt;text&gt;</code> 元素放到 <code>&lt;template&gt;</code> 元素中文字該出現的地方。以下範例便放進一個內容為 <cite>Fx 下載數:</cite> 的 <code>&lt;text&gt;</code> 元素:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- &lt;template&gt;
- &lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;
- &lt;output method="text"/&gt;
- &lt;template match="/"&gt;
- <b>&lt;text&gt;Fx 下載數: &lt;/text&gt;</b>
- &lt;value-of select="id('download-count')"/&gt;
- &lt;/template&gt;
- &lt;/transform&gt;
- &lt;/template&gt;
-&lt;/generator&gt;
-</pre>
-<p>
- 此處須留心 XSLT 標籤之間的空白字元並不會出現在輸出結果中,不像 HTML 會合併顯示為一個空格,所以要在字串後多加上一個空白以便區隔下載次數及字串。</p>
-<p>
- 這麼一來,這個轉換 Spread Firefox 首頁為即時摘要的 XSLT 樣式便完成了。</p>
-<h2 id=".E6.8C.87.E5.AE.9A.E6.91.98.E8.A6.81.E4.BE.86.E6.BA.90.E7.9A.84.E9.81.A9.E7.94.A8.E7.AF.84.E5.9C.8D" name=".E6.8C.87.E5.AE.9A.E6.91.98.E8.A6.81.E4.BE.86.E6.BA.90.E7.9A.84.E9.81.A9.E7.94.A8.E7.AF.84.E5.9C.8D">
- 指定摘要來源的適用範圍</h2>
-<p>
- 摘要來源的轉換樣式已大工告成,接下來要指定此樣式適用的網頁。如果我們是 Spread Firefox 的網站管理員,可以在網頁上的 <code>&lt;head&gt;</code> 元素中直接加入 <code>&lt;link rel="microsummary"&gt;</code> 標籤,以便指定此網頁對應的摘要來源:</p>
-<pre class="eval">&lt;head&gt;
- ...
- <b>&lt;link rel="microsummary" href="path/to/our/generator.xml"&gt;</b>
-&lt;/head&gt;
-</pre>
-<p>
- 不過,由於我們並非該站網管,所以就得在檔案中規定此摘要來源的適用網頁,然後把摘要來源檔放到網路上供人下載。為了要指定適用網頁範圍,我們在 <code>&lt;generator&gt;</code> 元素中放上 <code>&lt;pages&gt;</code> 元素:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- &lt;template&gt;
- &lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;
- &lt;output method="text"/&gt;
- &lt;template match="/"&gt;
- &lt;text&gt;Fx 下載數: &lt;/text&gt;
- &lt;value-of select="id('download-count')"/&gt;
- &lt;/template&gt;
- &lt;/transform&gt;
- &lt;/template&gt;
- <b>&lt;pages&gt;</b>
- <b>&lt;/pages&gt;</b>
-&lt;/generator&gt;
-</pre>
-<p>
- <code>&lt;pages&gt;</code> 元素中可以放進多個 <code>&lt;include&gt;</code> 及 <code>&lt;exclude&gt;</code> 元素。元素正如其名,<code>&lt;include&gt;</code> 元素能以規則運算式(regular expression)指定適用網頁,而 <code>&lt;exclude&gt;</code> 元素則以規則運算式指定不適用網頁。</p>
-<p>
- 若無另加規定,則摘要來源預設不適用所有網頁。也就是說,你必須明確指定摘要來源之適用範圍,但如無必要可不必以 <code>&lt;exclude&gt;</code> 排除其他網頁。</p>
-<p>
- 此處加上個 <code>&lt;include&gt;</code> 元素指定 Spread Firefox 首頁為適用範圍:</p>
-<pre class="eval">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;generator xmlns="<span class="nowiki">http://www.mozilla.org/microsummaries/0.1</span>"
- name="Firefox 下載計數"&gt;
- &lt;template&gt;
- &lt;transform xmlns="<span class="nowiki">http://www.w3.org/1999/XSL/Transform</span>" version="1.0"&gt;
- &lt;output method="text"/&gt;
- &lt;template match="/"&gt;
- &lt;text&gt;Fx 下載數: &lt;/text&gt;
- &lt;value-of select="id('download-count')"/&gt;
- &lt;/template&gt;
- &lt;/transform&gt;
- &lt;/template&gt;
- &lt;pages&gt;
- <b>&lt;include&gt;<span class="nowiki">http://(www\.)?spreadfirefox\.com/(index\.php)?</span>&lt;/include&gt;</b>
- &lt;/pages&gt;
-&lt;/generator&gt;
-</pre>
-<p>
- 不熟悉規則運算式的話,可以參考<a href="zh_tw/%e5%bb%ba%e7%ab%8b%e5%8d%b3%e6%99%82%e6%91%98%e8%a6%81%e7%9a%84%e8%a6%8f%e5%89%87%e9%81%8b%e7%ae%97%e5%bc%8f">建立即時摘要的規則運算式</a>一文。</p>
-<h2 id=".E5.AE.89.E8.A3.9D.E5.8D.B3.E6.99.82.E6.91.98.E8.A6.81.E4.BE.86.E6.BA.90" name=".E5.AE.89.E8.A3.9D.E5.8D.B3.E6.99.82.E6.91.98.E8.A6.81.E4.BE.86.E6.BA.90">
- 安裝即時摘要來源</h2>
-<p>
- 現在萬事俱備,只差讓人能下載此摘要來源的機制。我們得先將摘要來源檔上傳到網路,接著再以一段 JavaScript 連結呼叫 Firefox 的 <cite>window.sidebar.addMicrosummaryGenerator()</cite> 方法以便下載安裝。</p>
-<p>
- 舉例而言,如果摘要來源檔的位置在 <a class="external" href="http://people.mozilla.com/~myk/microsummaries/tutorial/sfx-generator.xml" rel="freelink">http://people.mozilla.com/~myk/micro...-generator.xml</a>,而我們希望使用者能從 <a class="external" href="http://people.mozilla.com/~myk/microsummaries/tutorial/index.html" rel="freelink">http://people.mozilla.com/~myk/micro...ial/index.html</a> 上下載安裝,就應該在 <cite>index.html</cite> 網頁上加上此段程式碼:</p>
-<pre class="eval"> <strong>&lt;button onclick="window.sidebar.addMicrosummaryGenerator('<span class="nowiki">http://people.mozilla.com/~myk/microsummaries/tutorial/sfx-generator.xml</span>')"&gt;安裝 SpreadFirefox 首頁即時摘要來源!&lt;/button&gt;</strong>
-</pre>
-<p>
- 不過,如果是不支援即時摘要的瀏覽器,按下此按鈕之後會產生 JavaScript 錯誤,所以我們應該幫使用者點忙、檢查他們的瀏覽器是否支援即時摘要,若不支援則顯示說明訊息:</p>
-<pre class="eval"><strong>&lt;script&gt;</strong>
-<strong> const warning = "不好意思ㄋㄟ,你得用支援即時摘要的瀏覽器 (如 Firefox 2.0) 才能安裝這玩意喔!";</strong>
-<strong> function addGenerator(url) {</strong>
-<strong> if (typeof window.sidebar == "object" &amp;&amp;</strong>
-<strong> typeof window.sidebar.addMicrosummaryGenerator == "function")</strong>
-<strong> window.sidebar.addMicrosummaryGenerator(url);</strong>
-<strong> else</strong>
-<strong> alert(warning);</strong>
-<strong> }</strong>
-<strong>&lt;/script&gt;</strong>
-<strong>&lt;button onclick="</strong><strong><strong>addGenerator</strong></strong><strong>('<span class="nowiki">http://people.mozilla.com/~myk/microsummaries/tutorial/sfx-generator.xml</span>')"&gt;安裝 SpreadFirefox 首頁即時摘要來源!&lt;/button&gt;</strong>
-</pre>
-<p>
- 附帶一提:</p>
-<ul>
- <li>
- 由於 {{ Bug(341283) }} 的關係,目前 <cite>addMicrosummaryGenerator()</cite> 無法支援相對位置的 URL。</li>
- <li>
- 如果存放摘要來源檔的伺服器無法送出正確的 MIME Type (例: Google Pages 的空間),則摘要來源將無效,您可以在網址列輸入 javascript: 來查閱錯誤。</li>
- <li>
- 如果摘要來源檔案中的 XML 或 XSLT 格式有誤,則摘要來源將無效,一樣可以在網址列輸入 javascript: 來查閱錯誤。</li>
-</ul>
-<h2 id=".E7.B5.90.E8.AA.9E" name=".E7.B5.90.E8.AA.9E">
- 結語</h2>
-<p>
- 現在你應該瞭解怎麼製作能顯示 Firefox 下載次數的即時摘要了。試著將 Spread Firefox 首頁存為書籤,然後在<cite>新增書籤</cite>對話方塊中按下<cite>名稱</cite>下拉式選單、選擇<cite>即時標題</cite>之後的項目即可。</p>
-<p>
- 其他關於即時摘要的相關資訊,可以參考 <a class="external" href="http://wiki.mozilla.org/Microsummaries">Microsummaries 主題頁</a>。</p>
diff --git a/files/zh-tw/archive/mozilla/drag_and_drop/index.html b/files/zh-tw/archive/mozilla/drag_and_drop/index.html
deleted file mode 100644
index b963b08118..0000000000
--- a/files/zh-tw/archive/mozilla/drag_and_drop/index.html
+++ /dev/null
@@ -1,142 +0,0 @@
----
-title: Drag and Drop
-slug: Archive/Mozilla/Drag_and_drop
-tags:
- - NeedsTranslation
- - TopicStub
- - XUL
-translation_of: Archive/Mozilla/Drag_and_drop
----
-<p>{{ Next("Drag and Drop JavaScript Wrapper") }}</p>
-<p>{{ deprecated_header("gecko1.9.1") }}</p>
-<div class="warning">
- As of Gecko 1.9.1 (Firefox 3.5), these APIs are officially deprecated <a href="/En/DragDrop/Drag_and_Drop" title="en/DragDrop/Drag and Drop">the newer, simpler, portable API</a> should be used in their place.</div>
-<p>This section describes how to implement objects that can be dragged around and dropped onto other objects.</p>
-<h3 id="The_Drag_and_Drop_Interface" name="The_Drag_and_Drop_Interface">The Drag and Drop Interface</h3>
-<p>Many user interfaces allow one to drag particular objects around within the interface. For example, dragging files to other directories, or dragging an icon to another window to open the document it refers to. Mozilla and <a href="/en/XUL" title="en/XUL">XUL</a> provide a number of events that can handle when the user attempts to drag objects around.</p>
-<p>A user can start dragging by holding down the mouse button and moving the mouse. The drag stops when the user releases the mouse. Event handlers are called when the user starts and ends dragging, and at various points in-between.</p>
-<p>Mozilla implements dragging by using a drag session. When a user requests to drag something that can be dragged, a drag session should be started. The drag session handles updating the mouse cursor and where the object should be dropped. If something cannot be dragged, it should not start a drag session. Because the user generally has only one mouse, only one drag session is in use at a time.</p>
-<p>Note that drag sessions can be created from within Mozilla itself or from other applications. Mozilla will translate the data being dragged as needed.</p>
-<p>The list below describes the event handlers that can be called, which may be placed on any element. You only need to put values for the handlers where you need to do something when the event occurs.</p>
-<dl>
- <dt>
- ondrag {{ Fx_minversion_inline(3) }}</dt>
- <dd>
- Called periodically throughout the drag and drop operation.</dd>
- <dt>
- ondraggesture </dt>
- <dd>
- Called when the user starts dragging the element, which normally happens when the user holds down the mouse button and moves the mouse. The script in this handler should set up a drag session.</dd>
- <dt>
- ondragstart {{ Fx_minversion_inline(3) }} </dt>
- <dd>
- An alias for <code>ondraggesture</code>; this is the HTML 5 spec name for the event and may be used in HTML or XUL; however, for backward compatibility with older versions of Firefox, you may wish to continue using <code>ondraggesture</code> in XUL.</dd>
- <dt>
- ondragover </dt>
- <dd>
- This event handler is called for an element when something is being dragged over top of it. If the object can be dropped on the element, the drag session should be notified.</dd>
- <dt>
- ondragenter </dt>
- <dd>
- Called for an element when the mouse pointer first moves over the element while something is being dragged. This might be used to change the appearance of the element to indicate to the user that the object can be dropped on it.</dd>
- <dt>
- ondragexit </dt>
- <dd>
- Called for an element when the mouse pointer moves out of an element while something is being dragged. The is also called after a drop is complete so that an element has a chance to remove any highlighting or other indication.</dd>
- <dt>
- ondragdrop </dt>
- <dd>
- This event handler is called for an element when something is dropped on the element. At this point, the user has already released the mouse button. The element can simply ignore the event or can handle it some way, such as pasting the dragged object into itself.</dd>
- <dt>
- ondragend {{ Fx_minversion_inline(3) }} </dt>
- <dd>
- Called when the drag operation is finished.</dd>
-</dl>
-<p>There are two ways that drag and drop events can be handled. This first involves using the drag and drop <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> interfaces directly. The second is to use a <a href="/en/Drag_and_Drop_JavaScript_Wrapper" title="en/Drag_and_Drop_JavaScript_Wrapper">JavaScript wrapper</a> object that handles some of this for you. The code for this wrapper can be found in a file named {{ Source("toolkit/content/nsDragAndDrop.js nsDragAndDrop.js") }} which is contained in the widget-toolkit (or global) package.</p>
-<h3 id="XPCOM_Drag_and_Drop_interfaces" name="XPCOM_Drag_and_Drop_interfaces">XPCOM Drag and Drop interfaces</h3>
-<p>Two interfaces are used to support drag and drop. The first is a drag service, <a href="/en/XPCOM_Interface_Reference/nsIDragService" title="en/nsIDragService">nsIDragService</a> and the second is the drag session, <a href="/en/XPCOM_Interface_Reference/nsIDragSession" title="en/nsIDragSession">nsIDragSession</a>.</p>
-<p>The <a href="/en/XPCOM_Interface_Reference/nsIDragService" title="en/nsIDragService">nsIDragService</a> is responsible for creating drag sessions when a drag starts, and removing the drag session when the drag is complete. The function <code>invokeDragSession</code> should be called to start a drag inside an <code>ondraggesture</code> event handler. Once this function is called, a drag has started.</p>
-<p>The function invokeDragSession takes four parameters, as described below:</p>
-<pre class="eval">invokeDragSession(element,transferableArray,region,actions)
-</pre>
-<dl>
- <dt>
- element </dt>
- <dd>
- A reference to the element that is being dragged. This can be retrieved by getting the property <code>event.target</code> during the event handler.</dd>
- <dt>
- transferableArray </dt>
- <dd>
- An array of <a href="/en/NsITransferable" title="en/NsITransferable">nsITransferable</a> objects, one for each item being dragged. An array is used because you might want to drag several objects at once, such as a set of files.</dd>
- <dt>
- region </dt>
- <dd>
- A region used for feedback indication. This should usually be set to null.</dd>
- <dt>
- actions </dt>
- <dd>
- The actions that the drag uses. This should be set to one of the following constants, or several added together. The action can be changed during the drag depending on what is being dragged over.</dd>
-</dl>
-<dl>
- <dt>
- nsIDragService.DRAGDROP_ACTION_NONE </dt>
- <dd>
- <dl>
- <dt>
- Used to indicate that no drag is valid.</dt>
- <dt>
- nsIDragService.DRAGDROP_ACTION_COPY </dt>
- <dd>
- The item being dragged should be copied to its dropped location.</dd>
- <dt>
- nsIDragService.DRAGDROP_ACTION_MOVE </dt>
- <dd>
- The item being dragged should be moved to its dropped location.</dd>
- <dt>
- nsIDragService.DRAGDROP_ACTION_LINK </dt>
- <dd>
- A link (or shortcut or alias) to the item being dragged should be created in the dropped location.</dd>
- </dl>
- </dd>
-</dl>
-<p>The interface {{ interface("nsIDragService") }} also provides the function <code>getCurrentSession</code> which can be called from within the drag event handlers to get and modify the state of the drag. The function returns an object that implements {{ interface("nsIDragSession") }}.</p>
-<p>The interface <a href="/en/XPCOM_Interface_Reference/nsIDragSession" title="en/nsIDragSession">nsIDragSession</a> is used to get and set properties of the drag that is currently occuring. The following properties and methods are available:</p>
-<dl>
- <dt>
- canDrop </dt>
- <dd>
- Set this property to <code>true</code> if the element the mouse is currently over can accept the object currently being dragged to be dropped on it. Set the value to <code>false</code> if it doesn't make sense to drop the object on it. This should be changed in the <code>ondragover</code> and <code>ondragenter</code> event handlers.</dd>
- <dt>
- dragAction </dt>
- <dd>
- Set to the current action to be performed, which should be one or more of the constants described earlier. This can be used to provide extra feedback to the user.</dd>
- <dt>
- numDropItems </dt>
- <dd>
- The number of items being dragged. For example, this will be set to 5 if five bookmarks are being dragged.</dd>
- <dt>
- getData(transfer,index) </dt>
- <dd>
- Get the data being dragged. The first argument should be an <a href="/en/NsITransferable" title="en/NsITransferable">nsITransferable</a> object to hold the data. The second argument, <code>index</code>, should be the index of the item to return.</dd>
- <dt>
- sourceDocument </dt>
- <dd>
- The document where the drag started.</dd>
- <dt>
- sourceNode </dt>
- <dd>
- The <a href="/en/DOM" title="en/DOM">DOM</a> node where the drag started.</dd>
- <dt>
- isDataFlavorSupported(flavor) </dt>
- <dd>
- Returns <code>true</code> if the data being dragged contains data of the specified flavor.</dd>
-</dl>
-<p>{{ Next("Drag and Drop JavaScript Wrapper") }}</p>
-<div class="originaldocinfo">
- <h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
- <ul>
- <li>Author(s): <a class="link-mailto" href="mailto:enndeakin@sympatico.ca">Neil Deakin</a></li>
- <li>Original Document:</li>
- <li>Copyright Information: Copyright (C) <a class="link-mailto" href="mailto:enndeakin@sympatico.ca">Neil Deakin</a></li>
- </ul>
-</div>
diff --git a/files/zh-tw/archive/mozilla/firefox/index.html b/files/zh-tw/archive/mozilla/firefox/index.html
deleted file mode 100644
index c87802d82f..0000000000
--- a/files/zh-tw/archive/mozilla/firefox/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Firefox
-slug: Archive/Mozilla/Firefox
-translation_of: Archive/Mozilla/Firefox
----
-<p>In progress. Out-of-date information about the Firefox project.</p>
-
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/archive/mozilla/firefox/using_microformats/index.html b/files/zh-tw/archive/mozilla/firefox/using_microformats/index.html
deleted file mode 100644
index 6e7260a691..0000000000
--- a/files/zh-tw/archive/mozilla/firefox/using_microformats/index.html
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: Firefox 3 Using Microformat
-slug: Archive/Mozilla/Firefox/Using_microformats
-translation_of: Archive/Mozilla/Firefox/Using_microformats
----
-<p>Microfotmats 讓網站可以提供語意化的資料給瀏覽器,這是為了讓瀏覽器不需知道如何剖析(parse)文件就可以呈現網頁資訊的摘要。Firefox 3 實做了一個全域的 microformats 物件(global microformats object) 以提供 microformats 的存取。這個物件與其 API 簡化了尋找、讀取 microfotmats 的工作。</p>
-<h3 id=".E8.BC.89.E5.85.A5_microformats_API" name=".E8.BC.89.E5.85.A5_microformats_API">載入 microformats API</h3>
-<p>Microformats 物件是用 Firefox 3 新加入的 JavaScript script loader 建立的。要使用這個 API,你首先需要載入這個物件:</p>
-<pre>Components.utils.import("resource://gre/modules/Microformats.js");</pre>
-<p>一旦載入了這個 microformats API,你就可以使用列在這裡的方式來管理 microformats,詳見 <a class="external" href="http://developer.mozilla.org/en/docs/Parsing_microformats_in_JavaScript">Parsing microformats in JavaScript</a>。</p>
-<h3 id=".E9.A0.90.E5.85.88.E5.AE.9A.E7.BE.A9.E5.A5.BD.E7.9A.84_microformats" name=".E9.A0.90.E5.85.88.E5.AE.9A.E7.BE.A9.E5.A5.BD.E7.9A.84_microformats">預先定義好的 microformats</h3>
-<p>Firefox 3 實做了好幾種常見的 microformats,以下是其定義:</p>
-<dl>
- <dt>
- adr</dt>
- <dd>
- 代表住址 (例如一條街或郵寄住址)。</dd>
- <dt>
- geo</dt>
- <dd>
- 代表使用緯度、經度表示的地理位置。</dd>
- <dt>
- hCard</dt>
- <dd>
- 代表個人的聯絡方式。</dd>
- <dt>
- hCalendar</dt>
- <dd>
- 代表行事曆上的一個約會。</dd>
- <dt>
- tag</dt>
- <dd>
- 用於新增標籤給其他 microformats。
- <h3 id=".E6.96.B9.E5.BC.8F" name=".E6.96.B9.E5.BC.8F">方式</h3>
- <h4 id="add.28.29" name="add.28.29">add()</h4>
- <p>新增一個 microformat 到一個 microformat module。</p>
- <p class="note">如果指定的名稱和現存的 microformat 相同,這個原來存在的 microformat 會被新增的所取代。</p>
- <pre>add(name, definition);</pre>
- <h5 id="Parameters" name="Parameters">Parameters</h5>
- <p> </p>
- <dl>
- <dt>
- name</dt>
- <dd>
- 新增到 microformat module 的 microformat 名稱。</dd>
- <dt>
- definition</dt>
- <dd>
- 描述 microformat 的 JavaScript 結構,詳見 <a class="external" href="http://developer.mozilla.org/en/docs/Describing_microformats_in_JavaScript">Describing microformats in JavaScript</a></dd>
- </dl>
- <h4 id="count.28.29" name="count.28.29">count()</h4>
- <p>計算文件中符合我們指定的類型的 microformats 的數量</p>
- <pre>numMicroformats = Microformats.count(name, rootElement, recurseFrames)</pre>
- <h5 id="Parameters_2" name="Parameters_2">Parameters</h5>
- <p> </p>
- <dl>
- <dt>
- name</dt>
- <dd>
- 要計算的 microformat 名稱。</dd>
- <dt>
- rootElement</dt>
- <dd>
- 可加可不加。代表由此開始搜尋的 DOM 元素,預設是 content.document (換句話說,也就是整份文件)。</dd>
- <dt>
- recurseFrames</dt>
- <dd>
- 可加可不加。如果是 true,搜尋時會連 child frames 一起搜尋,預設是 true</dd>
- </dl>
- <h5 id=".E5.9B.9E.E5.82.B3.E5.80.BC_.28Return_value.29" name=".E5.9B.9E.E5.82.B3.E5.80.BC_.28Return_value.29">回傳值 (Return value)</h5>
- <p>是一個整數值,代表符合指定類型的 microformats 數量。</p>
- <h4 id="debug.28.29" name="debug.28.29">debug()</h4>
- <h4 id="get.28.29" name="get.28.29">get()</h4>
- <h4 id="getNamesFromNode.28.29" name="getNamesFromNode.28.29">getNamesFromNode()</h4>
- <h4 id="getParent.28.29" name="getParent.28.29">getParent()</h4>
- <h4 id="isMicroformat.28.29" name="isMicroformat.28.29">isMicroformat()</h4>
- </dd>
-</dl>
diff --git a/files/zh-tw/archive/mozilla/index.html b/files/zh-tw/archive/mozilla/index.html
deleted file mode 100644
index 0acec76e6d..0000000000
--- a/files/zh-tw/archive/mozilla/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Archived Mozilla and build documentation
-slug: Archive/Mozilla
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Mozilla
----
-<p>These articles are archived, obsolete documents about Mozilla, Gecko, and the process of building Mozilla projects.</p>
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/apis/index.html b/files/zh-tw/archive/mozilla/marketplace/apis/index.html
deleted file mode 100644
index ead011ed63..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/apis/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: 公用程式函式庫與 API
-slug: Archive/Mozilla/Marketplace/APIs
-translation_of: Archive/Mozilla/Marketplace/APIs
----
-<div class="summary">
-<p><span class="seoSummary">如果要將 Firefox Marketplace 的功能寫進 App 與 Web 頁面之中,就必須透過 Marketplace Utility Libraries、Web API、Marketplace API。本文將說明上述方式、使用時機,並提供進一步的說明文件連結。</span></p>
-</div>
-
-<h2 id="Marketplace_Utility_Library">Marketplace Utility Library</h2>
-
-<p>Marketplace Utility Library 可讓開發者避開複雜的 Web API 與 Marketplace API,進而簡化每天的程式撰寫作業。目前雖然只有 1 組函式庫,但隨著 Marketplace 功能不斷擴充,將會陸續提供其他函式庫:</p>
-
-<ul>
- <li><code><a href="https://github.com/mozilla/receiptverifier">receiptverifier</a></code> — 此函式庫可驗證付款收據。可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/Validating_a_receipt">驗證收據</a>》以了解使用方式。</li>
-</ul>
-
-<h2 id="Web_API">Web API</h2>
-
-<p>Marketplace App 必須透過 Web API 才能提供特定功能:</p>
-
-<ul>
- <li><code><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a></code> 及其相關的<a class="external external-icon" href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider"> Web Payment Provider</a> — 此 API 即用以處理 App 內的付款機制 (In-app payments)。同樣可參閱《<a href="/en-US/Marketplace/Monetization/In-app_payments">In-app payments</a>》以了解使用方式。</li>
-</ul>
-
-<h2 id="Marketplace_API">Marketplace API</h2>
-
-<p>針對大多數的一般 App 撰寫需要,其實並用不到 Marketplace API。但某些 Activities (如<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Creating_a_store">設立自己的 App 商店</a>) 就需要此 API。但根據開發者自己的需求,也許 Marketplace Utility Library 還是比較好用。</p>
-
-<p>Marketplace API 的相關說明文件,均已置於 readthedocs.org 的<a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html">這個網址上</a>。如果你需要進一步了解這些 API,亦可加入 <a href="https://lists.mozilla.org/listinfo/dev-marketplace">dev-marketplace</a> 郵件群組。</p>
-
-<div class="note">
-<p>Marketplace API 說明文件,均記錄了正在開發中的 Marketplace API。所以內含的 API 細節尚未公開於 Marketplace 之上。</p>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/faq/index.html b/files/zh-tw/archive/mozilla/marketplace/faq/index.html
deleted file mode 100644
index ba8aa7493a..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/faq/index.html
+++ /dev/null
@@ -1,154 +0,0 @@
----
-title: Firefox Marketplace 常見問題
-slug: Archive/Mozilla/Marketplace/FAQ
-translation_of: Archive/Mozilla/Marketplace/FAQ
----
-<div class="summary">
-<p>本篇文章將解答 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 多個常見的發佈問題。</p>
-</div>
-
-<h2 id="帳戶管理">帳戶管理</h2>
-
-<h3 id="我該如何變更開發者帳戶的資訊?">我該如何變更開發者帳戶的資訊?</h3>
-
-<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上,點選「Edit Account Settings」即可。</p>
-
-<h3 id="我該如何變更開發者付款的資訊?">我該如何變更開發者付款的資訊?</h3>
-
-<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上。點選「My Apps」之後,找到你想變更付款資訊的 App,再點擊「Set Up Payments」即可。</p>
-
-<h3 id="我該到哪找到自己的銷售報表與對帳資訊?">我該到哪找到自己的銷售報表與對帳資訊?</h3>
-
-<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上。點選「My Apps」之後,找到你需要相關資料的 App 即可。</p>
-
-<h3 id="如果我們是多人組成的開發團隊或公司,該如何管理帳戶資訊?">如果我們是多人組成的開發團隊或公司,該如何管理帳戶資訊?</h3>
-
-<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上。點選「My Apps」之後,找到你想變更團隊細節的 App 即可。</p>
-
-<h3 id="我該如何重新命名_App?">我該如何重新命名 App?</h3>
-
-<p>如果你想在 Marketplace 審查之後變更 App 的名稱,就必須再次提交 App 通過審查才行。請參閱<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Updating_apps">更新 App</a> 以進一步了解。</p>
-
-<h3 id="我該如何進入_Firefox_Marketplace_除錯設定?">我該如何進入 Firefox Marketplace 除錯設定?</h3>
-
-<p>登入之後進入 Firefox Marketplace,在搜尋列中輸入「:debug」。</p>
-
-<p>接著你就會看到自己 Marketplace 帳戶的除錯畫面。你可在此畫面中清除 Marketplace 網站、提交記錄、檢視設定、活動記錄等等相關的 cookies<code> 與 localStorage。</code></p>
-
-<h3 id="如果我把_App_提交到自己目前所在地以外的地方,我該如何檢視這些_App?">如果我把 App 提交到自己目前所在地以外的地方,我該如何檢視這些 App?</h3>
-
-<p>如果你自己目前所在之處或擁有手機 SIM 卡的地區,和你 App 發佈地區並不相同,則可透過下列步驟檢視該 App:</p>
-
-<ol>
- <li>進入 Firefox Marketplace 除錯設定 (可參閱上一題)。</li>
- <li>透過「Region Override」與「Carrier Override」選項,選出自己的所在地區或營運商 (只要選完就會立刻更新這些設定)。</li>
- <li>重新整理/載入 Marketplace。</li>
-</ol>
-
-<p>你可以先試著為 App 隨便選個分類,確認系統更新過了相關設定。</p>
-
-<h2 id="App_提交與審查程序">App 提交與審查程序</h2>
-
-<h3 id="我該如何提交新的_App?">我該如何提交新的 App?</h3>
-
-<p>可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/Submitting_an_app">將 App 提交至 Firefox Marketplace</a>》中的詳細步驟。</p>
-
-<h3 id="App_核准程序為何?">App 核准程序為何?</h3>
-
-<p>請參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Submission/Marketplace_review_criteria">Marketplace 審查準則</a>》以了解審查程序的相關準則。</p>
-
-<h3 id="是否有快速審查程序?所採用的準則是否不同?">是否有快速審查程序?所採用的準則是否不同?</h3>
-
-<p>如果開發者正好有絕佳的商機需求,或必須儘快釋出重要修復檔案,即可申請快速審查 App。若需 Marketplace 進行快速審查,可寄發電子郵件到 <a href="https://groups.google.com/forum/#%21forum/mozilla.appreview" title="appreview@lists.mozilla.org">mozilla.appreview</a>,或加入 <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> 中的「#app-reviewers」IRC 頻道。我們會儘快完成快速審查,但不保證審查人員能配合任何特定時間。</p>
-
-<div class="note">
-<p><strong>注意:</strong>對 App 審查團隊來說,「App 快速審查」也算是額外的工作之一。若你有興趣協助我們的審查作業,歡迎透過 <a href="https://docs.google.com/spreadsheet/viewform?formkey=dEdVWVhWUzdIZ1hWTzRvdkJiLXF5dHc6MQ">Firefox App 審查者申請表</a>申請。</p>
-</div>
-
-<h3 id="我的_App_需要遵守內容政策嗎?">我的 App 需要遵守內容政策嗎?</h3>
-
-<p>當然!請參閱<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Submission/Marketplace_review_criteria#.E5.85.A7.E5.AE.B9">《Marketplace 審查準則》中的〈內容〉一章</a>,了解 Mozilla 的內容政策。</p>
-
-<h3 id="如果_App_遭退回或移除,我該如何上訴?">如果 App 遭退回或移除,我該如何上訴?</h3>
-
-<p>如果想為遭退回的 App 上訴,則可直接回覆 App 退回通知的電子郵件 (所有 Marketplace 通知郵件的末端,均告知開發者可直接回覆該電子郵件以提出問題);或可透過 <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> 上的「#app-reviewers」IRC 頻道向我們溝通。</p>
-
-<h2 id="付款">付款</h2>
-
-<h3 id="Firefox_Marketplace_如何運作付款作業?">Firefox Marketplace 如何運作付款作業?</h3>
-
-<p>Mozilla 提供多種付款方式,包含付費 App、免費增值 (Freemium) App、App 內部付費機制 (In-app payments)。若需進一步資訊,可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Marketplace_Payments">Marketplace Payments guide</a>》。</p>
-
-<h3 id="開發者收益的拆帳方式為何?">開發者收益的拆帳方式為何?</h3>
-
-<p>開發者將收到預扣增值稅 (Value Added Tax,VAT) 與費用之後金額的 70%。我們先假設美金訂價 $.99 (Tier 10),歐元訂價則為 €.89;而增值稅率為 20% (根據英國標準增值稅率) 為例,則預扣增值稅之後的價格為 €.74,亦約為 $.99 (有時匯兌之後的價格點數可能變高,有時也會變低)。開發者最後將收到 €.74 的七成金額。</p>
-
-<p>若需價格點數與訂價的相關資訊,可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》。</p>
-
-<h3 id="Mozilla_也會拆得一部分的帳嗎?">Mozilla 也會拆得一部分的帳嗎?</h3>
-
-<p>會。為了維持 Firefox Marketplace 的運作、持續強化 App 平台、支付每次購買行為所產生的交易費用。Mozilla 將收取預扣增值稅後金額的三成,再拆分給 Mozilla、行動網路營運商、付款服務供應商 (如 Bango) 共三方收取。</p>
-
-<h3 id="我一定要使用_Firefox_Marketplace_的付款系統嗎?">我一定要使用 Firefox Marketplace 的付款系統嗎?</h3>
-
-<p>若要讓消費者從 Firefox Marketplace 下載付費 App,就必須使用 Firefox Marketplace 付款系統。我們不會要求 In-app payments 也同樣使用 Marketplace 付款系統,但目前 Firefox OS 中僅建構了 <a href="https://developer.mozilla.org/en-US/docs/Web/API/navigator.mozPay" title="The mozPay function is used to perform payments. It enables an app to use in-app payments."><code>navigator.mozPay()</code></a> 函式 (用於 In-app payments),而該函式就採用 Firefox Marketplace 付款系統。我們以後會讓開發者針對 In-app payments 選用任何付款系統。</p>
-
-<h3 id="將自己的_App_放上_Firefox_Marketplace_後的交易費用?">將自己的 App 放上 Firefox Marketplace 後的交易費用?</h3>
-
-<p>需支付預扣稅額訂價的 30%。換句話說,因為 Marketplace 提供的含稅價格點數已經納入了增值稅 (針對需課增值稅的地區),所以在完成交易之後隨即扣除增值稅,讓開發者取得訂價金額的 70%。</p>
-
-<h3 id="我需要自行設定銷售稅或增值稅率嗎?">我需要自行設定銷售稅或增值稅率嗎?</h3>
-
-<p>不用。針對需課稅的地區,Marketplace 的價格點數均已包含了增值稅。而銷售稅的部分,均另由付款服務供應商列入帳單之中。</p>
-
-<h3 id="我該如何分開付款?">我該如何分開付款?</h3>
-
-<p>Firefox Marketplace 目前尚未提供分開付款的功能。</p>
-
-<h3 id="我能提交免費_App_嗎?會向我收費嗎?">我能提交免費 App 嗎?會向我收費嗎?</h3>
-
-<p>當然。歡迎開發者在 Firefox Marketplace 中提交免費 App,且 Mozilla 不會對免費 App 收取任何費用。</p>
-
-<h3 id="付費_App_還能搭配_In-app_payments_嗎?">付費 App 還能搭配 In-app payments 嗎?</h3>
-
-<p>可以。</p>
-
-<h3 id="退款程序為何?">退款程序為何?</h3>
-
-<p>根據付款方式的不同,退款程序可能由電信營運商、信用卡公司,或付款服務供應商 (如 Bango) 進行。若消費者選用電信帳單代繳的方式,則依照電信營運商的退款政策處理。目前尚無營運商提供退款服務。Bango 則是針對信用卡提供前端支援服務。任何退款均將從開發者的收益之中扣除。</p>
-
-<p>服務條款與<a href="https://developer.mozilla.org/en-US/Marketplace/Submission/Submitting_an_app#Step_1.3A_Agreement">開發者協議</a>均提供了退款政策。一般來說,Marketplace 不會支付退款,但會要求 Bango 進行退款程序。若消費者選用電信帳單代繳的方式,就必須要求電信營運商退款並修正電信帳單。</p>
-
-<h3 id="如何處理詐騙的購買行為?">如何處理詐騙的購買行為?</h3>
-
-<p>尚待完善討論。</p>
-
-<h3 id="Marketplace_如何處理多樣的幣別?">Marketplace 如何處理多樣的幣別?</h3>
-
-<p>根據消費者所選的所在地區,即顯示該地區的預設幣別。另針對付款作業,若消費者目前身處於原本設定的地區之外,就會根據他們收取帳單的地區 (即 SIM 卡所在地),或根據其所在位置收款。如此可避免詐欺行為。</p>
-
-<h3 id="付款時程為何?開發者多久能收到銷售_App_的應得款項?">付款時程為何?開發者多久能收到銷售 App 的應得款項?</h3>
-
-<p>根據付款服務供應商而有所不同;而目前仍由 Bango 負責所有地區的付款作業。開發者可直接與 Bango 洽詢,且每個月均會收到自行對帳用的發票。因為行動服務營運商必須向消費者收取並匯出相關款項,所以支付日期也各有差異。各個國家又會有所不同。而消費者如果採用信用卡付款,都能讓開發者迅速收取款項。若選用電信帳單代繳方式,可能需時 30 ~ 90 天不等。</p>
-
-<h3 id="開發者應如何處理退款?">開發者應如何處理退款?</h3>
-
-<p>請參閱《<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_Payments">Marketplace payments</a>》中的〈<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_Payments#Refunds">Refunds</a>〉一章。</p>
-
-<h3 id="Firefox_Marketplace_可進行臨時銷售或變更訂價嗎?">Firefox Marketplace 可進行臨時銷售或變更訂價嗎?</h3>
-
-<p>我們正規劃價格點數的變更功能,讓開發者能針對「試用期」或「正式銷售」而設定不同的價格。</p>
-
-<h3 id="開發者能銷售_Firefox_的附加元件_(add-ons)_嗎?">開發者能銷售 Firefox 的附加元件 (add-ons) 嗎?</h3>
-
-<p>目前 Firefox Marketplace 僅供銷售 App。我們希望很快就能提供其他內容的銷售服務。</p>
-
-<h2 id="技術問題">技術問題</h2>
-
-<h3 id="誰將可托管_App?">誰將可托管 App?</h3>
-
-<p>開發者可在自己的伺服器上托管 App 的所有檔案。但將 App 提交到 Firefox Marketplace 之後,就必須提供 App 的 manifest 檔案網址,以利 Marketplace 進行讀取並檢驗。開發者另可上傳圖示、截圖等元素,以能順利在 Firefox Marketplace 推銷自己的 App。可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/Submitting_an_app">將 App 提交至 Firefox Marketplace</a>》進一步了解。</p>
-
-<h3 id="如何從_App_直接啟動_Marketplace?">如何從 App 直接啟動 Marketplace?</h3>
-
-<p>開發者可透過 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Web_Activities">Web Activities</a>,從自己的 App 或網站啟動 Marketplace。而 Marketplace 所支援的 activities 均<a href="https://github.com/mozilla/fireplace/wiki/Web-Activities">記錄於 Github 之上</a>。</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/index.html b/files/zh-tw/archive/mozilla/marketplace/index.html
deleted file mode 100644
index 5ce3b790b0..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/index.html
+++ /dev/null
@@ -1,159 +0,0 @@
----
-title: Firefox Marketplace
-slug: Archive/Mozilla/Marketplace
-tags:
- - Apps
- - B2G
- - Firefox OS
- - Marketplace
- - Mobile
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Mozilla/Marketplace
----
-<div class="summary">Firefox Marketplace 為開放且非專利的線上商城,針對以 HTML5 所撰寫的 Web App 所建構。若開發者準備在 Firefox Marketplace 上發佈 App,均可於此專區中找到相關資訊。另有其他指南可帶領你成功打造 App、提供其他選項、將自己的心血轉為實質收益、發佈\更新 App,更有函式庫與 API 可確實發揮 Marketplace 的特色。</div>
-
-<div class="row topicpage-table">
-<div class="section">
-<p class="Community">透過標準的 Web 技術、語言、工具,<a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 可供你發佈免費\付費的 <a href="https://developer.mozilla.org/en-US/Apps">Open Web App</a>。這些可為封裝式 (Packaged) App,於 Firefox 中執行;或可為托管\架設式 (Hosted) App,置於你自己的伺服器之上。已上架的 App 則可用於 Firefox 桌機版、Android 裝置、Firefox OS 手機。而使用者可透過 App 的精選、分類、搜尋等區塊,輕鬆找到自己喜愛的 App。接著就能立刻安裝免費 App,或透過目前持續成長中的信用卡付款\電信帳單代收的功能,購買付費 App。</p>
-
-<div class="row topicpage-table">
-<div class="section">
-<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare">準備發佈 App</a></h2>
-
-<dl>
- <dd>不論你撰寫 App 是純粹好玩或想創造收益,你都會希望有許多人發現、使用、享受你的作品。本章節將解釋該如何拓展能見度,並建立消費者社群。</dd>
-</dl>
-
-<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Options">App 發佈選項</a></h2>
-
-<dl>
- <dd>到底要用封裝式或托管\架設式 App?了解應如何發表自己 App 的內容。且除了 Firefox OS 之外,亦可讓 App 躍上 Android 裝置與桌上型電腦。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Creating_a_store">建立自己的 App 商城</a></dt>
- <dd>你不一定要透過 Firefox Marketplace 發佈自己的 App。了解應如何建立自己的 App 商城,或為其他開發者的 App 建立商城。</dd>
-</dl>
-
-<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Profiting_from_your_app">轉為實質收益</a></h2>
-
-<dl>
- <dd>如果你負責撰寫 App,則可透過本章節了解 Open Web App 與 Firefox Marketplace 所提供的收益選項。另亦提供 App 內付款 (In-app payments) 的詳細資訊。</dd>
-</dl>
-</div>
-
-<div class="section">
-<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Introduction">發佈 App</a></h2>
-
-<dl>
- <dd>快向世界發佈你的 App。了解應如何讓 Firefox Marketplace 發佈 App,包含 App 提交程序、審查程序、更新程序、了解上架後的效益,並觀看消費者的反應意見。</dd>
-</dl>
-
-<h2 class="Tools" id="Tools" name="Tools">App 開發工具</h2>
-
-<dl>
- <dt><a href="https://developer.mozilla.org/en-US/Marketplace/APIs">Firefox Marketplace 函式庫與 API</a></dt>
- <dd>概略了解目前可用的函式庫與 API,為自己在 Marketplace 上的 App 添增功能。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS 的「應用程式管理員 (App Manager)」</a></dt>
- <dd>從桌上型電腦為 Open Web App 測試、佈署、除錯的主要工具。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/Apps/Tools_and_frameworks/App_developer_tools">App 開發工具</a></dt>
- <dd>完整工具清單,可供你有效率的開發 Open Web App 並樂在其中。</dd>
-</dl>
-</div>
-</div>
-</div>
-</div>
-
-<h2 id="Subnav">Subnav</h2>
-
-<ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare">準備發佈 App</a>
-
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Introduction">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Deciding_what_to_build">決定所要撰寫的東西</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare_For_Success/Getting_to_know_your_users">了解目標消費者</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Choosing_your_business_model">選擇自己的營運模式</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare_For_Success/Quality_and_your_app">撰寫高品質 App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Localizing_your_apps">當地語系的 App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app">推銷自己的 App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Creating_your_community">建立自己的群組</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options">發佈選項</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Introduction">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Hosted_apps">托管\架設式 (Hosted) App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_or_hosted_">要封裝抑或托管?</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">適合 Android 的 Open Web App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">適合桌上型電腦的 Open Web App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Creating_a_store">建立自己的商城</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization">產生實質收益</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Introduction_Monetization">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Profiting_from_your_app" title="This guide contains introductory materials on how to monetize your apps, including tools needed, and a monetization calculator.">用自己的 App 創造收益</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_payments_guide">App 付款指南</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/Introduction_In-app_Payments" title="A guide to implementing support for in-app payments in your Web app.">應用程式內付款 (In-app payments)</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/Introduction_In-app_Payments">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/mozPay_iap">透過 mozPay</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/fxPay_iap">透過 fxPay</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/validating_a_receipt" title="A guide to when—and how—to validate your app's purchase receipt.">驗證收據</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_pricing" title="A round up of fixed price points you can choose for your paid apps, and how these vary across different currencies, along with useful supporting information on dealing with app payments.">App 定價表</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status" title="An at-a-glance summary of what countries have got our app payment services set up in them — where paid apps can be distributed">付款服務狀態</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App 發佈概述</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Introduction">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submission_checklist">提交作業檢查清單</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Marketplace_review_criteria" title="An explanation of the criteria an app must meet in order to be published on the Firefox Marketplace">Marketplace 審查準則</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Adding_a_subdomain" title="For security reasons, each app must have its own domain (or subdomain) on the Web. This article covers how to go about creating a subdomain for your app.">為 App 添增子網域</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines">策略與指南</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Introduction">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria" title="Some guidelines on how to create an effective screenshot for marketplace submission">Marketplace 截圖準則</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies" title="Your users' privacy is very important, so you need to develop and adhere to a reasonable privacy policy to engender their trust. This article provides a guide to developing privacy policies.">隱私權政策</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">App 測試與疑難排解</a></li>
- </ol>
- </li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit">提交 App</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Overview">概述</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account" title="This step-by-step guide will help you successfully submit your app to the Firefox Marketplace.">Step 1:登入</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Load_your_app">Step 2:上傳</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">Step 3:列出細節</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Next_steps">Step 4:後續步驟</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Rating_Your_Content">Step 5:App 評分</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing">Step 6:制定 App 的價格</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Introduction">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Payment_Accounts">付款帳戶</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Providers/Bango">Bango</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Providers/Boku">Boku</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version">用「升級」的方式推廣</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/In-app_products">fxPay 的 App 產品</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Define_your_team">Step 7:定義團隊成員</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/View_your_listing">Step 8:檢視列表</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Step 9:編輯其他本地化的內容</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps">管理並更新已發佈的 App</a>
- <ol>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/Introduction_Managing_your_apps">介紹</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/Status___Versions">App 的狀態</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Updating_apps" title="Information about how both hosted and packaged app updates are handled, and what you need to do to ensure that your app properly supports updating.">更新 App</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/App_Statistics">App 狀態</a></li>
- </ol>
- </li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/APIs">函式庫與 API</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/FAQ">Firefox Marketplace 常見問題</a></li>
-</ol>
diff --git a/files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html b/files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html
deleted file mode 100644
index 372284a029..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Firefox Marketplace API
-slug: Archive/Mozilla/Marketplace/Marketplace_APIs
-translation_of: Archive/Mozilla/Marketplace/Marketplace_APIs
----
-<div class="summary">
- <p><span class="seoSummary">提供 Firefox Marketplace API 的主要參考文章,可協助你進行 App 提交作業、設定 App 的付款帳戶,及其他更多相關重要步驟。</span></p>
-</div>
-<div class="row topicpage-table">
- <div class="section">
- <dl>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/Marketplace_utility_library">Marketplace 公用程式函式庫</a></dt>
- <dd>
- 可協助你順利進行 Firefox Marketplace 的相關作業。你可將內含的 JavaScript 函式庫用於自己的 App 之內,以輕鬆處理應用程式內付款 (In-app payments) 並驗證付款收據。</dd>
- <dt>
- <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/submission.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/submission.html">Submission API</a></dt>
- <dd>
- Submission API 可讓你檢驗並更新 App,並在安裝之前提取 App 的可用資訊。</dd>
- <dt>
- <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html">Payment API</a></dt>
- <dd>
- Payment API 可讓你取得 In-app payments 的資訊,以及不同國家的訂價情形。</dd>
- <dt>
- <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html">其他 Marketplace API</a></dt>
- <dd>
- Firefox Marketplace API 的完整說明文件。</dd>
- </dl>
- </div>
- <div class="section">
- <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5>
-<ul>
- <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li>
- <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li>
- <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li>
-</ul>
-<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5>
-<div class="twocolumns">
- <ul>
- <li><a href="/en-US/docs/Web/CSS">CSS</a></li>
- <li><a href="/en-US/docs/DOM">DOM</a></li>
- <li><a href="/en-US/docs/Web/HTML">HTML</a></li>
- <li><a href="/en-US/docs/JavaScript">JavaScript</a></li>
- <li><a href="/en-US/docs/WebAPI">WebAPI</a></li>
- <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li>
- <li><a href="/en-US/docs/SVG">SVG</a></li>
- <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li>
- <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li>
- </ul>
-</div>
-<h5 class="Community" id="Community" name="Community">Getting help from the community</h5>
-<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p>
-<ul>
- <li>Consult the webapps forum: <ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li>
-
-
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li>
-</ul>
- <ul>
- <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li>
- </ul>
- </li>
-</ul>
-<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html
deleted file mode 100644
index a1f464f224..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: 建構付費 App
-slug: Archive/Mozilla/Marketplace/Monetization/App_payments_guide
-translation_of: Archive/Marketplace/Monetization/App_payments_guide
----
-<div class="summary">
- <p style="margin: 0px 0px 1.286em; padding: 0px; line-height: 1.5em;">Firefox Marketplace 的消費者有兩種需要付款的情形:<br>
- 1). 購買 App 需付款 (付費 App)<br>
- 2). 在安裝 App 之後另外購買某樣東西需付款;即 App 內付款機制 (In-app payment)<br>
- 本文即提供付費 App 所需的程式碼與作業流程,另外將有另一篇文章說明 <a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments">In-app payments</a>。</p>
-</div>
-<h2 id="選擇封裝方式_(Packaged_或_Hosted)"><strong>選擇封裝方式</strong> (Packaged <strong>或</strong> Hosted)</h2>
-<p>在了解付款方式之前,先決定自己的 App 應該是封裝式 (Packaged),或架設/托管式 (Hosted)。如果想處理為封裝式 App,就必須遵守內容安全政策 (Content Security Policy,CSP)。可參閱下列說明以進一步了解。</p>
-<ul>
- <li><a href="https://developer.mozilla.org/zh-TW/Apps/Developing/Packaged_apps/Packaged_apps">封裝式 App</a>:了解封裝式與架設/托管式 App 之間的不同。其中也初步說明封裝式 App 所需的內容安全政策。</li>
- <li><a href="https://wiki.mozilla.org/Apps/Security#Default_CSP_policy">內容安全政策 (CSP)</a>:解釋 CSP 之含意。</li>
-</ul>
-<h2 id="建構付費_App"><strong>建構付費 A</strong>pp</h2>
-<div>
- <p>任何 App 都能設定為付費 App,也都能是封裝式或架設/托管式 App;完全不需特別的權限。在將 App 提交到 Firefox Marketplace 時,只要勾選使其成為付費 App 即可。但開發者需讓 App 驗證自己的銷售收據,才能確認收到帳款。接下來就是應進行的步驟。</p>
- <h3 id="將_installs_allowed_from_添增到_manifest.webapp"><strong>將</strong> installs_allowed_from <strong>添增到</strong> manifest.webapp</h3>
- <p>首先必須將 <code>installs_allowed_from</code> 欄位添增到 <a href="/en-US/Apps/Developing/Manifest">App 的 manifest 檔案</a>中。另給予如下的 Firefox Marketplace 網址:</p>
- <pre class="brush: js">"installs_allowed_from": [ "https://marketplace.firefox.com" ]</pre>
- <p>這個步驟屬於收據驗證作業的一部分,才能讓系統確認 App 來自於收款的商店。</p>
-</div>
-<h3 id="驗證收據">驗證收據</h3>
-<p>只要從 Marketplace 售出 App 之後,隨即會產生該筆銷售的數位收據。開發者應該為自己的 App 植入程式碼,讓 App 執行時能一併驗證銷售收據。我們強烈建議,但不強制驗證收據。此查核作業可避免消費者安裝了 App 卻未付費。</p>
-<p>Mozilla 另負責維護 JavaScript 輔助函式庫 (Helper),即所謂的 <a href="https://github.com/mozilla/receiptverifier" title="https://github.com/mozilla/receiptverifier">receiptverifier</a>,只要少量程式碼即可驗證收據。只要將下列 <code>receiptverifier</code> 函式庫加入 App 即可:</p>
-<ul>
- <li><a href="https://github.com/mozilla/receiptverifier/blob/master/receiptverifier.js" style="line-height: 1.572;">receiptverifier.js</a></li>
- <li><a href="https://github.com/mozilla/receiptverifier/blob/master/receiptverifier-ui.js">receiptverifier-ui.js</a></li>
-</ul>
-<p>再將下列程式碼加入 App (更改內文以符合自己的 App),即可驗證收據:</p>
-<pre class="brush: js" style="font-size: 14px;">mozmarket.receipts.Prompter({
- storeURL: "https://marketplace.firefox.com/app/your-app",
- supportHTML: '&lt;a href="mailto:you@yourapp.com"&gt;email you@yourapp.com&lt;/a&gt;',
- verify: true
-});</pre>
-<p>正常只要啟動 App 就會開始驗證收據。如果確認收據有效,即可釋放 App 的資源;反之可停止 App 執行。</p>
-<div class="note">
- <p><strong>注意:</strong>若要進一步建立自己的收據驗證器,可參閱<a href="/en-US/Marketplace/Monetization/Validating_a_receipt">驗證收據</a>。</p>
-</div>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li><a href="https://hacks.mozilla.org/2013/02/building-a-paid-app-for-firefox-os" title="https://hacks.mozilla.org/2013/02/building-a-paid-app-for-firefox-os">建構 Firefox OS 的付費 App</a>:內有更多付費 App 相關資訊的連結。</li>
- <li><a href="https://github.com/mozilla/receiptverifier" title="https://github.com/mozilla/receiptverifier">receiptverifier</a> 函式庫:使用上述函式庫的說明文件與範例。</li>
- <li><a href="https://wiki.mozilla.org/Apps/WebApplicationReceipt" title="https://wiki.mozilla.org/Apps/WebApplicationReceipt">Web App 收據</a>:數位收據的詳細說明資訊。</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html
deleted file mode 100644
index 4d7c3fbc32..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html
+++ /dev/null
@@ -1,3698 +0,0 @@
----
-title: 制定 App 的價格
-slug: Archive/Mozilla/Marketplace/Monetization/App_pricing
-translation_of: Archive/Marketplace/Monetization/App_pricing
----
-<div class="summary">
-<p>本文將為開發者說明在 Firefox Marketplace 中制定 App 價格與收款的方法。因為開發者可能在 Firefox Marketplace 中跨國制定不同的價格,所以定價方式有點複雜。本文即提供相關資訊,如訂價、拆帳、課稅、付款方式、應收帳款、防止詐騙等等。</p>
-</div>
-
-<h2 id="以「價格點數」定價"><strong>以「價格點數」定價</strong></h2>
-
-<p>在 Firefox Marketplace 中,開發者必須透過固定的「價格點數 (Price point)」完成定價。開發者可選擇任一價格點數,而該價格點數隨即套用為各地區通用貨幣的等值定價。針對開發者所選定 App 或應用程式內部付費 (In-app Payments) 的販售地區,當地消費者就能透過系統得知 App 的定價。價格點數範圍從 US$0.10 (點數 1) 到 US$49.99 (點數 140)。Firefox Marketplace 中的 App 與 In-app Payments,均適用價格點數的定價方式。</p>
-
-<p><strong>範例:</strong>若 App 設定為「10」價格點數,則在流通美金的地區就是售價 US$0.99 (未含當地銷售稅);流通歐元的地區就是售價 €0.89 (已含歐洲增值稅)。在哥倫比亞的電信帳單代繳售價為 COP$2060.00 (包含哥倫比亞區的增值稅),信用卡繳款的售價則為 US$0.99。</p>
-
-<h3 id="價格點數表"><strong>價格點數表</strong></h3>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th rowspan="2">Price point</th>
-
- <th>Austria</th>
-
- <th>Belgium</th>
-
- <th>Brazil</th>
-
- <th>Chile</th>
-
- <th>Colombia</th>
-
- <th>Cyprus</th>
-
- <th>Estonia</th>
-
- <th>Finland</th>
-
- <th>France</th>
-
- <th>Germany</th>
-
- <th>Greece</th>
-
- <th>Hungary</th>
-
- <th>Ireland</th>
-
- <th>Italy</th>
-
- <th>Latvia</th>
-
- <th>Lithuania</th>
-
- <th>Luxembourg</th>
-
- <th>Malta</th>
-
- <th>Mexico</th>
-
- <th>Netherlands</th>
-
- <th>Peru</th>
-
- <th>Poland</th>
-
- <th>Portugal</th>
-
- <th>Slovakia</th>
-
- <th>Slovenia</th>
-
- <th>Spain</th>
-
- <th>United Kingdom</th>
-
- <th>United States</th>
-
- <th>Uruguay</th>
-
- <th>Venezuela</th>
-
- <th>Rest of World</th>
-
- </tr><tr>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- <th></th>
-
- </tr>
- </thead>
- <tbody>
- <tr>
- <th>VAT/Tax included in price</th>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>no</td>
-
- <td>yes&amp;nbsp;(19%)</td>
-
- <td>yes&amp;nbsp;(16%)</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>yes&amp;nbsp;(19%)</td>
-
- <td>yes&amp;nbsp;(23%)</td>
-
- <td>yes&amp;nbsp;(27%)</td>
-
- <td>unknown</td>
-
- <td>yes&amp;nbsp;(22%)</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>yes&amp;nbsp;(16%)</td>
-
- <td>unknown</td>
-
- <td>yes&amp;nbsp;(18%)</td>
-
- <td>yes&amp;nbsp;(23%)</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>unknown</td>
-
- <td>yes&amp;nbsp;(21%)</td>
-
- <td>yes&amp;nbsp;(20%)</td>
-
- <td>no</td>
-
- <td>yes&amp;nbsp;(22%)</td>
-
- <td>yes&amp;nbsp;(12%)</td>
-
- <td>no</td>
-
- </tr>
-
-
- <tr>
- <th>Tier 0</th>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- 0&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- €0
-
- </td>
-
- <td>
-
- £0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- $0
-
- </td>
-
- <td>
-
- $0
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 1</th>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- €0.1
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- €0.1
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;25
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- 0.49&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 5</th>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- €0.25
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- €0.25
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;70
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- $3.75
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- 0.98&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 7</th>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- €0.4
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- €0.4
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;135
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- $7.51
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- 1.99&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span>
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- <td>
-
- n/a
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 10</th>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2060
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
-
- </td>
-
- <td>
-
- €0.89
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;270
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $15
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 3.99&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €0.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £0.75
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $0.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 20</th>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4150
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
-
- </td>
-
- <td>
-
- €1.89
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;545
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $30
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 7.69&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €1.89
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £1.5
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $1.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 30</th>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6240
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
-
- </td>
-
- <td>
-
- €2.79
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;820
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $45
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 11.59&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €2.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £2.25
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $2.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 40</th>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $8320
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
-
- </td>
-
- <td>
-
- €3.79
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;1095
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $60
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 15.49&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €3.79
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £3
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $3.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 50</th>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $10420
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
-
- </td>
-
- <td>
-
- €4.69
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;1360
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $75
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 19.5&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €4.69
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £3.75
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $4.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 60</th>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14600
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
-
- </td>
-
- <td>
-
- €6.59
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;1900
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $105
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 26.99&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €6.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £5.25
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $6.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 70</th>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $20840
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
-
- </td>
-
- <td>
-
- €9.49
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;2720
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $150
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 38.79&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €9.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £7.5
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $9.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 80</th>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $26070
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
-
- </td>
-
- <td>
-
- €11.59
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;3400
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $185
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 48.49&amp;nbsp;zł
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €11.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £9.5
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $12.49
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 90</th>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $31280
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
-
- </td>
-
- <td>
-
- €14.19
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;4080
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $225
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 57.99&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €14.19
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £11.25
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $14.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 100</th>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $41720
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
-
- </td>
-
- <td>
-
- €18.99
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;5450
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $300
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 77.49&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €18.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £15
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $19.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 110</th>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $52160
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
-
- </td>
-
- <td>
-
- €23.59
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;6800
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $375
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 96.99&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €23.59
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £18.75
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $24.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
- <tr>
- <th>Tier 120</th>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $62580
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
-
- </td>
-
- <td>
-
- €28.39
-
- </td>
-
- <td>
-
- Ft&amp;nbsp;8170
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $450
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- 116.49&amp;nbsp;zł
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- €28.39
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- £22.5
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- <td>
-
- $29.99
- <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span>
-
- </td>
-
- </tr>
-
-
- </tbody>
- <caption><small>Last updated: 1519101168023.</small></caption>
-
-</table>
-<ul style="list-style-type: none;">
- <li id="pricetable_fn_1">[1] Credit card purchase only.</li>
- <li id="pricetable_fn_1">[2] Carrier billing only, no credit card purchase.</li>
-
-</ul>
-
-<h2 id="制定自己產品的價格">制定自己產品的價格</h2>
-
-<p>如果要為自己的 App 或 In-app 產品定價,就必須選擇價格點數與想要銷售的地區。對 App 來說,選擇銷售國家並不會限制其他國家的消費者購買 App,只會決定 App 所將上架的國家 (可能不只一個國家)。即使消費者身處其他國家,只要付款方式亦適用 App 的上架國家,就同樣可購買該 App。</p>
-
-<h2 id="價格點數表如何運作?"><strong>價格點數表如何運作?</strong></h2>
-
-<p>Marketplace 將針對各種幣別預先設定匯率,再轉換為美金以外的計價並四捨五入,以更為貼近市場友善的數字。四捨五入的價格與外幣匯率的波動,都代表美金以外的定價不會隨時等值於美金現價。除非需穩定多國換匯之後的相對價格,否則美金以外的定價均將保持不動。Mozilla 也不會刻意常常調整定價,且最快每六個月才會調價一次。價格點數一般均保持在美金定價的 1% ~ 2% 之內。而由於某些國家定價另納入了增值稅,因此可能超出此範圍。</p>
-
-<h3 id="含稅價與未稅價的價格點數"><strong>含稅價與未稅價的價格點數</strong></h3>
-
-<p>顯示於不同地區的價格可能含稅或未稅。含稅價代表該價格已含稅 (一般為增值稅,VAT) 並顯示給消費者知道。未稅價則代表稅額 (若有對應稅額) 將另外再加至顯示的價格中。</p>
-
-<p>各國家與地區的增值稅略有不同,但一般均依照 App 販售國家 (由電信營運商收取) 的增值稅率而定;或是在英國適用增值稅的地區以信用卡付款,則為 20% 增值稅率。一旦消費者確定付款之後,就會根據其付款資訊中登記地區的幣別,或目前所在地區的幣別計算。</p>
-
-<p>如果消費者所在地區顯示的是未稅價,則當地稅額與費用將再加入 App 售價之中。消費者可能要收到發票,或由銀行/電信營運商寄發對帳單之後,才會看到實際的稅額。</p>
-
-<h2 id="如何拆帳?"><strong>如何拆帳?</strong></h2>
-
-<p>在將自己設定為「開發者」的付款帳戶之後,即可選擇往後收款的幣別。目前支援的付款幣別包含美金 ($)、歐元 (€)、英鎊 (£)。若是含稅價格,則開發者在正常情況下會收到「消費者購買 App 金額扣除稅額與特定費用」的 70%。若是未稅價格,則會收到「消費者針對 App 定價表付款」的 70%;應付稅額另再加到消費者實際付款額之中。由於匯率浮動與增殖稅率的差異,各地區的實收金額也有所變動。</p>
-
-<p>而上述金額的另外 30%,將由 Mozilla、電信營運商、第三方支付供應商拆帳。其內包含商業交易程序的相關交易與服務費用。根據目前既定的分配方式,Mozilla 約將收取 5% ~ 7.5%。</p>
-
-<div class="note">
-<p>若選用電信帳單代繳方式,則開發者所能收到的款項可能又有差異。請到<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status">付款狀態</a>了解相關細節,進一步了解該國電信營運商的拆帳規定。</p>
-</div>
-
-<h2 id="付款方式:電信帳單代繳與信用卡"><strong>付款方式:電信帳單代繳與信用卡</strong></h2>
-
-<p>透過 Firefox Marketplace 販售自己 App 的絕佳優點之一,就是能直接讓消費者透過行動電話帳單付款。對信用卡尚未普及的新興市場而言,此特色絕對是目前行動付款的重要媒介。</p>
-
-<p>目前為止,電信營運商必須與 Mozilla 簽訂合約之後,才能在所屬地區提供電信帳單代繳的服務。消費者必須申請該電信營運商的 SIM 卡並預繳特定金額,以順利支付 App 或 In-app Payment 的款項。當然,消費者亦可透過信用卡購買 App。</p>
-
-<p>針對客戶透過自己行動電話號碼付費的機制,某些電信營運商另設有最低與最高額度,而且各家營運商均有不同。若 App 定價超出該額度,則款項預設轉為信用卡支付;但又並非所有消費者均擁有信用卡。又有些地區並無法和營運商值接建立帳單服務,而必須透過信用卡付款,如此就限定需以美金、歐元、英鎊購買 App。</p>
-
-<div class="note">
-<p><strong>注意:</strong>針對信用卡部分,目前最低收費款項為 10 價格點數 (即美金 $0.99 元整);而最高款項為美金 $30.00 元整。接受 Visa® 與 MasterCard® 信用卡。</p>
-</div>
-
-<h2 id="慎防詐騙"><strong>慎防詐騙</strong></h2>
-
-<p>第三方支付供應商應已有多種防止詐騙的方式。為了減少詐騙行為,目前僅限消費者實際所在地銀行發行的信用卡,才能用以支付 App 購買款項。因此,消費者若持巴西境內銀行所發行的信用卡,就只能在巴西國內使用該信用卡,而不能跑到哥倫比亞境內購買 App。</p>
-
-<h2 id="取得自己的收益:設定收款帳戶"><strong>取得自己的收益:設定收款帳戶</strong></h2>
-
-<p>開發者若要能確實收到自己 App 或 In-app Payments 所創造的營收,必須先針對自己所選擇的 App 販售地區,開好當地支付供應商所提供的帳戶。各家支付供應商都具備服務條款,與 Mozilla 的服務條款不盡相同。開發者必須同意供應商的條款之後,才能透過 Firefox Marketplace 銷售自己的 App 或取得 In-app Payments 款項。</p>
-
-<p>你也可在 Firefox Marketplace 中設定開發者的收款帳戶。先找到 App 的「Compatibility &amp; Payments」之後,針對你所選擇的販售地區新增收款帳戶即可。</p>
-
-<div class="note">
-<p><strong>注意:</strong>Bango 則是 Firefox Marketplace 的支付供應商。</p>
-</div>
-
-<h2 id="收取屬於自己的款項"><strong>收取屬於自己的款項</strong></h2>
-
-<p>開發者可直接與支付供應商往來,以順利取得屬於自己的款項。你會收到「自行對帳發票 (Self Billing Invoice,SBI)」,其中將列舉開發者銷售總額、消費者退費總額、開發者實際收取總額。若你的 App 販售地區可退增值稅,則總額也將包含增值稅額。</p>
-
-<p>你可透過自己在 Firefox Marketplace 中的開發者帳戶,找到支付供應商的付款入口網頁。由於各國電信營運商入帳時程各有不同,且消費法規也可能影響退款速度,所以帳戶的收款條件與時程也有所差異。請自行了解第三方支付供應商的相關條件與說明。</p>
-
-<h2 id="稅額"><strong>稅額</strong></h2>
-
-<p>本章節將說明銷售稅的處理方式。</p>
-
-<h3 id="增值稅_(Value_Added_Tax,VAT)"><strong>增值稅 (Value Added Tax,</strong>VAT<strong>)</strong></h3>
-
-<p>Bango 可針對當地的稅捐機關,處理增值稅 (VAT) 的退稅問題。根據各個國家與地區的法律規定,相關徵稅與退稅的條件均有不同。開發者可向會計師或稅捐機關諮詢。而自行對帳發票 (SBI) 將根據增值稅稅前金額,開立發票給 Bango。開發者到時候觀看支付清單即可了解運作情形。如果開發者身處不屬於「販售者需支付增值稅」的地區,則應該會收到當地稅捐機關的退稅。相關細節請向會計師諮詢。</p>
-
-<h3 id="預扣稅額與換匯費用"><strong>預扣稅額與換匯費用</strong></h3>
-
-<p>Bango 可支付美金 ($)、歐元 (€)、英鎊 (£),讓開發者自行選擇適合的幣別。Bango 可能會因法條規範,為開發者預扣或繳付當地稅額,因此會從支付帳款中扣除應付稅額。各國的預扣稅率均不相同,也可能必須支付換匯費用。在將當地貨幣換成等值的美金、歐元、英鎊時,就可能產生 1.9% ~ 2.5% 的換匯費用。這項費用對開發者並不友善,而 Mozilla 也正研究是否有替代方案。</p>
-
-<h2 id="開發者的收益"><strong>開發者的收益</strong></h2>
-
-<p>因所在國家、當地貨幣、付款方式的不同,開發者販售 App 所獲得的收益也有所差異。可參閱<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status">付款狀態</a>以進一步了解各國的付款細節。</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html
deleted file mode 100644
index 35e3fe4117..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html
+++ /dev/null
@@ -1,332 +0,0 @@
----
-title: 應用程式內部付費 (In-app payments)
-slug: Archive/Mozilla/Marketplace/Monetization/In-app_payments
-translation_of: Archive/Marketplace/Monetization/In-app_payments_section/mozPay_iap
----
-<div class="summary">
- <p><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a> API 可讓網頁內容執行數位貨品的付款作業,並能接收由付款服務商所傳來的購買確認訊息。我們也針對此 API 建構了 <a href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider">Web 付款服務商</a>,讓你能取得數位貨品的款項。本文將說明該如何使用<span class="seoSummary"> <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a> API 與 <a href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider">Web 付款服務商</a>的服務,以達到應用程式內付款 (In-app payments)。</span></p>
- <div class="note">
- <p>另外現正開發「<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/fxPay_iap">fxPay</a>」付款處理機制。FxPay 不會要求開發者必須架設伺服器以進行購買行為驗證,可算是更完整的付款方式。</p>
- </div>
-</div>
-<h2 id="In-app_payments_概述">In-app payments 概述</h2>
-<p>讓你為自己的 App 添加 In-app payments 機制,與其運作的方法:</p>
-<ul>
- <li>登入 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心 (Developer Hub)。</a></li>
- <li><a href="https://marketplace.firefox.com/developers/submit/">上傳 App</a>、將 App 設定為 Paid 或 In-app 付款、產生應用程式金鑰 (Application Key) 與應用程式安全金鑰 (Application Secret)。</li>
- <li>App 將透過上述的安全金鑰 (Secret) 簽署 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JWT</a> 請求,並呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay(...)</code></a> 而開始付款作業</li>
- <li>系統將另開一個特殊視窗執行付款流程
- <ul>
- <li>消費者若尚未登入,則以 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Persona">Mozilla Persona</a> 登入</li>
- <li>消費者輸入自己的 PIN 碼</li>
- <li>消費者透過電信帳單或信用卡付費</li>
- </ul>
- </li>
- <li>消費者關閉視窗之後,你的 App 就會收到 JavaScript 回呼 (Callback)</li>
- <li>你的 App <strong>伺服器</strong>將接收已簽署的 POST 請求,內含的 Mozilla 交易 ID 將指出已成功完成購買程序</li>
- <li>所得金額將直接匯入你的銀行帳戶</li>
-</ul>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> API 目前限用於 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a>。你同樣可透過 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS 應用程式管理員 (App Manager)</a> 測試此 API。</p>
-<div class="note">
- <p><strong>注意:</strong>如果是在 Firefox OS 1.2 裝置上測試,只要該裝置內並無 SIM 卡,則 <code>mozPay</code> 呼叫將失敗。但消費者只要裝入 SIM 卡就可解決此問題。目前市面上販售的 Firefox OS 裝置均未安裝 Firefox 1.2。若要進一步了解,可參閱 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=989022">bug 989022</a>。</p>
-</div>
-<h2 id="逐步設定_In-app_payment">逐步設定 In-app payment</h2>
-<p>接著說明該如何設定 In-app payment。</p>
-<h3 id="取得測試用的付款金鑰_(Payment_Key)"><strong>取得測試用的付款金鑰 (Payment Key)</strong></h3>
-<p>在登入至 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>時,可前往 <a href="https://marketplace.firefox.com/developers/in-app-keys/">In-App Payment Keys</a> 頁面取得應用程式金鑰與安全金鑰以利測試。雖然金鑰只能讓你<strong>模擬</strong> In-app payments,但已足以因應相關測試。在將自己的 App 提交至 Marketplace 審核之前,應該先多嘗試相關模擬。請參閱付款模擬的相關說明。</p>
-<h3 id="取得真正的付款金鑰"><strong>取得真正的付款金鑰</strong></h3>
-<p>在將自己的 App 提交至 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>時, 系統將要求你設定付款條件。此時請選擇 App 的價格 (你也可能想免費提供),接著勾選你接受 In-app payments 的選項。在設定自己的銀行帳戶之後,前往「Manage In-App Payments」頁面取得應用程式金鑰與安全金鑰,才能執行真正的付款作業。</p>
-<p>透過隱私設定或類似檔案,可在自己的 App 伺服器中儲存應用程式安全金鑰。</p>
-<div class="note">
- <strong>重要:</strong>請確認沒有任何人可讀取你的應用程式安全金鑰。絕對不要在用戶端披露該項資訊。</div>
-<h3 id="設定_App"><strong>設定 A</strong>pp</h3>
-<p>先假設你在設計某個 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps">Open Web App </a>的冒險遊戲,而你想販售「魔力獨角獸」物品,讓玩家能擁有遊戲優勢。你可設定美金 $1.99、歐元 €1.89,或任何幣值均可。接著將說明該如何設定後端伺服器,並撰寫前端程式碼而透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a> 銷售產品。</p>
-<h3 id="設定自己的伺服器以簽署_JWT"><strong>設定自己的伺服器以簽署</strong> JWT</h3>
-<p>因為用來簽署的應用程式安全金鑰絕對不能公開,所以你必須在伺服端簽署 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JSON Web Tokens (JWTs)</a>;而非用戶端。回到剛剛冒險遊戲要賣魔力獨角獸的例子,你要在自己的伺服器上建立如 <code>/sign-jwt</code> 的網址。如此可建立 JSON 物件以定義產品名稱、定價等。可參閱 <a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>以了解完整的 JWT 格式。範例如下:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token string">"iss"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span>
- <span class="token string">"aud"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span>
- <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/v1"</span><span class="token punctuation">,</span>
- <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337357297</span><span class="token punctuation">,</span>
- <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337360897</span><span class="token punctuation">,</span>
- <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span>
- <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span>
- <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span>
- <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&amp;my_session_id=XYZ"</span><span class="token punctuation">,</span>
- <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span>
- <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span>
- <span class="token string">"defaultLocale"</span><span class="token punctuation">:</span> <span class="token string">"en"</span><span class="token punctuation">,</span>
- <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"de"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magisches Einhorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game Artikel"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p><a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>將詳細解釋格式。此處列出幾個重點:</p>
-<ul>
- <li><code>iss</code> (issuer) 將對應你從 <a href="http://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>所取得的 App 金鑰。</li>
- <li><code>aud</code> (audience) 應設定為 <code>marketplace.firefox.com</code>。</li>
- <li><code>request.id</code> 均專屬對應至你的各個 App 產品。</li>
- <li>在購買當下,<code>request.pricePoint</code> 將展開為價格與幣別。你必須將之設定為有效的<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/App_pricing#Pricing_with_price_points" title="/en-US/docs/Web/Apps/Publishing/App_pricing#Pricing_with_price_points">價格點數</a>。</li>
- <li><code>request.productData </code><code>最多</code><code>可容納 255 個字元的字串。當你接收到回傳的</code> postback 時,可讓你核對 App 的狀態。</li>
- <li><code>request.postbackURL</code> 與 <code>request.chargebackURL</code> 需指向你伺服器網址的有效、絕對路徑。在 Mozilla 正式上線的服務環境中,網址均必須是 HTTPS。</li>
- <li><code>request.icons</code> 物件 (選填) 是你販售商品的圖示網址,其值為寬/高像素值 (圖像需為正方形)。Mozilla 的付款服務商將於付款確認頁面上使用你的 64 像素圖像。若你並未指定 64 像素的圖像,則將依照字型取得最大的圖示並將之縮放。針對首次購買該 App 的消費者,則由付款服務商在背景取得圖示,所以消費者不會立刻看到圖示。若你變更圖示,則將於 24 小時之內顯示新圖示。</li>
- <li><code>request.defaultLocale</code> 將敘述 In-app 產品目前的語言。除非必須定義 <code>locales</code> ,否則此亦為選填物件。</li>
- <li><code>request.locales</code> 物件 (選填) 將對應一或多個地區而重新定義 In-app 產品所內含的資料,且此處 UI 將根據存取裝置的語言而提供翻譯過的內容。舉例來說,如果有義大利消費者安裝了你的 App,你應該也想提供義大利文的 UI 介面。各個地區語言的輸入項均已鍵入語言標籤 (<a href="http://www.ietf.org/rfc/rfc4646.txt">RFC 4646</a>) ,並包含你所要取代的標籤。你可以只重新定義 <code>name</code> 與 <code>description</code> 就好。但若定義了 <code>locales</code> 也就必須定義 <code>defaultLocale</code>。</li>
-</ul>
-<p>在 Python (使用 <a href="https://github.com/progrium/pyjwt">PyJWT</a>) 程式碼中,你可簽署並編碼上述的請求路徑如下:</p>
-<pre class="brush: python language-html"><code class="language-python">import jwt
-signed_request = jwt.encode(request_dict, application_secret, algorithm='HS256')</code></pre>
-<p>此程式碼將為 JWT (使用應用程式安全金鑰) 進行簽章,並使用 HMAC SHA 256 演算法。在編碼過後就如下列:</p>
-<pre class="language-html"><code class="language-html">eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.IntcImF1ZFwiOiBcIm1hcmtldHBsYWNlLm1vemlsbGEub3JnXCIsIFwiaXNzXCI6IFwiQVBQLTEyM1wiLCBcInJlcXVlc3RcIjoge1wiY3VycmVuY3lcIjogXCJVU0RcIiwgXCJwcmljZVwiOiBcIjAuOTlcIiwgXCJuYW1lXCI6IFwiVmlydHVhbCAzRCBHbGFzc2VzXCIsIFwicHJvZHVjdGRhdGFcIjogXCJBQkMxMjNfREVGNDU2X0dISV83ODkuWFlaXCIsIFwiZGVzY3JpcHRpb25cIjogXCJWaXJ0dWFsIDNEIEdsYXNzZXNcIn0sIFwiZXhwXCI6IFwiMjAxMi0wMy0yMVQxMTowOTo1Ni43NTMxNDFcIiwgXCJpYXRcIjogXCIyMDEyLTAzLTIxVDEwOjA5OjU2LjgxMDQyMFwiLCBcInR5cFwiOiBcIm1vemlsbGEvcGF5bWVudHMvcGF5L3YxXCJ9Ig.vl4E31_5H3t5H_mM8XA69DqypCqdACVKFy3kXz9EmTI</code></pre>
-<p>如上面章節所述,在 JWT 經過編碼/簽章之後,即可透過其用戶端碼而供你的 App 所使用。</p>
-<h3 id="設定購買按鈕">設定購買按鈕</h3>
-<p>現在你已經有後端可為自己的產品產生 JWT 了。接著透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> 提供前端程式碼的撰寫範例。請確實在自己的 App 中提供按鈕,以利消費者購買產品。例如:</p>
-<pre class="brush: html language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>button</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>purchase<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>Purchase Magical Unicorn<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>button</span><span class="token punctuation">&gt;</span></span></code></pre>
-<p>點選購買按鈕之後,你的 App 應會簽署 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JSON Web Token (JWT)</a> 並呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a>。下列為 <a href="http://jquery.com/">jQuery</a> 使用範例:</p>
-<pre class="brush: js language-js"><code class="language-js">$<span class="token punctuation">(</span><span class="token string">'#purchase button'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">click<span class="token punctuation">(</span></span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment"> // The purchase is now pending...
-</span> $<span class="token punctuation">.</span><span class="token function">post<span class="token punctuation">(</span></span><span class="token string">'/sign-jwt'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">.</span><span class="token function">done<span class="token punctuation">(</span></span><span class="token keyword">function</span><span class="token punctuation">(</span>signedJWT<span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">var</span> request <span class="token operator">=</span> navigator<span class="token punctuation">.</span><span class="token function">mozPay<span class="token punctuation">(</span></span><span class="token punctuation">[</span>signedJWT<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
- request<span class="token punctuation">.</span>onsuccess <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token function">waitForPostback<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
- <span class="token punctuation">}</span><span class="token punctuation">;</span>
- request<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span><span class="token string">'navigator.mozPay() error: '</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>error<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">.</span><span class="token function">fail<span class="token punctuation">(</span></span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- console<span class="token punctuation">.</span><span class="token function">error<span class="token punctuation">(</span></span><span class="token string">'Ajax post to /sign-jwt failed'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
-<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
-
-<span class="token keyword">function</span> <span class="token function">waitForPostback<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment"> // Poll your server until you receive a postback with a JWT.
-</span> <span class="token comment"> // If the JWT signature is valid then you can dispurse the Magical Unicorn
-</span> <span class="token comment"> // product to your customer.
-</span> <span class="token comment"> // For bonus points, use Web Sockets :)
-</span><span class="token punctuation">}</span></code></pre>
-<p>上列程式碼將送出 Ajax 請求至你伺服器上的 <code>/sign-jwt</code> 網址。該網址所簽署的 JSON blob 將包含產品/價格資訊,並以純文字檔回傳 JWT。而 Ajax 處理器 (Handler) 將傳送該 JWT 進入 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> 並等待,直到付款服務商將購買確認訊息送至你的伺服器上。若送過來的 JWT 簽章通過驗證為有效,你就可將虛擬商品交付給消費者。</p>
-<h3 id="於伺服器上處理_Postback"><strong>於伺服器上處理</strong> Postback</h3>
-<p>在正式販售出出自己的 App 產品之前,必須先等待 Marketplace 回傳購買確認訊息;此及所謂的「Postback」。此由 <code>marketplace.firefox.com</code> 傳送出「POST」確認通知 (即 1 組 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JWT</a>),至原始付款請求所指定的 <code>request.postbackURL</code>。</p>
-<p>而此「POST」具備 <code>application/x-www-form-urlencoded</code> 的 <code>Content-Type</code>,且亦可於 <strong><code>notice</code></strong> 參數中找到此 JWT。在你的伺服器框架中,你可透過如 <strong>request.POST['notice']</strong> 來存取此 JWT。</p>
-<p>此 JWT 通知具備所有的付款請求欄位與 1 組交易 ID,並以 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>取得的應用程式安全金鑰而完成簽章。當你收到 Postback 並驗證簽章之後,隨即完成購買程序。若你無法辨別 JWT 的簽章,就可能不是 Marketplace 所傳送的 JWT,你可逕行忽略。</p>
-<p><a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>即解釋了 Postback 的細節。Postback 內含原始請求,且添增的新反應參數亦包含 Mozilla 的特定交易 ID。範例如下:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token string">"iss"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span>
- <span class="token string">"aud"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span>
- <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/postback/v1"</span><span class="token punctuation">,</span>
- <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337370900</span><span class="token punctuation">,</span>
- <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337360900</span><span class="token punctuation">,</span>
- <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span>
- <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span>
- <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span>
- <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&amp;my_session_id=XYZ"</span><span class="token punctuation">,</span>
- <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span>
- <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span>
- <span class="token string">"defaultLocale"</span><span class="token punctuation">:</span> <span class="token string">"en"</span><span class="token punctuation">,</span>
- <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"de"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magisches Einhorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game Artikel"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"response"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"transactionID"</span><span class="token punctuation">:</span> <span class="token string">"webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9"</span><span class="token punctuation">,</span>
- <span class="token string">"price"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token string">"amount"</span><span class="token punctuation">:</span> <span class="token string">"0.99"</span><span class="token punctuation">,</span> <span class="token string">"currency"</span><span class="token punctuation">:</span> <span class="token string">"CAD"</span><span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p>列出 Postback 的幾項重點:</p>
-<ul>
- <li>必將納入你的原始付款請求。</li>
- <li><code>iss</code> (issuer) 必為 marketplace.firefox.com。</li>
- <li><code>aud</code> (audience) 設定為你的應用程式金鑰。</li>
- <li>以你的應用程式安全金鑰簽署 JWT。</li>
- <li><code>response.transactionID</code> 專屬於 Mozilla 的 <a href="https://github.com/mozilla/webpay">Web Payment Provider。</a></li>
- <li><code>response.price </code>則為客戶實際使用的金額與幣別。</li>
-</ul>
-<h3 id="回應_Postback">回應 Postback</h3>
-<p>App 必須透過純文字的 HTTP 回應 (其內僅含交易 ID),對 Postback 做出回應。例如:</p>
-<pre class="language-html"><code class="language-html">HTTP/1.1 200 OK
-Content-Type: text/plain
-
-webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9</code></pre>
-<h3 id="於伺服器上處理_Chargeback"><strong>於伺服器上處理</strong> Chargeback</h3>
-<p>如果交易過程發生問題 (如消費者帳戶的餘額不足),則 Marketplace 將傳送退款通知 (即 POST 過的 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JWT</a>)。Chargeback 與 Postback 同樣都會傳送到 App,但 Chargeback 送達的時間較晚。該 POST 具備 <code>application/x-www-form-urlencoded</code> 的 <code>Content-Type</code>,且可於 <code>notice</code> 參數中找到該 JWT。下列為解碼後的 Chargeback 通知範例:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token string">"iss"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span>
- <span class="token string">"aud"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span>
- <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/chargeback/v1"</span><span class="token punctuation">,</span>
- <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337370900</span><span class="token punctuation">,</span>
- <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337360900</span><span class="token punctuation">,</span>
- <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span>
- <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span>
- <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span>
- <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&amp;my_session_id=XYZ"</span><span class="token punctuation">,</span>
- <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span>
- <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span>
- <span class="token string">"defaultLocale"</span><span class="token punctuation">:</span> <span class="token string">"en"</span><span class="token punctuation">,</span>
- <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"de"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magisches Einhorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game Artikel"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"response"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"transactionID"</span><span class="token punctuation">:</span> <span class="token string">"webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9"</span><span class="token punctuation">,</span>
- <span class="token string">"reason"</span><span class="token punctuation">:</span> <span class="token string">"refund"</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p>此 JWT 和 Postback 類似,可於 <a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>中參閱其定義細節。此處列出幾項重點:</p>
-<ul>
- <li>必納入原始付款請求。</li>
- <li><code>iss</code> (issuer) 必為 <code>marketplace.firefox.com</code>。</li>
- <li><code>aud</code> (audience) 需設為你的應用程式金鑰。</li>
- <li>JWT 需以你的應用程式安全金鑰完成簽章。</li>
- <li><code>response.transactionID</code> 專屬於 Mozilla 的 Web Payment Provider。</li>
- <li><code>response.reason</code> 必設為 <code>refund</code> 或 <code>reversal。</code>
- <ul>
- <li><code>refund</code> 代表已根據消費者或管理員的要求而退回款項。</li>
- <li><code>reversal</code>代表消費者要求信用卡發卡銀行取消交易。在爭議款項發生時,消費者亦可能透過信用卡公司取消交易。</li>
- </ul>
- </li>
-</ul>
-<div class="note">
- <p><strong>注意:</strong>目前 in-app payments 尚未支援退款作業。</p>
-</div>
-<p>App 必須透過純文字的 HTTP 回應 (其內僅含交易 ID),對 Chargeback 做出回應。舉例來說:</p>
-<pre class="language-html"><code class="language-html">HTTP/1.1 200 OK
-Content-Type: text/plain
-
-webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9</code></pre>
-<h3 id="Postbackchargeback_錯誤">Postback/chargeback 錯誤</h3>
-<p>若 App 伺服器是以不成功的狀態碼回應 HTTP 請求,則 Mozilla 的 Web Payment Provider 將重新嘗試 URL 數次。若仍未能接收成功回應,則 App 開發者就會收到通知,且該 App 將暫時停用。若 App 伺服器未能以交易 ID 回應 Postback 或 Chargeback,就會將該伺服器處理為錯誤並會重新嘗試。</p>
-<h3 id="使用_HTTPS_Postbackchargeback_網址">使用 HTTPS Postback/chargeback 網址</h3>
-<p>於正式環境中執行 App 時,可依需要而嘗試使用安全的 HTTPS 網址。如此一來,在將 Postbacks 從 Mozilla 伺服器傳輸至自己的 App 伺服器時,可避免 Postback 資料遭他人讀取。目前並未強制使用 HTTPS 來保護付款請求,其實 JWT 簽章即可達到相同效果。</p>
-<div class="warning">
- <p><strong><strong>注意:</strong></strong>若你並未使用安全的 HTTPS Postback 網址,則請確認自己的付款請求<strong><strong><strong>並未包含個人識別資訊</strong></strong></strong>,以免遭第三方所攔截。舉例來說<strong><strong>,需確認自己的</strong></strong> <em>productData</em> 值並未揭露任何高敏感性的使用者資料。Mozilla 預設的付款請求亦未包含任何個人識別資訊。</p>
-</div>
-<h3 id="Postbackchargeback_IP">Postback/chargeback IP</h3>
-<p>如果你依照上述方式而確實檢查了 JWT 簽章,就不需為 Firefox Marketplace 伺服器 (傳送 postback/chargeback 通知給你) 的 IP 設定許可清單。但如果你想再另加額外保險 (例如防止鍵盤側錄),則 Marketplace 也能從下列 IP 位址寄發 postback/chargeback 通知給你。只要這些 IP 位址變更,都會發佈到 <a href="https://lists.mozilla.org/listinfo/dev-marketplace">dev-marketplace 郵件群組</a>之中。</p>
-<pre class="language-html"><code class="language-html">63.245.216.100</code></pre>
-<h3 id="模擬付款">模擬付款</h3>
-<p>上面的「概述」部分提到,你可從 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>取得特殊的應用程式金鑰 (Application Key) 與應用程式安全金鑰 (Application Secret),進而模擬 In-app payments。而這個安全金鑰亦可簽署如下的客製 JWT:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token string">"iss"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span>
- <span class="token string">"aud"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span>
- <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/v1"</span><span class="token punctuation">,</span>
- <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337357297</span><span class="token punctuation">,</span>
- <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337360897</span><span class="token punctuation">,</span>
- <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span>
- <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span>
- <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span>
- <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span>
- <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&amp;my_session_id=XYZ"</span><span class="token punctuation">,</span>
- <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span>
- <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span>
- <span class="token string">"simulate"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"result"</span><span class="token punctuation">:</span> <span class="token string">"postback"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p>額外的 <code>request.simulate</code> 屬性可要求 Payment Provider 模擬相關結果,而不會真正收費。使用者介面亦不會要求登入或 PIN 碼。在開發 App 時,可透過此屬性而確認「購買」鈕已正確掛上 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a>,且自己的伺服器可正確運作 Postbacks 與 Chargebacks 的網址。</p>
-<p>下列範例將模擬 1 筆成功的購買作業,並傳送簽署過的通知至你的 Postback 網址:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
- <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
- <span class="token string">"simulate"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"result"</span><span class="token punctuation">:</span> <span class="token string">"postback"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p>下列則模擬 1 筆 Chargeback 退款:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
- <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
- <span class="token string">"simulate"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"result"</span><span class="token punctuation">:</span> <span class="token string">"chargeback"</span><span class="token punctuation">,</span>
- <span class="token string">"reason"</span><span class="token punctuation">:</span> <span class="token string">"refund"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p>將如同真正的購買作業一般,將有 1 筆 JWT 通知傳送到你的處理器,但不會有隨機產生的 transactionID。模擬作業亦可使用 non-HTTPS 網址。</p>
-<div class="note">
- <p><strong>注意:</strong>模擬的付款 JWT 不該用於正式的服務環境中,否則你的消費者將免費取得產品。</p>
-</div>
-<h2 id="除錯">除錯</h2>
-<p>如果你並未正確使用 in-app payment API,則付款畫面將顯示錯誤訊息,以協助使用者進行後續步驟。付款畫面亦將提供錯誤程式碼,協助開發者找出相關錯誤。你可透過 Mozilla 的 <a href="https://webpay.readthedocs.org/en/latest/services.html#error-legend">Error Legend API</a>,在自己慣用的程式語言中觀看錯誤代碼。舉例來說,錯誤代碼 <code>INVALID_JWT</code> 即表示 JWT 簽章無效,或 JWT 格式混亂。</p>
-<h2 id="保護應用程式安全金鑰"><strong>保護應用程式安全金鑰</strong></h2>
-<div class="warning">
- <p><strong><strong>警告:</strong></strong>請確認沒有任何人可讀取你的應用程式安全金鑰。<strong>絕對不要在用戶端披露該項資訊</strong>。</p>
-</div>
-<h3 id="撤銷遭盜用的應用程式安全金鑰"><strong>撤銷遭盜用的應用程式安全金鑰</strong></h3>
-<p>雖然遭盜用的機率極低,但你的安全金鑰仍可能外洩或遭盜用,這時應儘快進行下列撤銷步驟:</p>
-<ol>
- <li>登入 <a href="https://marketplace.mozilla.org/">Firefox Marketplace</a>。</li>
- <li>前往「My Submissions」並找到自己的 App。</li>
- <li>前往「Manage In-App Payments」頁面;就是產生自己所屬憑證 (Credentials) 的相同頁面。</li>
- <li>點擊「Reset Credentials」按鈕。</li>
-</ol>
-<p>在重設自己的憑證之後,其他人就無法以舊憑證處理付款作業。你會看到新的應用程式金鑰與安全金鑰,並可立刻用來處理自己 App 中的付款流程。</p>
-<p>若要回報任何安全性問題,請<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Marketplace;component=Payments%2FRefunds">填寫 Payments/Refunds 分類下的錯誤</a>。</p>
-<h2 id="程式碼函式庫"><strong>程式碼函式庫</strong></h2>
-<p>下列為 Mozilla 的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> 專屬函式庫:</p>
-<ul>
- <li>Python: <a href="https://mozpay.readthedocs.org/en/latest/">mozpay</a> module</li>
- <li>node.js: <a href="https://github.com/mozilla/mozpay-js">mozpay</a> module</li>
-</ul>
-<p>Here are some generic <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JSON Web Token</a> (JWT) libraries for encoding/decoding and signature verification:</p>
-<ul>
- <li>Python: <a href="https://pypi.python.org/pypi/PyJWT-mozilla">PyJWT-mozilla</a></li>
- <li>Ruby: <a href="https://github.com/progrium/ruby-jwt">ruby-jwt</a></li>
- <li>node.js: <a href="https://github.com/hokaccha/node-jwt-simple">node-jwt-simple</a></li>
- <li>PHP: <a href="https://github.com/luciferous/jwt">luciferous/jwt</a></li>
- <li>Java: <a href="http://code.google.com/p/jsontoken/">jsontoken</a></li>
- <li>.NET: <a href="https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet">IdentityModel Extensions for .Net</a></li>
-</ul>
-<h2 id="範例程式碼"><strong>範例程式碼</strong></h2>
-<ul>
- <li>這裡提供 <a href="https://github.com/jlongster/webfighter">Web Fighter</a> 原始碼。此遊戲是以 NodeJS 建構 In-app payments 功能。你可到 Marketplace 的<a href="https://marketplace.firefox.com/app/webfighter?src=search">這裡</a>安裝。</li>
- <li>此為診斷與測試用 App,將呈現 JWT 請求的簽署方式,並以 Python 撰寫 Postbacks 與 Chargebacks 的檢驗器 (Verifier) 程式碼:<a href="https://github.com/kumar303/inapp-pay-test">In-app Payment Tester</a></li>
-</ul>
-<h2 id="尋求協助"><strong>尋求協助</strong></h2>
-<ul>
- <li>你可透過 <a href="https://lists.mozilla.org/listinfo/dev-webapps">dev-webapps</a> 郵件群組,或在 <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> 的 #payments 頻道上討論 In-app payments 的相關問題。</li>
- <li>若發現任何錯誤,請在 Payments/Refunds 分類下回報 <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Marketplace;component=Payments%2FRefunds">Marketplace bug</a>。</li>
-</ul>
-<h2 id="類似的付款系統"><strong>類似的付款系統</strong></h2>
-<ul>
- <li><a href="https://developers.google.com/commerce/wallet/digital/docs/">Google 的 In-App Payments API</a></li>
- <li><a href="http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html">iOS 的 in-app purchases</a></li>
- <li><a href="http://developer.android.com/google/play/billing/billing_overview.html">Android 的 in-App billing API</a></li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/index.html
deleted file mode 100644
index ed0b227445..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/index.html
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: 讓 App 產生實質收益
-slug: Archive/Mozilla/Marketplace/Monetization
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Marketplace/Monetization
----
-<div class="summary">
- <p>你努力打造出自己的 App,又該如何在發佈之後取得實質收益呢?不論你選用 Marketplace 付款或應用程式內部付費機制 (In-app payments),本頁將提供所有相關的 App 付款資訊。</p>
-</div>
-<div class="row topicpage-table">
- <div class="section">
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Apps/Tutorials/General/Profiting_from_your_app">用自己的 App 獲益</a></dt>
- <dd>
- 透過自己 App 獲益的相關要素介紹,包含所需的工具。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/Marketplace_Payments">Marketplace 付款</a></dt>
- <dd>
- 了解 App 將如何搭配 Firefox Marketplace,以強化自己的銷售模式 (如果你的是付費 App,更能提升自己的收入)。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/In-app_payments">In-app payments</a></dt>
- <dd>
- 說明應如何在自己的 Web App 中建構 In-app payments</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">檢驗收據</a></dt>
- <dd>
- 檢驗自己 App 購買收據的時機與方式。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/App_pricing" title="/en-US/docs/Web/Apps/Publishing/App_pricing">App 定價列表</a></dt>
- <dd>
- 內有價格點數 (Price point),可讓開發者為自己的付費 App 設定售價,並根據不同的幣別各對應不同的價格點數;另有處理 App 付款的相關資訊。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/Payments_Status" title="/en-US/docs/Web/Apps/Publishing/Payments_Status">付款狀態</a></dt>
- <dd>
- 提供目前有哪些國家已經設定 Marketplace 的 App 付款服務完畢,基本上也代表這些國家已可銷售付費 App。</dd>
- </dl>
- </div>
- <div class="section">
- <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5>
-<ul>
- <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li>
- <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li>
- <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li>
-</ul>
-<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5>
-<div class="twocolumns">
- <ul>
- <li><a href="/en-US/docs/Web/CSS">CSS</a></li>
- <li><a href="/en-US/docs/DOM">DOM</a></li>
- <li><a href="/en-US/docs/Web/HTML">HTML</a></li>
- <li><a href="/en-US/docs/JavaScript">JavaScript</a></li>
- <li><a href="/en-US/docs/WebAPI">WebAPI</a></li>
- <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li>
- <li><a href="/en-US/docs/SVG">SVG</a></li>
- <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li>
- <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li>
- </ul>
-</div>
-<h5 class="Community" id="Community" name="Community">Getting help from the community</h5>
-<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p>
-<ul>
- <li>Consult the webapps forum: <ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li>
-
-
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li>
-</ul>
- <ul>
- <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li>
- </ul>
- </li>
-</ul>
-<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html
deleted file mode 100644
index 1c5993a876..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: 介紹 ─ 應如何讓 App 創造收益
-slug: Archive/Mozilla/Marketplace/Monetization/Introduction_Monetization
-translation_of: Archive/Marketplace/Monetization/Introduction_Monetization
----
-<div class="summary">
- <p>你努力打造出自己的 App,又該如何在發佈之後取得實質收益呢?不論你選用 Marketplace 付款,或是應用程式內部付費機制 (In-app payments),本頁將提供所有相關的 App 付款資訊。</p>
-</div>
-<div class="row topicpage-table">
- <div class="section">
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Apps/Tutorials/General/Profiting_from_your_app">用自己的 App 創造收益</a></dt>
- <dd>
- 將說明該如何用自己的 App 創造收益,包含付費式 App、定價、付款作業處理。</dd>
- <dt>
- <a href="/en-US/Marketplace/Monetization/App_payments_guide">App 付款指南</a></dt>
- <dd>
- 說明付費式 App 的相關技術。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/In-app_payments">應用程式內付款 (In-app payments)</a></dt>
- <dd>
- 說明該如何在自己的 Web App 中建構 In-app payments 功能。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">檢驗收據</a></dt>
- <dd>
- 檢驗自己 App 購買收據的時機與方式。你可自行建構檢驗機制,亦可使用現有的函式庫。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/App_pricing" title="/en-US/docs/Web/Apps/Publishing/App_pricing">制定 App 的價格</a></dt>
- <dd>
- 可為自己的 App 選擇固定的「價格點數 (Price points)」,且價格點數跨不同幣別也有所差異。本文將提供 App 付費資訊。</dd>
- <dt>
- <a href="/en-US/docs/Web/Apps/Publishing/Payments_Status" title="/en-US/docs/Web/Apps/Publishing/Payments_Status">付款服務狀態</a></dt>
- <dd>
- 總結目前有哪些國家已經支援我們的 App 付款服務。另提供可發佈 App 上架的國家列表。</dd>
- </dl>
- </div>
- <div class="section">
- <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5>
-<ul>
- <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li>
- <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li>
- <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li>
-</ul>
-<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5>
-<div class="twocolumns">
- <ul>
- <li><a href="/en-US/docs/Web/CSS">CSS</a></li>
- <li><a href="/en-US/docs/DOM">DOM</a></li>
- <li><a href="/en-US/docs/Web/HTML">HTML</a></li>
- <li><a href="/en-US/docs/JavaScript">JavaScript</a></li>
- <li><a href="/en-US/docs/WebAPI">WebAPI</a></li>
- <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li>
- <li><a href="/en-US/docs/SVG">SVG</a></li>
- <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li>
- <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li>
- </ul>
-</div>
-<h5 class="Community" id="Community" name="Community">Getting help from the community</h5>
-<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p>
-<ul>
- <li>Consult the webapps forum: <ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li>
-
-
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li>
-</ul>
- <ul>
- <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li>
- </ul>
- </li>
-</ul>
-<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html
deleted file mode 100644
index 25726a4fb5..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: 付款服務狀態
-slug: Archive/Mozilla/Marketplace/Monetization/Payments_Status
-translation_of: Archive/Marketplace/Monetization/App_pricing
----
-<div class="summary">
- <p><span class="seoSummary"><a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 付款服務均以「國家」為單位進行,且各國有不同的定價與付款方式。本文列出已開始 Marketplace 付款服務的國家,並附上進一步資訊的連結。</span></p>
-</div>
-<div class="note">
- <p><strong>注意:</strong>另請參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》以了解價格點數,並<a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html#pay-tiers">可透過 API 取得</a>。</p>
-</div>
-<h2 id="各國的付款服務">各國的付款服務</h2>
-<p>下列為 Marketplace 目前提供付款服務的國家。我們亦隨時努力於更多國家提供付款服務。若需要現已支援付款服務的國家清單,可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》。</p>
-<h2 id="App_支付">App 支付</h2>
-<p>下列頁面將提供各國的付款服務資訊。另請注意,目前出帳作業僅支援當地貨幣;信用卡付款僅接受英鎊、美金、歐元計價。</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_pricing/Payout_Brazil">Brazil (洽談中)</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Colombia">哥倫比亞</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Germany">德國</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Hungary">匈牙利</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Mexico">墨西哥</a></li>
- <li><a href="/Marketplace/Monetization/App_pricing/Payout_Poland">波蘭</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Spain">西班牙</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_UK">英國</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_US">美國</a></li>
- <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Venezuela">委內瑞拉</a></li>
-</ul>
-<h2 id="進一步了解收費費率">進一步了解收費費率</h2>
-<p>若要進一步了解收費費率,請至 Firefox Marketplace 找到你自己的 App 頁面。點擊「相容性與付款 (<em>Compatibility &amp; Payments)</em>」→「新增、管理或檢視您的付款帳號中的交易 (<em>Add manage or view transactions for your payment account</em>)」→「檢視交易 (<em>View Transactions)</em>」連結,即如下所示。</p>
-<p><img alt="Transactions link" src="https://mdn.mozillademos.org/files/6567/transactions.png" style="width: 600px; height: 104px;"></p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html
deleted file mode 100644
index b66295dcee..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: 用自己的 App 創造收益
-slug: Archive/Mozilla/Marketplace/Monetization/Profiting_from_your_app
-translation_of: Archive/Marketplace/Monetization/Profiting_from_your_app
----
-<div class="summary">
-<p>開發 Web App 不只有趣,也是將自己熱情轉為實質收益的絕佳方式!本篇文章將介紹 App 付款的相關主題、說明目前已經建構的付款類型 ─ 包含付款購買 App 與應用程式內部付費 (In-app payments),以及該如何處理不同國家內所發生的交易。</p>
-</div>
-
-<p><a class="link-https" href="https://marketplace.firefox.com/">Firefox Marketplace</a> 是專為 Web App 開發者所設計的絕佳市集,可支援付費/免費 App 與 In-app payments、多款裝置平台的 App,還有更多特色。Firefox Marketplace 具備高競爭力的定價系統,讓消費者能選用自己喜歡的付款方式。並由付款服務供應商處理付款程序,可透過消費者的信用卡或行動電話帳單收取款項。</p>
-
-<div class="note">
-<p><strong>注意:</strong>可參閱<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/FAQ">《Marketplace 常見問題》的〈付款〉一章</a>,了解 Marketplace 付款方面的常見問題。</p>
-</div>
-
-<h2 id="設定付費_App">設定付費 App</h2>
-
-<p>完全可由開發者自行決定 App 收費與否,而且<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/Submitting_an_app">將 App 提交至 Firefox Marketplace</a> 的程序極為相似。Firefox Marketplace 目前支援二種 App 付款模式:</p>
-
-<ul>
- <li>付費 App或免費增值 App (免費下載之後再購買 App 內建的物品);消費者在安裝 App 之前即付費完畢</li>
- <li>續約訂閱 (已規劃完畢)</li>
-</ul>
-
-<p>若將 App 定位為付費 App,則開發者會有不同的選擇並需制定價格;消費者也會在開始下載時完成付費。另請注意,因為必須經過 Marketplace 驗證並正確安裝 App,所以目前僅有 Firefox OS 才支援付費 App。在建構付費 App 時,可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_payments_guide">App 付款指南</a>》進一步了解其內部的必要程式碼。</p>
-
-<p>如果開發者是透過 Marketplace 收款,則消費者付款之後即可收到電子收據。開發者必須負責查驗電子收據,確認自己的 App 已正確收款。一般只要啟動 App 時就完成了查驗作業。可參閱《<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">查驗收據</a>》以進一步了解。</p>
-
-<p>Mozilla 強烈建議開發者應在收費之前,讓消費者能預覽/試用 App 的功能。只要同時提供單一 App 的免費與付費版本,或透過 In-app payments 都能達到上述目的。</p>
-
-<h3 id="In-app_payments">In-app payments</h3>
-
-<p>In-app payments 讓消費者可在 App 中付款,亦即透過 App 而靈活收取多樣數位版商品與服務的款項。且 In-app payments 讓開發者強化現有 App 即可獲得更高收益;而消費者也不需再另外購買新的 App。</p>
-
-<p>舉例來說,In-app payments 可用於:</p>
-
-<ul>
- <li>在遊戲中銷售特殊的功能、物品、升級系統</li>
- <li>升級或解鎖額外的 App 功能</li>
- <li>建構有時間限制的免費試用版</li>
- <li>補充 App 中的虛擬貨幣或儲值金額</li>
-</ul>
-
-<p>Mozilla 與 <a href="https://developers.google.com/in-app-payments/docs/">Google 的 In-Apps Payments</a> 系統運作模式極為相似。Firefox Marketplace 系統如下:</p>
-
-<ul>
- <li>App 將簽署 JWT 請求並呼叫 JavaScript 函式,即開始付款程序。</li>
- <li>將在 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe" title="The HTML &lt;iframe> Element (or HTML inline frame element) represents a nested browsing context, effectively embedding another HTML page into the current page. In HTML 4.01, a document may contain a head and a body or a head and a frame-set, but not both a "><code>&lt;iframe&gt;</code></a> 中啟動購買流程:
- <ul>
- <li>消費者透過 Mozilla Persona 登入</li>
- <li>消費者完成購買程序</li>
- </ul>
- </li>
- <li>消費者關閉視窗時,App 隨即收到 JavaScript 的回呼 (callback)</li>
- <li>App 伺服器將接收簽署過的 <code>POST</code> 請求,其內並包含 Mozilla 交易 ID,確認本次購買行為完成</li>
-</ul>
-
-<p>Firefox Marketplace 另提供 JavaScript 公用程式函式庫,可協助完成購買程序。</p>
-
-<h3 id="免費增值_(Freemium)_App">免費增值 (Freemium) App</h3>
-
-<p>若開發者想將付費版本的 App 拿掉數項功能而成為免費版本,以供消費者可預覽/試用該 App,則 Mozilla 也同樣支援此一需求。開發者可在「免費版 App」的「詳細資訊」區塊中,找到「upsell」加入付費升級的功能,即可銜接免費與付費版本的 App 並簡化此「免費增值」模式。</p>
-
-<h3 id="退款">退款</h3>
-
-<p>一旦消費者要求退款,則可能由 Mozilla、付款服務供應商,或電信營運商授權退款作業。根據各地的消費規範、信用卡退款政策、電信營運商退款政策等的差異,退款授權方式亦有所不同。此外,Mozilla 並無法處理 In-app payments 的退款作業。</p>
-
-<p>一旦 App 購買行為退款完畢,所對應的收據也隨即失效。因此,開發者應隨時<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">查驗收據</a>以確保 App 是否正確授權批准。若任何 App 發生不尋常的大量退款要求,將由 Mozilla 進一步查驗。</p>
-
-<div class="note">
-<p><strong>注意:</strong>《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/In-app_payments">應用程式內部付費 (In-app payments)</a>》提供 In-app payments 作業的豐富訊息與範例程式碼。目前 In-app payment 程序尚在實測階段,請隨時參閱更新訊息。</p>
-</div>
-
-<div class="note">
-<p><strong>注意:</strong>若 App 使用 In-app payments 機制,則 Mozilla 建議該 App 可設定為免費下載 App。當然付費 App 同樣可使用此機制。</p>
-</div>
-
-<h2 id="定價與款項給付">定價與款項給付</h2>
-
-<p>App 內部應使用正確的程式碼,且最好透過 Marketplace 檢驗 App 較為穩當。但你心裡可能還是會想著系統是如何跨國處理這些款項。</p>
-
-<p>Firefox Marketplace 所列出的 App,都是由付款服務供應商負責販售。這些付款服務供應商將負責處理交易、收取營業稅與增值稅 (VAT)、確認符合當地消費法規、相關出納/退款作業,以及其他應盡的零售作業。Mozilla 則是提供買家 (即 App 使用者) 與賣家 (App 開發者) 的交流場所,但完全不參與交易活動。而 <a href="http://www.bango.com">Bango</a> 則是 Firefox Marketplace 的付款服務開發商。</p>
-
-<p>付款處理商另負責買家 (即 App 使用者) 與賣家 (App 開發者) 之間的交易過程,包含信用卡處理在內的大小事。付款處理商一般會逐筆交易收取服務費用。開發者必須透過 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心 (Firefox Marketplace Developer Hub)</a>,於各家付款處理商建立自己的帳戶。</p>
-
-<p>為了維持 Firefox Marketplace 的運作、不斷提升 App 平台、實踐<a href="http://www.mozilla.org/about/">我們的使命</a>,Mozilla 與合作夥伴將針對各筆交易拆帳,並另外支付交易費用。目前,若開發者是透過 Marketplace 進行交易,則每筆 App 或 In-app 銷售活動均可獲得 70% 的銷售金額 (此為必要費用與稅後總額,均已包含於消費者所看到價格之中)。而 Mozilla 與合作夥伴則收取 30%。</p>
-
-<p>Firefox Marketplace 未來將支援更多國家、語言、幣別。我們亦將設法提供多個語系的 Marketplace,並搭配各國所適用的付款方式。</p>
-
-<p>進一步了解:</p>
-
-<ul>
- <li>《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》將進一步說明應如何透過「價格點數」定價,以及定價將如何搭配信用卡並扣繳稅額等事項。</li>
- <li>《<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status">Payments status</a>》可了解目前哪些國家已經開始 App 付款作業、使用的匯率為何、開發者在各國所應注意的事項。</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html
deleted file mode 100644
index 8ad877280b..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html
+++ /dev/null
@@ -1,132 +0,0 @@
----
-title: 驗證收據
-slug: Archive/Mozilla/Marketplace/Monetization/Validating_a_receipt
-translation_of: Archive/Marketplace/Monetization/Validating_a_receipt
----
-<div class="summary">
- <p><span class="seoSummary">如果你的是付費 App,就應該檢查消費者的收據是否有效。如果開發者完全不檢查,則可能會有消費者購買 App 之後立刻退款,就變成免費取得 App 了;或可能直接從你的網站參照 manifest 檔案,就能安裝 App。如果開發者要建構收據驗證機制,可參閱本文提供的程式碼與作業流程。</span></p>
-</div>
-<p>收據 (Receipt) 即為消費者的 App 購買證明。收據將經由付款處理機制 (由消費者完成的交易) 產生確認資料 (Affirmation),以取得特定的數位產品。在消費者付費購買 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 上的 App 之後,收據就隨即傳送到消費者的裝置之中。位於消費者裝置上的收據,將用在 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>mozApps.install()</code></a> 函式的第二組參數之上。Firefox Marketplace 將使用該筆收據資料,進而呼叫 <code>install() 以完成 </code>App 的安裝。</p>
-<h2 id="驗證收據的時機">驗證收據的時機</h2>
-<p>開發者必須決定 App 該何時驗證收據。一般都是在消費者啟動 App 時開始驗證。如果是屬於長時間執行 App,則可以定時/定期進行驗證。例如影片串流 App 就可以每隔 20 分鐘檢查收據 1 次。</p>
-<p>另請注意,如果消費者為離線狀態,App 也就無法驗證收據。開發者可決定 App 在離線時所進行的作業。為了避免打擾某些消費者,開發者可停止強制的收據驗證作業 (消費者可能進入隧道而暫時離線),只要等消費者上線時再次檢查即可。</p>
-<h2 id="如何驗證收據">如何驗證收據</h2>
-<p>最簡單就是使用 Firefox Marketplace 的驗證服務即可。如果你的 App 屬於「HTML-only」,也就是伺服器只會提供靜態檔案,則可使用 Mozilla 的<a href="https://github.com/mozilla/receiptverifier">「receiptverifier」JavaScript 函式庫</a>。此函式庫基本上只會將 <code>receiptverifier.js</code> 指令碼加入 App 之中,並使用 <code>verifyReceipts()</code> 函式。可參閱上述連結以進一步了解。</p>
-<h2 id="收據內容">收據內容</h2>
-<p>Open Web App 所使用的收據,均為可攜式、可驗證的「Token」購買證明,即所謂 <a href="http://self-issued.info/docs/draft-jones-json-web-token.html">JSON Web Token</a> (JWT) 的數位簽署 JSON 資料架構,且此格式可讓所有用戶端與伺服器讀取。許多程式語言均提供 JWT 函式庫。</p>
-<h2 id="應接受的收據">應接受的收據</h2>
-<p>收據就是付款的證明,但 App 開發者可決定自己想要的收據類型。以下是你該檢查的要項:</p>
-<ul>
- <li>收據來自於售出 App 的商店。請檢查自己清單中的 <code>iss</code> 欄位。</li>
- <li>自己 App 的專屬收據。如果是架設/托管式 (Hosted) App,可檢查 <code>product</code> <code>URL</code> 欄位是否正確。如果是封裝式 (Packaged) App,可檢查 <code>product storeData</code> 是否正確,直到 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867265" title="FIXED: Identifying your packaged app from a receipt">bug 867265</a> 解決為止。除非已發出收據,否則 <code>storeData</code> 均為未知值,且發出收據之後將不再變動。</li>
- <li>驗證作業的網址是位於商店的網域或子網域之下。可檢查 <code>verify</code> 的網址是否為 <code>iss</code> 欄位的子網域。</li>
- <li>收據真正用於購買活動,而非測試用收據。請檢查 <code>typ</code> 欄位。</li>
-</ul>
-<p><a class="link-https" href="https://github.com/mozilla/receiptverifier">receipt verifier</a> 函式庫可進行其中數項檢查。</p>
-<h2 id="測試用收據">測試用收據</h2>
-<p>在開發期間,Firefox Marketplace 即可協助發出測試用收據,以供完整測試 App 的相關付款程序。可透過 Firefox 開發者交流中心 (Firefox Developer Hub) 的<a href="https://marketplace.firefox.com/developers/test/receipts/">公用程式頁面</a>產生測試用收據。此種收據將具備「<code>test-receipt</code>」的 <code>typ</code>。且 App 只會在開發期間接收這類收據,一旦上架之後就<b>停止接收</b>;否則消費者可略過 App 銷售程序,直接使用測試用收據。</p>
-<p><a class="link-https" href="https://github.com/mozilla/receiptverifier">receipt verifier</a> 函式庫預設不會接收 <code>test-receipts</code>。</p>
-<h2 id="收據驗證">收據驗證</h2>
-<p>在沒有 JWT 函式庫的情況下,開發者也能在收據的 <code>verify</code> 欄位中,找到驗證服務的對應網址,並將收據傳送給驗證服務。各個 App 均具備不同的 Firefox Marketplace 驗證服務網址。</p>
-<p>下列範例程式碼可於收據中顯示 <code>verify</code> 網址。該程式碼將用於 Firefox 的「網頁主控台 (Web console)」開發者工具。</p>
-<pre class="brush: js"><span class="kd">var</span> <span class="nx">request</span> <span class="o">=</span> <span class="nx">navigator</span><span class="p">.</span><span class="nx">mozApps</span><span class="p">.</span><span class="nx">getSelf</span><span class="p">();</span>
-request.onsuccess = function() {
- // Get the app's receipt and decode it
- console.log(atob(request.result.receipts[0].split('~')[1].split('.')[1]));
-};</pre>
-<p>為了取得 <code>verify</code> 網址,此範例將近行下列作業:</p>
-<ul>
- <li>針對由 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.getSelf">mozApps.getSelf()</a> (對目前 App 的參照) 所回傳的物件,將之儲存於 <code>request</code> 變數中。</li>
- <li>如果請求成功,則會檢索 App 的第一筆收據,且將切割由 JWT 送進的值,以取得包含收據的實際部位。</li>
- <li>透過 JavaScript 的 <code>{{ domxref("Window.atob") }}</code> 函式,而解碼 Base64-encoded 的收據。</li>
-</ul>
-<p>接著是上述程式碼結果的完整範例。此即為扣除 JWT 部分的完整收據。</p>
-<pre class="brush: js">{
- "product": {
- "url": "http://example.com",
- "storedata": "id=111111"
- },
- "iss": "https://marketplace.mozilla.org",
- "verify": "https://receiptcheck.marketplace.mozilla.org/verify/111111", // The verify URL
- "detail": "https://marketplace.mozilla.org/en-US/purchases/111111",
- "reissue": "https://marketplace.mozilla.org/en-US/app/example/purchase/reissue",
- "user": {
- "type": "directed-identifier",
- "value": "1234-abcd99ef-a123-456b-bbbb-cccc11112222"
- },
- "exp": 1353028900,
- "iat": 1337304100,
- "typ": "purchase-receipt",
- "nbf": 1337304100
-}</pre>
-<p>在開發者取得 <code>verify</code> 網址之後,就可透過 <code>POST</code> 函式,在訊息主體之內傳送完整的 JWT。驗證服務的回應即如上方所述。下列程式碼片段 (snippet),將從上列範例中取得 App 第一筆收據的完整 JWT。</p>
-<pre>request.result.receipts[0]</pre>
-<p>請注意,上述程式碼並不會處理 JWT 的加密部分。如果你要透過 Marketplace 驗證收據,則收據將檢查本身的加密簽章。</p>
-<div class="note">
- <p><strong>注意:</strong>可在 Kumar McMillan 提供的 <a href="https://github.com/kumar303/yacht/blob/master/www/js/server-app.js">Private Yacht</a> 範例中,找到其他更高擴充性的收據驗證範例。</p>
-</div>
-<h2 id="App_盜版問題">App 盜版問題</h2>
-<p>即使你驗證了自己付費 App 的收據,還是可能有人繞過收據機制而盜用 App。上列的收據驗證函式並無法避免此問題。</p>
-<p>如果想要更好的防盜版機制,就必須設定代理伺服器,將之作為 App 與 Firefox Marketplace 之間的媒介。代理伺服器可檢查收據、IP 位址,還有更多物件。如果單一收據來自於不同的 IP 位址,且能一樣執行正確動作,則伺服器就可進行類似通知的作業。如果是大型、複雜、使用伺服器處理功能的 App,就能達到更適當、更正確的設定。</p>
-<p><a class="link-https" href="https://github.com/andymckay/receipts">此 Python 程式碼</a>仍是開發中的專案,可提供某些代理伺服器的靈感。<a class="external" href="http://django-receipts.herokuapp.com/">Django Receipts</a> 則是測試用的代理伺服器,可驗證收據。開發者最好不要直接將之作為正式運行的代理伺服器,但可進行測試以了解相關機制。<a class="link-https" href="https://wiki.mozilla.org/Apps/WebApplicationReceipt">另可參閱更多資訊</a>,讓自己了解收據驗證作業。</p>
-<h2 id="收據欄位">收據欄位</h2>
-<p>收據應包含下列欄位:</p>
-<dl>
- <dt>
- <code>typ</code></dt>
- <dd>
- 可供識別收據類型的字串,必為以下之一:
- <ul>
- <li><code>purchase-receipt</code> ─ 交易完成之後隨即發出的收據。這類收據應隨時能由 App 接收。</li>
- <li><code>developer-receipt</code> ─ 由 App 開發者所發出的收據。一般是開發者交由自己使用的 App 商店所發出。這類收據有效期較短。</li>
- <li><code>reveiwer-receipt</code> ─ 由 App 審查者所發出的收據。一般是 App 審查者透過其所位於的商店發出。這類收據只需要在審查期間接收即可,有效期較短。</li>
- <li><code>test-receipt</code> ─ 在開發期間用以測試 App 所發出的收據。只要是開發期間以外,<strong>均不應該</strong>接收這類收據,有效期較短。</li>
- </ul>
- </dd>
- <dt>
- <code>product</code></dt>
- <dd>
- JSON 物件在識別產品時,包含收據所囊括的範圍,以及任何特定商店的資料。包含下列欄位:
- <ul>
- <li><code>url</code> ─ 代表該網址的根網域 (root of a domain),且沒有最後的斜線 (例如「<a class="link-https" href="https://someapp.com" rel="freelink">https://someapp.com</a>」)。一般這樣就代表了 Web App。如果是以根網域開頭的其他網址,則代表「App 內購買」。只要開發者或收據開立者覺得方便,則可使用各種路徑規則 (Path scheme)。</li>
- <li><code>storedata</code> ─ 此字串為 App 所獨有,將提供給收據驗證器 (Verifier) 所用。</li>
- </ul>
- </dd>
- <dt>
- <code>user</code></dt>
- <dd>
- 針對完成購買作業的消費者,此 JSON 物件包含了使用者 ID,並包含下列欄位:
- <ul>
- <li><code>type</code> ─ 此字串內有「<code>directed-identifier</code>」值。</li>
- <li><code>value</code> ─ 此字串即為消費者的專屬 ID。消費者每次購買 App,都會擁有不同的 ID。</li>
- </ul>
- </dd>
- <dt>
- <code>iss</code></dt>
- <dd>
- 發出收據的商店,其所屬之網域。</dd>
- <dt>
- <code>nbf</code></dt>
- <dd>
- 完成購買程序之後,顯示「Not-before」的時間戳記。時間戳記是從 1970-01-01T00:00:00Z (UTC, RFC 3339) 開始的秒數。</dd>
- <dt>
- <code>iat</code></dt>
- <dd>
- 發出收據之後,顯示「Issued-at」的時間戳記。此時間戳記的格式如同 <code>nbf</code>。可透過此數值決定收據的存在時間。</dd>
- <dt>
- <code>exp</code></dt>
- <dd>
- (選填) 代表收據過期的時間戳記。此時間戳記的格式如同 <code>nbf</code>。</dd>
- <dt>
- <code>detail</code></dt>
- <dd>
- (選填) 網址包含額外人、機均可讀取的購買細節。如果另提供購買行為的交易記錄或退款功能,則本頁亦應包含相關函式。</dd>
- <dt>
- <code>verify</code></dt>
- <dd>
- (選填) 由經過授權的 App 使用此網址,以驗證收據。另請注意,Firefox Marketplace 一定會為 App 提供此欄位。如果開發者想自己建立 App 的商城,就可能不需使用此欄位。</dd>
- <dt>
- <code>reissue</code></dt>
- <dd>
- (選填) 網址可重新發出新收據。</dd>
-</dl>
diff --git a/files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html b/files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html
deleted file mode 100644
index 69614f7cf4..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: 托管\架設式 (Hosted) App
-slug: Archive/Mozilla/Marketplace/Options/Hosted_apps
-translation_of: Archive/Mozilla/Marketplace/Options/Hosted_apps
----
-<div class="summary">
-<p><span class="seoSummary">托管\架設式 (Hosted) App 即為 Open Web App,將其所有資源 (HTML、CSS、JavaScript、manifest 檔案等) 儲存於 Web 伺服器上。本文將簡介托管\架設式 App,另有相關連結讓你從開發者的角度進一步了解相關資訊。</span></p>
-</div>
-
-<p>與一般網站相同,托管的 Open Web App 亦透過 Web 伺服器提供其所有內容,另於 App 的根目錄中提供 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest">App 的 manifest 檔案</a>。manifest 檔案則具備 App 的詳細資料,如相關說明、代表 App 的圖示等等。且不論是 Firefox OS 裝置、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">Android 裝置</a>,或<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">桌上型電腦</a>,這些詳細資料都會用於 App 的安裝作業。一旦安裝完畢,App 就會從原本的托管伺服器動態載入其內容,並可存取 Web 上的其他資源,如 Web 伺服器上的資料庫。</p>
-
-<p>在 <a href="/en-US/Firefox_OS/Security/Security_model#App_Security">Firefox OS 安全模型</a>中,托管式 App 均定義為 Web App,意即這類 App 無法利用 <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">Privileged 與內部 (即 Certified) API</a>。若要利用這些 API,則必須以<a href="/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a> 的方式來提供 App。</p>
-
-<div class="note">
-<p><strong>注意:</strong>Firefox Marketplace 僅支援 Firefox OS 的付費托管式,以及 Firefox OS、Firefox for Android、Firefox 的免費托管式 App。目前正開發所有平台的付費 App 支援功能。</p>
-</div>
-
-<h2 id="App_托管選擇">App 托管選擇</h2>
-
-<p>開發者可自行選擇 App 的托管之處。如果你還沒選擇托管方式,則可考慮本段說明的常見托管選擇。</p>
-
-<h3 id="GitHub">GitHub</h3>
-
-<p>如果你的 Open Web App 為靜態內容 (HTML/CSS/JavaScript,但無伺服器端的處理作業),那<a class="external external-icon" href="http://pages.github.com" rel="external">GitHub Pages</a> 應該是你的不二選擇。如果你的 manifest 檔案是 <code>.webapp</code> 為附檔名,則 GitHub 就能用 <a href="https://developer.mozilla.org/en-US/Apps/Developing/Manifest#Serving_from_GitHub">correct MIME type</a> 提供 manifest 檔案。</p>
-
-<h3 id="一般托管解決方案">一般托管解決方案</h3>
-
-<p>動態的 Open Web App 需要伺服器端的處理作業,所以你可用任何常見的托管選擇 (像是你自己架設或可存取的 Web 伺服器)。你必須先確認 Web 伺服器具備相關功能。另有許多托管服務供應商已針對托管式 App 的需求 (如 <a class="external external-icon" href="http://www.heroku.com" rel="external">Heroku</a>、<a class="external external-icon" href="http://code.google.com/appengine" rel="external">Google App Engine</a>、<a class="external external-icon" href="http://aws.amazon.com/application-hosting" rel="external">Amazon App Hosting</a>),量身打造出 Web 伺服器。</p>
-
-<div class="note">
-<p><strong>注意:</strong>之前在安裝 Open Web App 時,必須滿足「一組來源僅能提供一個 App」的安全規範。但這項條件到 Firefox 34/Firefox OS 2.1 (可參閱<a href="https://developer.mozilla.org/en-US/Apps/Build/installable_apps_for_Firefox_OS/App_manifest_FAQ#Can_I_have_more_than_one_app_at_my_origin.3F">此 FAQ</a> 以獲得更多資訊) 已經移除。如果你仍要支援較舊版本,則可試試看在不同來源托管不同的 App (如測試\正式版本)。其中一個方法就是為 App <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">建立不同的子網域</a>,或可透過 <a href="/en-US/docs/Tools/WebIDE">WebIDE</a> 測試 App。可參閱<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/FAQs/About_app_manifests">〈manifest 檔案常見問題〉</a>以進一步了解。</p>
-</div>
-
-<h2 id="測試托管式_App">測試托管式 App</h2>
-
-<p>若要將托管式 App 安裝至 Firefox OS 模擬器或實體裝置上,以利進行測試,請參閱《<a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">應用程式管理員 (App Manager)</a>》。你也可觀看《<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a>》中所說明的步驟,透過 Web 伺服器將 App 安裝到裝置之上。</p>
-
-<h2 id="發佈托管式_App">發佈托管式 App</h2>
-
-<p>現有 2 種方式可發佈托管式 App:1). 透過 Firefox Marketplace 或 2). 自行發佈。</p>
-
-<h3 id="發佈於_Firefox_Marketplace">發佈於 Firefox Marketplace</h3>
-
-<p>你可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App 發佈流程</a>》,了解應如何將托管式 App 提交到 Firefox Marketplace 之上。</p>
-
-<p>在你提交自己的托管式 App 之後,Marketplace 隨即根據你放在 Web 伺服器上的 manifest 檔案,產生新的「<strong>mini-manifes</strong>」檔案。只要消費者決定要安裝 App,則 mini-manifest 就會傳送到 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>Apps.install()</code></a> 函式以安裝該 App。mini-manifest 僅會用於 App 的安裝與更新作業,並不會用於 App 執行期間。</p>
-
-<h3 id="自行發佈">自行發佈</h3>
-
-<p>你當然也能在 Firefox Marketplace 以外發佈托管式 App,也就是透過自己架設的 Web 伺服器。可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Publish_options">自行發佈 App</a>》。</p>
-
-<h2 id="更新托管式_App">更新托管式 App</h2>
-
-<p>共有 2 種方式可更新托管式 App:</p>
-
-<ul>
- <li>在 App 所托管的 Web 伺服器上進行變更,消費者在下次執行 App 時就能獲得更新檔案。</li>
- <li>將新版 App 提交到 Firefox Marketplace 之後,就會隨之更新 mini-manifest 所控制的裝置內容,如如 App 的圖示或名稱。</li>
-</ul>
-
-<p>若要進一步了解在 Firefox Marketplace 上更新 App 的方法,可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Updating_apps">更新 App</a>》;若是自行發佈的 App,則可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a>》。</p>
-
-<h2 id="另請參閱">另請參閱</h2>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model">Firefox OS 安全性概述</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Application_security">App 安全性</a></li>
- <li><a class="external external-icon" href="https://github.com/robnyman/Firefox-OS-Boilerplate-App" title="https://github.com/robnyman/Firefox-OS-Boilerplate-App">Firefox OS 的「Boilerplate」App</a></li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html
deleted file mode 100644
index 27d7c108df..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: 為 App 添增子網域
-slug: Archive/Mozilla/Marketplace/Publishing/Adding_a_subdomain
-translation_of: Archive/Mozilla/Marketplace/Publishing/Adding_a_subdomain
----
-<div class="summary">
- <p>一組來源網域僅限容納一個 App。但若要打破此限制,則可為 App 新增子網域。每個子網域就代表不同的來源,例如 <code>app1.example.com 或 </code><code>app2.example.com</code>。建立子網域很簡單,而且大多數的網域托管服務供應商也都不額外收費。服務供應商一般會免費提供特定數量的子網域。以下即為子網域的新增範例。</p>
-</div>
-<h2 id="新增子網域的常見步驟">新增子網域的常見步驟</h2>
-<ol>
- <li>登入托管服務供應商的管理介面,找到自己所使用的網域。</li>
- <li>找到設定網域的頁面。</li>
- <li>找到可新增子網域的功能。</li>
- <li>新增子網域、指定子網域檔案的儲存路徑、儲存你所完成的變更。</li>
- <li>將自己的 App 檔案放進你在上個步驟所指定的伺服器路徑中。</li>
- <li>實際以瀏覽器開啟該路徑,檢驗新的子網域已確實產生。</li>
-</ol>
-<p>接著將說明該如何透過特定托管工具新增子網域。</p>
-<h2 id="以_cPanel_新增子網域">以 cPanel 新增子網域</h2>
-<p>這裡提供 cPanel 建立子網域的範例。cPanel 是 Web 托管控制台,已有多家托管服務供應商採用。每個開發者的 cPanel 頁面可能因設定方式而略有不同。這裡僅提供整個介面的基本概念。</p>
-<ol>
- <li>登入 cPanel。</li>
- <li>往下捲動找到「Domains」區塊。
- <p><img alt="" src="/files/4007/cpanel-domains1.png" style="width: 527px; height: 181px;"></p>
- </li>
- <li>點擊「<em>Subdomains</em>」即開啟「<em>Subdomains</em>」頁面。
- <p><img alt="" src="/files/4011/subdomain.png" style="width: 802px; height: 300px;"></p>
- </li>
- <li>在「<em>Subdomain</em>」文字框中輸入子網域名稱。我們這裡先以「newsubdomain」為例。</li>
- <li>再點入「<em>Document Root</em>」文字框。隨著顯示的路徑,就是儲存新子網域檔案的路徑。我們這裡先以「<code>/public_html/newsubdomain</code><code>」為例。如果開發者想把 App 檔案儲存到其他位址,亦可依自己需要更改。假設你的 App 檔案位於「</code><code>public_html/gamedev_com/games/coolgame/</code><code>」,則可於「</code>Document Root<code>」文字框中鍵入該路徑。</code><img alt="Document root" src="/files/4035/subdomain2.png" style="width: 768px; height: 163px;"></li>
- <li>點擊「<em>Create</em>」按鈕,即可收到確認訊息。</li>
- <li>將 App 檔案放進你指定的子網域路徑中。我們這裡先使用名為「<code>index.html</code>」的簡單 HTML,將顯示「This is on a new subdomain!」。</li>
- <li>確認新的子網域現已存在。開啟瀏覽器並輸入新的網域名稱。根據我們所使用的範例,即如下圖所示:
- <p><img alt="New subdomain in browser" src="/files/4037/subdomain3.png" style="width: 696px; height: 204px;"></p>
- </li>
-</ol>
-<h2 id="以_Go_Daddy_新增子網域">以 Go Daddy 新增子網域</h2>
-<p>可觀看此<a href="http://www.youtube.com/watch?v=Nw5mi8ihA5A" title="http://www.youtube.com/watch?v=Nw5mi8ihA5A">影片</a>,為 Go Daddy 所托管的網域添增子網域。</p>
-<div>
-  </div>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html
deleted file mode 100644
index 968dce2720..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: 設立自己的 App 商店
-slug: Archive/Mozilla/Marketplace/Publishing/Creating_a_store
-translation_of: Archive/Marketplace/Options/Creating_a_store
----
-<div class="summary">
- <p>任何 Web 網站若具備豐富的圖片與互動經驗,則 Web 瀏覽器可透過Mozilla 的 App 專案平台,將這類網站識別為「Web App」,進而能跨裝置安裝並同步這些網站。開發者現可透過此項特性,將已發佈的 App 整理到目錄與商店中。接著說明相關步驟。</p>
-</div>
-<h2 id="與瀏覽器整合">與瀏覽器整合</h2>
-<p>App 平台即提供「<a href="https://developer.mozilla.org/en-US/docs/Web/API/navigator.mozApps" title="Returns an Apps object you can use to install, manage, and control Open Web Apps in the browser."><code>navigator.mozApps</code></a>」這個 JavaScript 物件,可作為商店與瀏覽器之間的溝通橋樑。</p>
-<p>Web App 是根據其網域所辨識而得。而一個來源網域就只會有一個 App。針對目錄或商店,開發者可透過 <a href="https://developer.mozilla.org/en-US/Apps/Developing/JavaScript_API">App Installation API 與 App Management API</a>,讓瀏覽器觸發 <a href="https://developer.mozilla.org/en-US/docs/Web/API/apps.install" title="Triggers the installation of an app. During the installation process, the app is validated and the user is prompted to approve the installation."><code>apps.install</code></a> 函式並提示 App 的安裝作業,另提供 App 的 manifest 檔案網址,以及任何想要補充的後設資料 (metadata)。開發者可存取此筆後設資料,以查閱消費者的購買資訊、確認單一登入狀態 (SSO),或其他服務。</p>
-<h3 id="使用_getInstalled()">使用 getInstalled()</h3>
-<p>只要 App 是根據你的網域而安裝於目前的瀏覽器上,均可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.getInstalled"><code>navigator.mozApps.getInstalled()</code></a> 函式取得此類 App 的清單。另請注意,開發者不會看到其他網域所安裝的 App,只會看到放在自己網域中的 App。</p>
-<p>開發者可透過此函式而了解消費者安裝的 App 是否符合你的預期。即使消費者是以新帳戶登入你的網站,亦可透過「resync」功能而再次安裝既有的 App。</p>
-<h2 id="到底該不該托管?">到底該不該托管?</h2>
-<p>針對托管式 App,商店只需該網站的 manifest 網址,即可觸發 App 的安裝作業 (<a href="https://developer.mozilla.org/en-US/docs/Web/API/apps.install" title="Triggers the installation of an app. During the installation process, the app is validated and the user is prompted to approve the installation."><code>apps.install</code></a>)。該 App 檔案不一定要儲存於商店或目錄之下。</p>
-<p>如果 App 沒有伺服器的邏輯元件 (也就是完全以用戶端 JavaScript、HTML、CSS 所建構的 App),開發者就可能會想建構出托管功能。此時必須為各 App 指派不同的網域名稱,並針對各 App 的 manifest 檔案建構伺服邏輯,才能使用托管功能。</p>
-<p>如果你現在正自行托管 App 邏輯,則可輕鬆維護和消費者之間的會話 (Session),進而追蹤消費者的喜好、購買證明,或其他服務。如果你要針對遠端網站提供服務,就必須完成額外作業,才能支援分散式的認證系統。</p>
-<div class="note">
- <p><strong>注意:</strong><a href="http://firefox-marketplace-api.readthedocs.org/en/latest/">Firefox Marketplace API</a> 內含的功能,讓開發者只耗費最小程度的心血,即可迅速設立自己的 App 商店。</p>
-</div>
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/index.html
deleted file mode 100644
index 280345b59e..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Publishing
-slug: Archive/Mozilla/Marketplace/Publishing
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction
----
-<p>Marketplace publishing</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html
deleted file mode 100644
index 0cdc397b2e..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: 介紹 — App 發佈流程
-slug: Archive/Mozilla/Marketplace/Publishing/Introduction
-translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction
----
-<div class="summary">
- 你到這裡應該已經知道該如何<a href="/en-US/Marketplace/Prepare/Introduction">打造成功的 App</a>、選擇 <a href="/en-US/Marketplace/Options/Introduction">App 發佈平台 (甚或發佈到 Firefox OS 以外的平台)</a>、撰寫並側試過自己的程式碼。現在應該著手將 App 發表給全球的使用者知道,並於 Firefox Marketplace 上發佈。本文將引導你<span class="seoSummary">完成相關程序,讓你順利於 Firefox Marketplace 上發佈自己的 Open Web App,並能隨時更新檔案及有用的附加資訊。 </span></div>
-<div class="column-container">
-  </div>
-<div class="row topicpage-table">
- <div class="section">
- <h2 class="Community" id="Community" name="Community">發佈指南</h2>
- <dl>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Submission_checklist">提交作業檢查清單</a></dt>
- <dd>
- 提交 App 前的準備工作。</dd>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Marketplace_review_criteria">Marketplace 審查</a></dt>
- <dd>
- 審查 App 時的程序與準則。</dd>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Pricing/Introduction">設定付費 App 與應用程式內付款 (In-app payment)</a></dt>
- <dd>
- Marketplace 的相關功能,可設定付費式 App 與應用程式內的付款項目。另將說明 Firefox Marketplace 是如何使用第三方的付費服務,並建立廠商的帳戶。</dd>
- </dl>
- <h2 class="Community" id="Community" name="Community">策略與指南</h2>
- <dl>
- <dt>
- <a href="/en-US/Apps/Build/Icon_implementation_for_apps#Firefox_OS">圖示 (應用程式中心)</a></dt>
- <dd>
- 根據 Firefox OS 的不同版本,取得詳細的圖示尺寸。</dd>
- </dl>
- <dl>
- <dt>
- <a class="external external-icon" href="https://www.mozilla.org/en-US/styleguide/products/firefox-os/icons/">圖示設計 (Mozilla 風格指南)</a></dt>
- <dd>
- 你的 App 或 In-app 產品圖示,必須符合圓形或方形設計。進一步參閱 Mozilla 風格指南。</dd>
- </dl>
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies#Mozilla_Marketplace_privacy_requirements">隱私權政策</a></dt>
- <dd>
- 如果你的 App 會取得使用者的個人資料,就必須另外具備隱私權政策。指南內所提供的資訊,均必須納入你的 App 隱私權政策之中。</dd>
- </dl>
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria">擷圖指南</a></dt>
- <dd>
- 若要讓自己的 App 在 Marketplace 順利上架,所提供的擷圖必須符合相關規範。</dd>
- <dt>
- <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">App 測試與疑難排解</a></dt>
- <dd>
- 帶領你設定測試環境、實際測試  App,並解決你所發現的問題或錯誤。</dd>
- </dl>
- </div>
- <div class="section">
- <h2 class="Community" id="Community" name="Community">提交 App</h2>
- <dl>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Submit/Overview">App 提交程序指南</a></dt>
- <dd>
- 你已經準備好發佈第一個 App;也可能要以自己沒用過的方式封裝/發佈 App。到這裡了解該如何將 App 提交到 Firefox Marketplace 之上。</dd>
- </dl>
- <h2 class="Community" id="Community" name="Community">更新 App</h2>
- <dl>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Updating_apps">更新 App</a></dt>
- <dd>
- 不論是要添增新功能或是修正錯誤 (當然最好不要是錯誤),定期提供 App 更新檔,才能保持 App 的能見度。本文將說明應如何透過 Firefox Marketplace 遞交 App 的更新檔案。</dd>
- </dl>
- <h2 class="Community" id="Community" name="Community">管理已發佈的 App</h2>
- <dl>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Managing_your_apps/Introduction_Managing_your_apps">App 管理指南</a></dt>
- <dd>
- 在發佈 App 之後,你可能想更改某個地方,或了解消費者對該 App 的接受度為何。本文將帶領你變更 App 的狀態、檢視統計資料、檢查於 Firefox Marketplace 上所獲得的評價。</dd>
- </dl>
- <h2 id="更多工具">更多工具</h2>
- <dl>
- <dt>
- <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">為自己的 App 添增子網域</a></dt>
- <dd>
- 如果要從自己的網站上提供超過 1 個的架設/托管式 (Hosted) App,就必須逐一建立子網域。本文將說明添增子網域的方式。</dd>
- </dl>
- </div>
-</div>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html
deleted file mode 100644
index 6454ca8f31..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: App 統計資料
-slug: Archive/Mozilla/Marketplace/Publishing/Managing_your_apps/App_Statistics
-translation_of: Archive/Mozilla/Marketplace/Publishing/Managing_your_apps/App_Statistics
----
-<div class="summary">
-<p>Firefox Marketplace 可提供 App 的多樣統計資料。本文將說明應如何取得自己<span class="seoSummary"> App 在 Firefox Marketplace 上的統計資料、報表資料的呈現方式,另可審閱報表內的特定資訊、可用的報表,並使用已匯出的報表資料。</span></p>
-</div>
-
-<h2 id="取得_App_的狀態">取得 App 的狀態</h2>
-
-<p>若要取得任何已發佈 App 的狀態,須先到 Firefox Marketplace 點擊「<strong>開發者交流中心 (Developer Hub)</strong>」,再進入「我的提交 (<strong>My Submissions)</strong>」。所有已發佈的 App 都能看到 (1)「統計資訊 (<strong>Statistics</strong>)」連結。</p>
-
-<p><img alt="In My Submissions, for each published app you will find a link to the app's stats page" src="https://mdn.mozillademos.org/files/8281/Stats%20link.png" style="width: 990px; height: 210px;"></p>
-
-<h2 id="報表介紹">報表介紹</h2>
-
-<p>在開啟了 App 的統計資訊之後,就會進入下方的統計資料表。此頁將摘要呈現目前可用的統計報表資料。</p>
-
-<p><img alt="The stats dashboard provides a visual summary of your app's stats and links to the 5 reports" src="https://mdn.mozillademos.org/files/8285/Stats%20Dashboard.png" style="width: 1041px; height: 723px;"></p>
-
-<p>開發者可在此頁看到下列報表:</p>
-
-<ul>
- <li><strong>Installs</strong>:App 完整安裝的次數</li>
- <li><strong>Visits</strong>:App 在 Marketplace 列表頁面受消費者瀏覽的次數</li>
- <li><strong>Ratings</strong>:提交給 App 的評分</li>
- <li><strong>Abuse Reports</strong>:提交給 App 的濫用回報次數</li>
- <li><strong>Average Rating</strong>:App 目前所接收的平均評分</li>
-</ul>
-
-<p>每組報表均為相同的基礎架構,如下所示:</p>
-
-<p><img alt="All reports follow the same basic structure with date selector, region selector (Installs report only) graph, JSON export option and daily summary." src="https://mdn.mozillademos.org/files/8287/Report%20layout%20overview.png" style="width: 1045px; height: 1026px;"></p>
-
-<ol>
- <li>日期選擇 — 可設定報表應顯示的開始\結束日期。</li>
- <li>地區選擇 (僅 Installs 報表) — 可設定報表應顯示全世界活動資料,或個別國家\地區的資料。
- <div class="warning">在本文撰寫期間,此功能因資料加總功能的問題,先予以關閉。可參閱 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1028448">Bug 1028448</a>。</div>
- </li>
- <li>「更新」按鈕 — 依照目前日期與地區設定,重新整理報表內容。</li>
- <li>按每日顯示的活動圖表。</li>
- <li>JSON 匯出選項。</li>
- <li>其他按每日顯示的活動圖表。</li>
-</ol>
-
-<h2 id="使用匯出的資料">使用匯出的資料</h2>
-
-<p>你可能想在其他試算表應用中使用匯出的資料。目前尚無主流的試算表應用程式 (Microsoft 的 Excel、Apple 的 iWorks Numbers、OpenOffice 的 Calc) 能支援 JSON 格式的資料匯入功能。解決方案就是將 JSON 轉檔為 CSV 格式。此檔案格式可用於大多數的試算表應用程式。目前有許多 JSON to CSV 的線上轉檔功能:</p>
-
-<ul>
- <li><a href="http://www.convertcsv.com/json-to-csv.htm">Convert JSON to CSV</a> 有多樣的 CSV 輸出選項,可轉換檔案或黏貼文字 (例如冒號與分號可用其他分隔符號替代),並針對轉換完成的資料提供文字顯示與 CSV 檔案下載。</li>
- <li><a href="https://json-csv.com/">JSON to CSV - Online converter</a> 有多樣的 CSV 輸出選項,可轉換檔案或黏貼文字 (冒號、標籤、分號),並可顯示格式化的表格,亦可下載轉換過的資料與 CSV 檔案。另可針對轉換過的 JSON 資料建立永久連結。但免費版本將限制來源檔案須 1Mb 以下。</li>
- <li><a href="http://konklone.io/json/">JSON to CSV</a> - 可將 JSON 資料貼上頁面並顯示資料表格。而資料即可下載為 CSV 檔案。你也可依照自己需要,建立 JSON\頁面的永久連結。其原始碼<a href="https://github.com/konklone/json">架設於 GitHub</a> 上,且該作者另透過<a href="http://sunlightfoundation.com/blog/2014/03/11/making-json-as-simple-as-a-spreadsheet/">此部落格文章說明此專案的背景。</a></li>
-</ul>
-
-<p>此外還有下列資源提供程式碼,讓你能針對不同的試算表應用程式,建立自動匯入功能:</p>
-
-<ul>
- <li>Excel
- <ul>
- <li><a href="https://code.google.com/p/vba-json/">VBA-JSON</a></li>
- <li><a href="http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html">VB-JSON</a></li>
- </ul>
- </li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html
deleted file mode 100644
index 76f2576eff..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Marketplace 截圖準則
-slug: Archive/Mozilla/Marketplace/Publishing/Marketplace_screenshot_criteria
-translation_of: >-
- Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria
----
-<div class="summary">
- <p>在將 App 提交至 Firefox Marketplace 時,開發者必須提供 1 幅或更多截圖以供使用。Marketplace 另提供此類截圖的非硬性規範,可作為開發者截圖時的準則。如果 App 截圖均未能符合本篇文章所載明的規範,則可能會要求開發者提交新的截圖。</p>
-</div>
-<h2 id="截圖概述">截圖概述</h2>
-<ul>
- <li>開發者所上傳的截圖會出現在
- <ul>
- <li>各個 App 的頁面</li>
- <li>如果 App 榮獲編輯或館長推薦,也會出現在「精選 App」的類似區塊中</li>
- <li>Marketplace 中的多樣選單或動態播放區</li>
- </ul>
- </li>
- <li>Marketplace 接受 3 種不同規格,共 1 ~ 6 組截圖:
- <ul>
- <li>手機 (直幅或橫幅)</li>
- <li>平板電腦</li>
- <li>桌上型電腦 (一般應達 1024x768 或以上)</li>
- </ul>
- </li>
- <li>根據 App 所支援裝置的規格,至少各需提供 1 組截圖。</li>
-</ul>
-<h2 id="截圖重點">截圖重點</h2>
-<ul>
- <li>應要儘量呈現自己的 App 特色與功能</li>
- <li>可能的話,應移除狀態列 (一般均位於手機畫面最上方,顯示時間、電池電量、電信營運商名稱等硬體資訊)</li>
- <li>儘量以實體裝置取得截圖,較模擬器取得的截圖為佳</li>
- <li>避免將 App 放入裝置或桌機的圖片中
- <ul>
- <li>若將 App 放入裝置或桌機的圖片中,就必須縮小 App 的介面而看不清楚</li>
- <li>你所呈現的裝置或桌機介面,極可能與消費者本身所使用的介面有所不同</li>
- </ul>
- </li>
- <li>避免「手拿」手機、螢幕、平板電腦的照片</li>
- <li>Marketplace 中的 App 不會用於瀏覽器中,所以避免呈現出瀏覽器的介面 (工具列、網址列、上/下一頁等)</li>
- <li>儘量以最少的文字解釋該介面,而不要淪為打廣告</li>
- <li>避免使用與 App 本身無關的圖素</li>
- <li>避免出現邊框</li>
- <li>截圖將依照上傳的順序來呈現。開發者應先上傳最漂亮的截圖</li>
-</ul>
-<p>總而言之,截圖應該以 App 為重點,而不是 App 周圍的情境。</p>
-<h2 id="尺寸與格式">尺寸與格式</h2>
-<p>截圖可為 JPG 與 PNG 格式。若是較能保有原來解析度的 PNG-24 最好。如果是 JPG 格式,則應儘量使用最小幅度的壓縮並設定為最高圖像品質。</p>
-<h3 id="建議尺寸">建議尺寸</h3>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">裝置規格</th>
- <th scope="col">建議的解析度</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>手機</td>
- <td>
- <p>320x480 的倍數、720x1280 的倍數;或 480x320 的倍數、1280x720 的倍數</p>
- </td>
- </tr>
- <tr>
- <td>平板電腦</td>
- <td>1024x768 的倍數、1280x800 的倍數</td>
- </tr>
- <tr>
- <td>桌上型電腦</td>
- <td>1280x800 的倍數、1440x900 的倍數</td>
- </tr>
- </tbody>
-</table>
-<h2 id="範例">範例</h2>
-<p>不要出現與 App 無關的圖素,如廣告或商標。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/6313/no-ads.png" style="width: 640px; height: 360px;"></p>
-<p>不要提供「手拿著裝置」的照片,或將截圖編輯到實體裝置之上。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/6315/no-hand.png" style="width: 640px; height: 360px;"></p>
-<p>截圖不需使用/添加裝置的邊框、不必要的文字、其他不必要的特色。</p>
-<p><img alt="" src="https://mdn.mozillademos.org/files/6317/no-simulated-device.png" style="width: 640px; height: 360px;"></p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html
deleted file mode 100644
index cf9937c110..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: 封裝式 (Packaged) App
-slug: Archive/Mozilla/Marketplace/Publishing/Packaged_apps
-translation_of: Archive/Mozilla/Marketplace/Options/Packaged_apps
----
-<p><span class="seoSummary"><strong>封裝式</strong><strong> (Packaged) App</strong> 屬於 Open Web App,即以 ZIP 壓縮檔納入其 HTML、CSS、JavaScript、manifest 檔案等所有資源,不像之前必須將資源置於網路伺服器之中。本篇文章將為開發者提供封裝式 App 的相關說明 。</span></p>
-<p>封裝式 App 為 ZIP 壓縮檔,內含 Open Web App 能夠運作的所有資源,並將 <a href="https://developer.mozilla.org/docs/Apps/Manifest">manifest</a> 檔案置於其根目錄之下,且此 manifest 檔案將提供 App 本身的說明、圖示等資訊,以利辨識出已安裝的 App。此封包接著可將 App 安裝到 Firefox OS 裝置、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">Android 裝置</a>、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">桌機</a>之中。一旦在裝置上安裝 App 之後,仍可存取 Web 上的資源,如伺服器上的資料庫。</p>
-<p><a href="https://developer.mozilla.org/zh-TW/Apps/Developing/Packaged_apps/Packaged_apps$edit#types_of_packaged_apps">封裝式 App 另可分為三類:</a>Web App、Privileged App、Certified App。封裝式 App 可作為任何形式的 Open Web App;Privileged 與 Certified App 則是透過數位簽章的方式,啟動 <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">Privileged 與 Certified API</a>。Privileged App 簽章之後即成為 Marketplace 審查流程的一部分;Certified App 則是由裝置製造商或電信營運商進行簽章。</p>
-<p>封裝式 App 除了能使用 Privileged 與 Certified API 之外,也能在安裝之後更快取得裝置的資源,達到更快的首次啟動速度。基於這些特色,我們也針對 Firefox OS 裝置、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">Android 裝置</a>、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">桌機</a>,均建議以封裝式 App 的形式提供 Open Web App。</p>
-<div class="note">
- <p><strong>注意:</strong>目前 Firefox Marketplace 上所支援的付費封裝式 App,僅限為 Firefox OS App。而免費封裝式 App 已可支援 Firefox OS、行動版 Firefox (Firefox for Android)、桌面版 Firefox。現正開發可支援所有平台的付費 App。</p>
-</div>
-<div class="note">
- <p><strong>注意:</strong>你會在 Firefox 開發者工具的「應用程式管理員 (App Manager)」看到「manifest」中文翻譯為「安裝資訊檔」。</p>
-</div>
-<h2 id="封裝式_App_的類型"><strong>封</strong>裝<strong>式</strong><strong> App </strong><strong>的類型</strong></h2>
-<p>封裝式 App 可分為 Web App、Privileged App、Certified App,且均可對應 Firefox OS 不同程度的 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model#App_Security">App 安全性</a>模式。接著將提供進一步資訊。</p>
-<h3 id="Web_app">Web app</h3>
-<p>Web App 不會使用 Privileged 或 Certified API。在提交到 Marketplace 之後,App 的封包隨即簽章完成,但仍尚未執行 Privileged 或 Certified App 所使用的特殊授權程序。也因此 Web App 不能使用 Privileged 或 Certified API。這些 App 也不需要 Privileged 與 Certified App 所必備的<a href="https://developer.mozilla.org/en-US/Apps/CSP">內容安全政策</a> (CSP)。</p>
-<p>這種封裝式 App 的 <code>manifest.webapp</code> 檔案中,不需要 <code>type</code> 欄位。其 <code>type</code> (<code>web</code>) 的預設值就是正確的值。</p>
-<p>Web App 可<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈</a>,或可透過 Firefox Marketplace 發佈。Web App 亦可透過<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Hosted_apps">架設/托管式 App</a> 的機制對外提供。</p>
-<h3 id="Privileged_app">Privileged app</h3>
-<dl>
- <dt>
-  </dt>
- <dd>
- Privileged app 是由 Firefox OS Marketplace 以特殊程序核准之後發出。如果任一 App 要存取裝置上的特定 Sensitive API,則可為使用者提供更高的安全性。此種 App 即等同 iOS 或 Android 平台上的原生 App。若要指定為 Privileged App,必須在其 <code>manifest.webapp 檔案中添增</code> <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type"><code>type</code></a> 欄位並設定為 <code>privileged</code>。App 所要存取的 privileged API,均必須加入 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest">manifest</a> 檔案的 <code>permissions</code> 欄位中。</dd>
- <dd>
- Firefox OS、Web runtimes for Android、桌機,將針對 Privileged App 強制使用下列 <a href="https://developer.mozilla.org/en-US/docs/Security/CSP/Introducing_Content_Security_Policy">CSP</a>:</dd>
-</dl>
-<dl>
- <dd>
- <pre>"default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"</pre>
- <p>Privileged App 僅能透過 Firefox Marketplace 發佈。</p>
- </dd>
- <dt>
-  </dt>
-</dl>
-<h3 id="Certified_app">Certified app</h3>
-<dl>
- <dt>
-  </dt>
- <dd>
- <div class="geckoVersionNote">
- <p>一般第三方開發者並不會接觸到 Certified App;且 Certified App 也不會透過 Firefox Marketplace 發佈。這類 API 的長遠目標,就是要讓本身的憑證更完善、更具公信力,進而也能作為 Privileged API。如果你不是很想架構特定的 API,也可直接在 <a href="https://lists.mozilla.org/listinfo/dev-webapps">dev-webapps</a> 郵件群組中反應。</p>
- </div>
- </dd>
- <dd>
- Certified App 將透過 Certified API 而存取重要的系統功能,如智慧型手機上預設的撥號鍵盤,或系統設定 App。與 Privileged App 相較,並不會用於第三方 App,所以大多數的 App 開發者可忽略此類 App。除了所有的裝置許可均為隱式許可 (Implicit permission,意即不需要外部的使用者許可) 之外,Certified 與 Privileged App 大部分均屬於相似的封裝式 App。而 Certified App 必須取得 OEM 裝置或電信營運商裝置的許可,才能讓此隱式 App 使用重要 API。若要將 App 指定為 Certified App,則需於其 <code>manifest.webapp</code> 檔案中添增 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type"><code>type</code></a> 欄位並設定為 <code>certified</code>。</dd>
- <dd>
- Firefox OS 則針對 Certified App 建構了下列 CSP:
- <pre>"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"</pre>
- 與 Certified App 相較,Privileged App 則是針對 inline CSP 的影響而稍微放寬了限制。進一步了解其原因,可參閱<a href="https://wiki.mozilla.org/Apps/CSP">預設 CSP</a> 與 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=768029">Bug 768029</a>。<br>
- <br>
- OEM 廠商與電信營運商均已將 Certified App 安裝到裝置之上。</dd>
- <dt>
-  </dt>
-</dl>
-<h2 id="測試封裝式_App"><strong>測試封</strong>裝<strong>式</strong><strong> App</strong></h2>
-<p>如果要透過 Firefox OS 模擬器 (Firefox OS Simulator),測試 Firefox OS 裝置在安裝封裝式 App 的情形,可參閱<a href="https://developer.mozilla.org/zh-TW/Firefox_OS/Using_the_App_Manager">《應用程式管理員 (App Manager)》</a>。開發者也能透過《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Publish_options">App 發佈方式</a>》中的步驟,從一般網頁伺服器上安裝該 App 到裝置上。另請注意,如果你要自己發佈 App,就只能安裝封裝式 Web App。</p>
-<h2 id="發佈封裝式_App">發佈封裝式 App</h2>
-<p>有兩種方式可發佈封裝式 App:透過 Firefox Marketplace 或自行發佈。</p>
-<h3 id="透過_Firefox_Marketplace_發佈">透過 Firefox Marketplace 發佈</h3>
-<p>可參閱 <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App Publishing</a>,將封裝式 App 提交到 Firefox Marketplace 之上。</p>
-<p>在提交封裝式 App 時,其 zip 檔案即儲存於 Marketplace 伺服器之上,且 Marketplace 將根據封裝式 App 的 zip 檔案中的 manifest,產生新的「<strong>mini-manifest</strong>」檔案。在消費者安裝 App 時,隨即將 mini-manifest 傳送至 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.installPackage"><code>Apps.installPackage()</code></a> 函式以安裝該 App。僅安裝與更新程序才會使用 mini-manifest。App 執行期間並不會使用此檔案。</p>
-<h3 id="自行發佈">自行發佈</h3>
-<p>當然也能在 Firefox Marketplace 之外,也就是自己的網路伺服器上發佈封裝式 App。可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a>》。</p>
-<h2 id="更新封裝式_App"><strong>更新封</strong>裝<strong>式 A</strong>pp</h2>
-<p>若要進一步了解更新作業,請參閱《<a href="https://developer.mozilla.org/docs/Apps/Updating_apps">更新 App</a>》。</p>
-<h2 id="更多資訊">更多資訊</h2>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model">Firefox OS 安全性概述</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Application_security">應用程式安全性</a></li>
- <li><a href="https://github.com/robnyman/Firefox-OS-Boilerplate-App" title="https://github.com/robnyman/Firefox-OS-Boilerplate-App">Firefox OS Boilerplate App</a></li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html
deleted file mode 100644
index d914835648..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Policies and Guidelines
-slug: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines
-tags:
- - NeedsTranslation
- - Structure
- - TopicStub
-translation_of: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines
----
-<p>This section contains Firefox Marketplace policies and guidelines</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html
deleted file mode 100644
index 230c5d714a..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: 簡介 ─ 政策與指南
-slug: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Introduction
-translation_of: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Introduction
----
-<div class="summary"><span class="seoSummary">本文將提供 Firefox Marketplace 所用的多項政策與指南。</span></div>
-
-<div class="column-container">下列政策與指南均為 Firefox Marketplace 所用:</div>
-
-<div class="column-container"> </div>
-
-<div class="row topicpage-table">
-<div class="section">
-<h2 class="Community" id="Community" name="Community">政策</h2>
-
-<dl>
- <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies#Mozilla_Marketplace_privacy_requirements">隱私權政策</a></dt>
- <dd>如果 App 需用到消費者的個人資料,就必須提供隱私權政策。</dd>
-</dl>
-</div>
-
-<div class="section">
-<h2 class="Tools" id="Tools" name="Tools">指南</h2>
-
-<dl>
- <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies">隱私權政策</a></dt>
- <dd>如果 App 需用到消費者的個人資料,則相關指南可提供 App 隱私權政策中所需的資訊。</dd>
-</dl>
-
-<dl>
- <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria">截圖指南</a></dt>
- <dd>為 App 截圖的相關指南,且截圖亦可用於 Marketplace 上架展示。</dd>
- <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">App 測試與疑難排解</a></dt>
- <dd>相關資訊將說明測試環境的設定方式,以利測試 App 並解決可能發現的問題。</dd>
-</dl>
-</div>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html
deleted file mode 100644
index 6c505166dd..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: 簡介 — 制定 App 的價格
-slug: Archive/Mozilla/Marketplace/Publishing/Pricing/Introduction
-translation_of: Archive/Marketplace/Publishing/Pricing/Introduction
----
-<div class="warning">
-<p>本文將陸續新增相關內容,請隨時注意更新資訊。</p>
-</div>
-
-<div class="summary">要讓自己的 App 透過 Firefox Marketplace 獲得收益很簡單:為自己的帳戶設定 1 或更多的付款服務供應商,再設定 App 價格與發售國家 (免費 App 也能讓消費者升級為付費版本)。如果你要使用「應用程式內付款 (In-app payment)」功能,就必須取得 API 金鑰並定義 App 內販售的產品。本文將帶領你在 <span class="seoSummary">Firefox Marketplace</span> 中設定付費的<span class="seoSummary">Open Web App 及其內部販售產品,另提供有用的相關資訊。</span></div>
-
-<div class="column-container"> </div>
-
-<div class="row topicpage-table">
-<div class="section">
-<h2 class="Community" id="Community" name="Community">設定付費 App</h2>
-
-<dl>
- <dt><a href="/en-US/Marketplace/Publishing/Pricing/Payment_Accounts">付費帳戶</a></dt>
- <dd>設定帳戶的付款服務供應商,才能收取 App 售出及其內部付款的收益。</dd>
- <dt>訂價 (敬請期待)</dt>
- <dd>設定 App 價格與銷售國家等選項。</dd>
- <dt><a href="/en-US/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version">以「升級」方式推廣</a></dt>
- <dd>免費 App 亦可升級為付費 App。</dd>
-</dl>
-
-<h2 class="Community" id="Community" name="Community">更多資訊</h2>
-
-<dl>
- <dt> </dt>
- <dt><a href="/en-US/Marketplace/Monetization/Validating_a_receipt">檢驗收據</a></dt>
- <dd>該如何檢查消費者是否付款購買 App。</dd>
- <dt><a href="/en-US/Marketplace/Monetization/App_pricing">價格點數</a></dt>
- <dd>依國家訂價的相關資訊。</dd>
-</dl>
-</div>
-
-<div class="section">
-<h2 class="Community" id="Community" name="Community">設定應用程式內付款</h2>
-
-<dl>
- <dt>取得自己的 API 金鑰 (敬請期待)</dt>
- <dd>為自己的 App 取得 API 金鑰。</dd>
- <dt><a href="/en-US/Marketplace/Publishing/Pricing/In-app_products">定義應用程式內販售的產品</a></dt>
- <dd>於 Marketplace 上設定 fxPay 的應用程式內產品。</dd>
-</dl>
-
-<h2 id="更多資訊">更多資訊</h2>
-
-<dl>
- <dt><a href="/en-US/Marketplace/Monetization/Validating_a_receipt">檢驗收據</a></dt>
- <dd>該如何檢查消費者是否付款購買 App 內販售的產品。</dd>
-</dl>
-</div>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html
deleted file mode 100644
index e6938f4336..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: 付款帳號
-slug: Archive/Mozilla/Marketplace/Publishing/Pricing/Payment_Accounts
-translation_of: Archive/Marketplace/Publishing/Pricing/Payment_Accounts
----
-<div class="summary">
-<p>如果要在 Firefox Marketplace 設定付款 App 或應用程式內付款 (In-app payment) 產品,首先就是設定 1 家或更多的付款服務供應商。本文將說明 Firefox Marketplace 搭配多家供應商的理由、提交程序中所應完成的設定,另提供各家供應商的<strong>帳號</strong>資訊。</p>
-</div>
-
-<h2 id="付款服務供應商">付款服務供應商</h2>
-
-<p>目前配合 Firefox Marketplace 活躍中的付款服務供應商就是「Bango」,當然 Firefox Marketplace 未來將支援其他供應商。付款服務供應商可新增其他付款選項,如付款類型、電信營運商、收款國家等。另間「Boku」供應商很快就會加入 Marletplace。供應商另可透過 Marketplace 讓消費者選用其服務;但目前尚未有供應商支援此一選項。</p>
-
-<div class="note">
-<p>在交易付費 App 時,均必須透過  Firefox Marketplace 中的付款服務供應商之一。如果 App 亦提供應用程式內付款的產品,也可配合其他供應商,但開發者必須自行滿足必要的推銷與技術需求。</p>
-</div>
-
-<h2 id="供應商的功能">供應商的功能</h2>
-
-<p>所有的付款服務供應商必須達到下列:</p>
-
-<ul>
- <li>只要消費者購買 App 或其內付款的產品,必須能透過消費者的信用卡或電信帳單收取款項。</li>
- <li>將款項分配給開發者與 Mozilla (相關收入僅用以支付 Marketplace 發展與運作費用),並收取本次交易的費用。</li>
- <li>提供開發者的收益報表。</li>
-</ul>
-
-<h2 id="設定自己的付款帳號">設定自己的付款帳號</h2>
-
-<p>在<strong> </strong>Marketplace<strong> </strong>提交程序的「<strong>相容性與付款 (Compatibility &amp; Payments)</strong>」頁面上,找到「<strong>付款帳號 (Payment Accounts)</strong>」區塊並設定付款服務供應商。</p>
-
-<p><img alt="The Payment Accounts section of the Compatibility and Pricing page" src="https://mdn.mozillademos.org/files/8031/Payment%20accounts.png" style="width: 1001px; height: 920px;"></p>
-
-<p>在設定付款帳號與供應商兩者時,所需的資訊有所不同。但同樣必備的資訊如下:</p>
-
-<ul>
- <li>開發者的詳細資訊:姓名、地址、稅務編號、(如果你是以法人型態運作) 當地的公司登記資訊。</li>
- <li>詳細的銀行帳號資訊:銀行名稱、分行地址、匯款代碼或類似編號、自己的銀行帳號。</li>
-</ul>
-
-<div class="note">
-<p>在大多數的情況下,付款服務供應商也有在其他國家運作,因此會透過某些形式的國際銀行轉帳作業支付款項給開發者。這類交易都會需要收款銀行的識別代碼。常用的代碼有:</p>
-
-<ul>
- <li>SWIFT/BIC — 此代碼可識別收款銀行。開發者可能必須另外提供分行撥款的帳號。</li>
- <li>IBAN — 此代碼可一併識別收款銀行與你的帳號。</li>
-</ul>
-
-<p>其實只要透過 Google 查詢自己開戶的銀行名稱與匯款代碼 (可能是 SWIFT 或 BIC 或 IBAN),往往都能找到銀行的相關資訊。可在你開戶銀行的網站上尋找「跨國轉帳」、「收取海外匯款」或類似字眼。此外還有某些工具可協助你找到相關代碼:</p>
-
-<ul>
- <li><a href="https://ipsosepaservice.sentenial.com/ipso/">Irish Payment Services Organisation (IPSO) BIC and IBAN conversion tool</a> (僅限愛爾蘭銀行的帳號)。</li>
-</ul>
-</div>
-
-<p>以下連結可找到付款服務供應商的設定資訊:</p>
-
-<ul>
- <li><a href="/en-US/Marketplace/Publishing/Pricing/Providers/Bango">Bango</a></li>
- <li><a href="/en-US/Marketplace/Publishing/Pricing/Providers/Boku">Boku</a> (尚未啟用)</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html
deleted file mode 100644
index d0eb6c32a4..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: 建議升級 App 的免費版本
-slug: >-
- Archive/Mozilla/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version
-translation_of: Archive/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version
----
-<div class="summary">
-<p><span class="seoSummary">談到 App 的相容性與付款選項時,可讓 App 的免費版本升級為付費版本,並透過 Firefox Marketplace 提出此一推銷建議。此一選項可供消費者先體驗功能有所限制的 App,在決定是否購買完整功能的版本。或是免費版本會顯示廣告,付費版本則無廣告;或可為其他類似的組合。本文章說明設定方式,並讓 Firefox Marketplace 顯示升級資訊。</span></p>
-</div>
-
-<p>在「相容性與訂價 (<strong>Compatibility &amp; Pricing</strong>)」頁面底部,可看到「以升級至免費版本促銷 (<strong>Promote as upgrade to free version)</strong>」區塊。而在「<strong>這個付費版本升級此附加元件 (This is a paid upgrade of)</strong>」方塊中,你可選擇要哪些免費 App 可升級為付費 App。一旦選擇對應的免費版本 App 之後,就點擊「儲存變更 (<strong>Save Changes)</strong>」。</p>
-
-<p><img alt="Promote as upgrade to free version section of the Compatibility &amp; Pricing page" src="https://mdn.mozillademos.org/files/8025/Promote%20as%20Paid.png" style="width: 749px; height: 196px;"></p>
-
-<p>一旦 App 通過審查並發佈於 Firefox Marketplace 之上,則免費 App 列表中就會出現下列附加資訊:</p>
-
-<ul>
- <li>在手機上為:<br>
- <img alt="The Premium version available notice and link in the listing of a free app on a Firefox OS device." src="https://mdn.mozillademos.org/files/8029/Premium%20version%20available%20(phone).png" style="width: 480px; height: 853px;"></li>
- <li>在桌機上為:<br>
- <img alt="The Premium version available notice and link in the listing of a free app." src="https://mdn.mozillademos.org/files/8027/Premium%20version%20available.png" style="width: 740px; height: 220px;"></li>
-</ul>
-
-<p>若要進一步了解 App 的銷售方式,可參閱〈<a href="/en-US/Marketplace/Prepare/Choosing_your_business_model">選擇自己的商業模式〉。</a></p>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html
deleted file mode 100644
index 80c1bc6b62..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: 隱私權政策制定指南
-slug: Archive/Mozilla/Marketplace/Publishing/Privacy_policies
-translation_of: >-
- Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies
----
-<p>隱私權極難以界定,且牽涉到法律、社會規範、使用者期望等複雜的概念。不論是 App、網站、網頁、附加元件的開發者,都必須謹慎對待使用者的隱私權以獲得信賴。Mozilla 集結相關指南並制定極佳的隱私權政策,以協助開發者建構出注重隱私權的 App。但請注意,本文並無法取代真正律師所提供的實質法律服務。</p>
-<h2 id="隱私權政策">隱私權政策</h2>
-<p>隱私權政策用以闡述你對資料的處理方式。關鍵在於開發者<strong>蒐集</strong>、<strong>使用</strong>、<strong>儲存</strong>、<strong>共用</strong>、<strong>揭露</strong>個人資訊的方法。Mozilla 則集結成隱私權政策範本,讓開發者能簡單說明自己的隱私權政策。</p>
-<pre><a href="https://github.com/flamsmark/privacy-policy-template" title="https://github.com/flamsmark/privacy-policy-template">https://github.com/flamsmark/privacy-policy-template</a>
-</pre>
-<p>首先請參閱 <a class="link-https" href="https://github.com/flamsmark/privacy-policy-template#readme" title="https://github.com/flamsmark/privacy-policy-template#readme">README</a>。此範本僅可協助你制定部分的隱私權政策。Mozilla 前提是協助開發者能更輕鬆制定隱私權政策,但無法保證此範本已經面面俱到。至少此範本能讓你注意到主要的隱私權問題並進一步思考。敬請使用該範本並自行強化不足的部份。</p>
-<p>此範本也是很好的實作機會 (某些情況下必須兼顧適法性的問題)。開發者可透過隱私權政策讓消費者知道自己的資訊將何去何從。全世界有這麼多不同的國家,對使用者資料的蒐集、使用、儲存、揭露方式的要求也有所差異。開發者應透過律師了解不同的隱私權政策,並確實讓消費者得知自己應熟悉的要點。</p>
-<h2 id="Mozilla_Marketplace_的隱私權要求">Mozilla Marketplace 的隱私權要求</h2>
-<p>如果任一 App 或附加元件 (Add-on) 將蒐集消費者的資料,則開發者就必須提供隱私權政策並將之列於 Mozilla Marketplace 之中。</p>
-<h2 id="設計_App_的隱私權要點">設計 App 的隱私權要點</h2>
-<ul>
- <li>設計自己的 App 或附加元件,而處理消費者資料的方式,務必與消費者心中所認知的方式一致。</li>
- <li>儘量讓消費者能控制自己的資料,例如讓他們自行選擇是否允許資料蒐集作業。</li>
- <li>限制自己的資料蒐集作業,只使用必要的資料。</li>
- <li>設計自己的 App 與服務,以保護消費者資料在蒐集、儲存、使用過程中的安全性。</li>
- <li>回答消費者對於隱私權的問題與懷疑之處。</li>
- <li>避免不為消費者所知的更新作業。</li>
- <li>將相關社交功能攤在陽光下,讓消費者確實知道自己正分享資料出去。</li>
- <li>讓消費者能關閉自動分享的功能,或針對資料分享提供更多樣的選項。</li>
- <li>必要時應取得消費者的許可,特別是當事人的地理位置或其他敏感資訊。</li>
- <li>提供自己隱私權政策的連結。若有「使用條款」亦可於 App 內提供。</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html
deleted file mode 100644
index c7b213c18c..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html
+++ /dev/null
@@ -1,145 +0,0 @@
----
-title: 自行發佈 App
-slug: Archive/Mozilla/Marketplace/Publishing/Publish_options
-translation_of: Archive/Mozilla/Marketplace/Options/Self_publishing
----
-<div class="summary">
- <p>開發者可能不想透過 Firefox Marketplace 發佈 App,例如你只想提供給組織內的成員、執行測試版 App,或只是自己試好玩的。本篇文章將說明開發者如何在 Firefox Marketplace 之外自行發佈 App。</p>
-</div>
-<h2 id="sect1"> </h2>
-<p>Open Web App 可透過 {{ domxref("Apps.install") }} 或 {{ domxref("Apps.installPackage") }},安裝到 Firefox OS、執行 Firefox for Android 的裝置,或是執行桌面版 Firefox 的桌機之上。而這些 API 均會送出 manifest 檔案的網址,其內將敘述所將安裝的 App。因此要自行發佈 App 就必須滿足下列基本要求:</p>
-<ol>
- <li>伺服器必須裝載 App 的 manifest 檔案</li>
- <li>伺服器必須裝載 (架設/托管式) App,或 (封裝式) App 的 ZIP 檔案</li>
- <li>置於網站上的程式碼必須觸發合適的 {{ domxref("Apps.install") }} 或 {{ domxref("Apps.installPackage") }}</li>
-</ol>
-<h2 id="限制">限制</h2>
-<p>在自己發佈 Open Web App 之前,必須注意下列限制:</p>
-<ul>
- <li>自行發佈的 App 不能使用 <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">Privileged API</a>。若要使用這類 API,則必須為封裝式 (Packaged) App 並具備自己的 ZIP 檔案,另需經由 Firefox Marketplace 提交程序而完成簽署。</li>
- <li>你的 App 不能使用 Firefox Marketplace 的 App 內購買功能。</li>
- <li>由於 App 無法在 Firefox Marketplace 上曝光,所以開發者必須自行研究 App 的發佈技術。</li>
-</ul>
-<h2 id="自行發佈封裝式_App"><strong>自行發佈封裝式</strong> App</h2>
-<p>只要在伺服器上架設/托管 ZIP 檔案與其 mini-manifest,就能自行發佈封裝式 App。而 mini-manifest 必須置於 ZIP 相同的目錄之下,以利安裝程序能識別 App。接著可建立指令碼以觸發 {{ domxref("Apps.installPackage") }},送出 mini-manifest 的細節。可參閱下方以了解:</p>
-<ol>
- <li>
- <p>將 App 的內容壓縮為 ZIP 並命名為 <code>package.zip</code>。 此檔案應容納 App 的所有資源檔案,並包含 (主要) <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">manifest</a> 檔案。</p>
- <div class="warning">
- <p>重要:請注意封裝式 App 所要壓縮的內容,不要包含檔案本身的目錄。如果你連母目錄都壓縮進去,則 manifest 檔案就位於錯誤地方,整個封裝式 App 隨即無效。</p>
- </div>
- </li>
- <li>建立名為 <code>manifest.webapp</code> 的檔案,並加入以下內容。此檔案即所謂的 mini-manifest,也是封裝式 App 壓縮檔內的精簡版 manifest 檔案。而 {{ domxref("Apps.installPackage") }} 將使用 mini-manifest,以進行 App 的安裝程序。若要進一步了解細節,可參閱下方的 <a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Publish_options$edit#Mini-manifest_fields">Mini-manifest 欄位</a>。<br>
- <pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"My sample app"</span><span class="token punctuation">,</span>
- <span class="token string">"package_path"</span> <span class="token punctuation">:</span> <span class="token string">"http://my-server.com/my-app-directory/package.zip"</span><span class="token punctuation">,</span>
- <span class="token string">"version"</span><span class="token punctuation">:</span> <span class="token string">"1"</span><span class="token punctuation">,</span>
- <span class="token string">"developer"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"A. Developer"</span><span class="token punctuation">,</span>
- <span class="token string">"url"</span><span class="token punctuation">:</span> <span class="token string">"http://my-server.com"</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
- </li>
- <li>建立可安裝 App 的指令碼。這裡我們使用了名為「<code>index.html</code>」的簡易 HTML 檔案。但你也可將指令碼新增至按鈕,或使用任何適當的函式,以於自己的網站上觸發作業。此頁面上的 JavaScript 將呼叫 Packaged App installer API ({{ domxref("Apps.installPackage") }}),並針對安裝作業的成功與否進行回呼 (Callback)。
- <pre class="brush: html language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">&gt;</span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">&gt;</span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">&gt;</span></span>Packaged app installation page<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">&gt;</span></span>
- <span class="token script"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span>
- <span class="token comment"> // This URL must be a full url.
-</span> <span class="token keyword">var</span> manifestUrl <span class="token operator">=</span> <span class="token string">'http://my-server.com/my-app-directory/manifest.webapp'</span><span class="token punctuation">;</span>
- <span class="token keyword">var</span> req <span class="token operator">=</span> navigator<span class="token punctuation">.</span>mozApps<span class="token punctuation">.</span><span class="token function">installPackage<span class="token punctuation">(</span></span>manifestUrl<span class="token punctuation">)</span><span class="token punctuation">;</span>
- req<span class="token punctuation">.</span>onsuccess <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token function">alert<span class="token punctuation">(</span></span>this<span class="token punctuation">.</span>result<span class="token punctuation">.</span>origin<span class="token punctuation">)</span><span class="token punctuation">;</span>
- <span class="token punctuation">}</span><span class="token punctuation">;</span>
- req<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token function">alert<span class="token punctuation">(</span></span>this<span class="token punctuation">.</span>error<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
- <span class="token punctuation">}</span><span class="token punctuation">;</span>
- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">&gt;</span></span>
-<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">&gt;</span></span></code></pre>
- </li>
- <li>將「<code>package.zip</code>」、「<code>package.manifest</code>」、「<code>index.html」</code>複製到你指定的目錄中 (此範例則為 <code>my-app-directory</code>),即可在自己的伺服器或網站上設定檔案。</li>
- <li>以相容設備 (如 Firefox OS 手機) 安裝 App。只要開啟 <code>index.html</code> 檔案 (此範例的路徑為 <code> <a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://my-server.com/my-app-directory/index.html</a></code>)  就會看到系統詢問是否要安裝該 App。繼續執行安裝步驟直到完畢,接著網頁指令就會顯示安裝作業是否成功。</li>
-</ol>
-<div class="note">
- <p>秘訣:你可於本端架設/托管 1 個封裝式 App,並於裝置中進行測試。伺服器與裝置必須位於同一個網路之上,而伺服器必須能接收本端網路的請求。你只要在 mini-manifest 檔案的 <code>package_path</code> 中加入絕對路徑即可。只要用相同的方式,正常情況就已經納入絕對路徑 (可參閱下方)。如果要使用非標準通訊埠,例如 <code><a class="LinkyMobile-ext" href="http://10.10.12.1:8080/package.zip" title="Linkification: http://10.10.12.1:8080/package.zip">http://10.10.12.1:8080/package.zip</a></code>,則記得應納入通訊埠的資訊。</p>
-</div>
-<h3 id="Mini-manifest_檔案的欄位">Mini-manifest 檔案的欄位</h3>
-<p>如果要在 Firefox Marketplace 發佈 App,就不需擔心該如何建立 mini-manifest 檔案;Firefox Marketplace 可為開發者代勞。Marketplace 將使用 manifest 檔案中的相關資訊。可參閱《<a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest">App 的 manifest 檔案</a>》一文。</p>
-<p>如果要自行發佈 App,也就必須自行建立 mini-manifest 檔案。最好就是複製「主要」的 manifest 檔案,並依需求將之更新。先複製完整內容就能輕鬆建立 mini-manifest 檔案,因其內的 <code>name</code>、<code>version</code>、<code>developer</code>、<code>locales</code> 欄位必須完全相同。開發者亦可添增其他內容。mini-manifest 檔案專屬的欄位則包含 <code>package_path</code>、<code>release_notes</code>、<code>size</code>。</p>
-<dl>
- <dt>
- <code>package_path</code> (必填)</dt>
- <dd>
- 儲存 App 壓縮檔的絕對路徑 (需為完整的網址,如  <code> <a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://my-server.com/my-app-directory/manifest.webapp</a></code>)</dd>
- <dt>
- <code>release_notes</code> (選填)</dt>
- <dd>
- App 版本資訊。在 Firefox Marketplace 的提交過程中,就必須提供此項資訊。</dd>
-</dl>
-<dl>
- <dt>
- <code>size</code> (選填)</dt>
- <dd>
- 以 byte 計算的 App 壓縮檔容量。而 {{ domxref("Apps.installPackage") }} 將使用此項資訊,才能在安裝過程中顯示安裝進度。</dd>
-</dl>
-<p>以下提供範例:</p>
-<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"My app"</span><span class="token punctuation">,</span>
- <span class="token string">"package_path"</span><span class="token punctuation">:</span> <span class="token string">"http://thisdomaindoesnotexist.org/myapp.zip"</span><span class="token punctuation">,</span>
- <span class="token string">"version"</span><span class="token punctuation">:</span> <span class="token string">"1.0"</span><span class="token punctuation">,</span>
- <span class="token string">"size"</span><span class="token punctuation">:</span> <span class="token number">172496</span><span class="token punctuation">,</span>
- <span class="token string">"release_notes"</span><span class="token punctuation">:</span> <span class="token string">"First release"</span><span class="token punctuation">,</span>
- <span class="token string">"developer"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Developer Name"</span><span class="token punctuation">,</span>
- <span class="token string">"url"</span><span class="token punctuation">:</span> <span class="token string">"http://thisdomaindoesnotexist.org/"</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"fr-FR"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Mon application"</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"se-SE"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Min balla app"</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
- <span class="token string">"16"</span><span class="token punctuation">:</span> <span class="token string">"/icons/16.png"</span><span class="token punctuation">,</span>
- <span class="token string">"32"</span><span class="token punctuation">:</span> <span class="token string">"/icons/32.png"</span><span class="token punctuation">,</span>
- <span class="token string">"256"</span><span class="token punctuation">:</span> <span class="token string">"/icons/256.png"</span>
- <span class="token punctuation">}</span>
-<span class="token punctuation">}</span></code></pre>
-<p>此範例中的其他欄位包含:</p>
-<dl>
- <dt>
- <code>name</code> (必填)</dt>
- <dd>
- App 的名稱,最長 128 個字元。</dd>
- <dt>
- <code>version</code> (選填)</dt>
- <dd>
- App 的目前版本。</dd>
- <dt>
- <code>developer</code>  (選填)</dt>
- <dd>
- 開發者的資訊,內含 <code>name</code> 與 <code>url</code> 欄位。而 mini-manifest 與 manifest 檔案中的開發者資訊必須相同。</dd>
- <dt>
- <code>locales</code> (選填)</dt>
- <dd>
- 語系資訊,必須為 <code>xx-YY</code> 格式。</dd>
- <dt>
- <code>icons</code> (選填)</dt>
- <dd>
- App 所使用的圖示。</dd>
-</dl>
-<p>若要進一步了解 manifest 檔案,可參閱《<a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">App 的 manifest 檔案</a>》。</p>
-<h2 id="自行發佈架設托管式_App">自行發佈架設/托管式 App</h2>
-<p>與封裝式 App 相較,如果你建立內容的方式,就與 Firefox Marketplace 發佈的方式相同,則自行發佈架設/托管式 (Hosted) App 就更簡單了。基本上就是為自己的 App 建立 <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">manifest 檔案</a>。接著加入程式碼以觸發 {{ domxref("Apps.install") }}。此程式碼必須與上述封裝式 App 所用的相同。唯一不同點在於,你可對 manifest 檔案設立相對的參考位置。</p>
-<h2 id="另請參閱">另請參閱</h2>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/Apps/Build/JavaScript_API">App 的 Installation 與 Management API</a></li>
- <li>{{ domxref("Apps.install") }}</li>
- <li>{{ domxref("Apps.installPackage") }}</li>
- <li><a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">App 的 manifest 檔案</a></li>
- <li><a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">App 權限</a></li>
-</ul>
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html
deleted file mode 100644
index 5f029ca0c3..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: 提交作業檢查清單
-slug: Archive/Mozilla/Marketplace/Publishing/Submission_checklist
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submission_checklist
----
-<div class="summary">
- <p><span class="seoSummary">在將自己的 App 提交到 Firefox Marketplace 之前,當然該確認是否已經掌握了所有必要資源。本文則提供檢查項目與相關資訊的連結。</span></p>
-</div>
-<h2 id="提交作業檢查清單">提交作業檢查清單</h2>
-<p>要完成 Firefox Marketplace 的提交程序,你需要:</p>
-<h3 id="針對封裝式_(Packaged)_App">針對<a href="/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a></h3>
-<ul>
- <li>將 App 封裝為 zip 檔案,並將 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案至於根目錄中。</li>
- <li>於 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案中指定 <code><a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#launch_path">launch_path</a></code>。</li>
-</ul>
-<h3 id="針對架設托管式_(Hosted)_App">針對<a href="/en-US/Marketplace/Options/Hosted_apps">架設/托管式 (Hosted) App</a></h3>
-<ul>
- <li><span style="line-height: 1.5em;">可架設/托管 App 的網站。進一步資訊可參閱</span><span style="line-height: 1.5em;">《<a href="/en-US/Marketplace/Options/Hosted_apps#Options_for_hosting_your_app">Options for hosting your app</a></span><span style="line-height: 1.5em;">》。</span></li>
- <li>App 內 manifest 檔案的網址。進一步資訊可參閱《<a href="https://developer.mozilla.org/zh-TW/Apps/Developing/Manifest/Manifest-840092-dup#csp">App 的 Manifest 檔案</a>》。</li>
-</ul>
-<div class="note">
- <p>在將 App 提交到 Firefox Marketplace 之前,可使用「<a href="https://marketplace.mozilla.org/developers/validator">測試應用程式驗證</a>」工具來測試 manifest 檔案的正確性。</p>
-</div>
-<div class="note">
- <p><strong>注意:</strong>你會在「應用程式管理員 (App Manager)」看到「manifest」中文翻譯為「安裝資訊檔」。</p>
-</div>
-<h3 id="針對所有_App_(必備)">針對所有 App (必備)</h3>
-<p>架設/托管式、封裝式 App 的共通必要條件:</p>
-<ul>
- <li>App 的<a href="/en-US/Apps/Developing/Manifest#name">名稱</a>必須加進 manifest 檔案中,最多可達 128 個字元。在 App 上傳程序的 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 中,亦必須預先填入 Marketplace 的「Name」欄位。</li>
- <li>App 的 manifest 檔案必須有 App 的<a href="/en-US/Apps/Developing/Manifest#description">相關敘述</a>,最多可達 1024 個字元。在 App 上傳程序的 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 中,亦必須預先填入 Marketplace 的「Description」欄位,並可後續進行編輯 (但如果是 Marketplace 的說明欄位,則沒有字元數的限制)。</li>
- <li>需提供 128 x 128px 的縮圖圖示,以於 Marketplace 上呈現。此為固定的圖示尺寸。若要進一步了解應如何將圖示加入 App 中,可參閱 <a href="/en-US/Apps/Developing/Manifest#icons">manifest 圖示</a>。</li>
- <li>需提供 App 截圖,至少為 320 x 480px (可參閱 <a href="/en-US/Apps/Publishing/Marketplace_screenshot_criteria">Marketplace 截圖準則</a>以進一步了解。若要添增或變更截圖,可於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_4.3A_Next_Steps">Step 4</a> 中更新之)。</li>
- <li>App 的隱私權政策,或是隱私權政策網頁的網址。可參閱<a href="/en-US/Marketplace/Publishing/Privacy_policies">隱私權政策指南</a>以進一步了解 (可於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 時輸入)。</li>
- <li>提供 App 支援服務的電子郵件位址 (可於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 時輸入)。</li>
-</ul>
-<h3 id="針對付費_App_或應用程式內付款_(In-app_payments)">針對付費 App 或應用程式內付款 (In-app payments)</h3>
-<ul>
- <li>你必須找好付款服務商、銀行帳戶明細 (如帳號、SWIFT 代號、地址明細)、公司明細 (如 VAT 編號、公司統編、開業日期)。</li>
- <li>如果 App 使用 In-app payments,確認已於 manifest 檔案中提供了 origin。</li>
-</ul>
-<h3 id="針對所有_App_(非必備)">針對所有 App (非必備)</h3>
-<p>架設/托管式、封裝式 App 的建議條件:</p>
-<ul>
- <li>最多可提交 6 張截圖來呈現 App 的主畫面。最好是涵蓋不同裝置規格的 App 截圖,且各有尺寸限制:
- <ul>
- <li>手機:建議 320 x 480px 或相對應的倍數。</li>
- <li>平板電腦:建議 1024 x 768px 或 1280 x 800px。</li>
- <li>桌上型電腦:建議 1280 x 800px 或 1440 x 900px。</li>
- </ul>
- </li>
- <li>其他尺寸的圖示應透過 manifest 檔案指定,以於其他平台/網頁內容達到最佳顯示效果:
- <ul>
- <li>60 x 60px 圖示可於裝置螢幕上顯示。</li>
- <li>32 x 32px、90 x 90px、120 x 120px、256 x 256px 圖示,可於不同平台達到最佳顯示效果,如 Windows 7 與 Android。</li>
- </ul>
- </li>
- <li>App 及其支援服務首頁的網址。根據你自己的需要,可為相同或不同的網址 (於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 時輸入)。</li>
- <li>其他<a href="/en-US/Apps/Developing/Manifest"> manifest</a> 檔案的選填欄位。目前有 <a href="/en-US/Apps/Developing/Manifest#name">name</a>、<a href="/en-US/Apps/Developing/Manifest#description">description</a>、<a href="/en-US/Apps/Developing/Manifest#icons">icons</a> 為必要欄位,另有許多選填欄位,例如:
- <ul>
- <li>如果你要提供多語言版本的 App,就必須填入 <a href="/en-US/Apps/Developing/Manifest#locales">locales</a> 的資訊。</li>
- <li>如果有 locales 欄位,就必須一併提供 <a href="/en-US/Apps/Developing/Manifest#default_locale">default_locale</a> 欄位。</li>
- <li>如果要在 App 中使用特定裝置的 API 或 Web Activity,也必須在 manifest 檔案中提供相關 <a href="/en-US/Apps/Developing/App_permissions">App permissions</a> 或 <a href="/en-US/docs/WebAPI/Web_Activities">activities</a> 欄位。</li>
- </ul>
- </li>
-</ul>
-<h3 id="另外還有......">另外還有......</h3>
-<p>......你應該:</p>
-<ul>
- <li>在 Marketplace 審核通過你的 App 之後,預設將立刻讓 App 上架。如果你不想讓 App 立刻上架,則在提交 App 時要取消勾選「<strong>Publish my app in the Firefox Marketplace as soon as it's reviewed</strong>」(於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_2.3A_Submit">Step 2</a> 時勾選)。</li>
- <li>可參閱 <a href="/en-US/docs/Web/Apps/Publishing/Marketplace_review_criteria">Marketplace 審查準則</a> (<a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_1.3A_Agreement">Step 1</a>)。</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html
deleted file mode 100644
index 88211b4b18..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html
+++ /dev/null
@@ -1,129 +0,0 @@
----
-title: 輸入 App 上架時所顯示的詳細資訊
-slug: Archive/Mozilla/Marketplace/Publishing/Submit/Enter_your_apps_details
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Enter_your_apps_details
----
-<div class="summary">
-<p>在將 App 上傳到 Firefox Marketplace 之後,應更新 App 的詳細資訊以利於 Marketplace 頁面上顯示。</p>
-</div>
-
-<div class="note">
-<p>此步驟將針對 App 的預設語系版本 (英文),編輯相關細節 (如網址與說明等)。如果你有其他語系版本,或是要針對其他國家\語系而修改詳細資訊,仍必須透過標準的「編輯資訊 (Edit Listing)」選項 (可參閱 <a href="/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">step 9</a>)。</p>
-</div>
-
-<div class="note">
-<p>注意:你可能會看到「manifest 檔案」的正體中文翻譯為「安裝資訊檔」。</p>
-</div>
-
-<p>現在進入「<strong>提交 App、編輯</strong><strong> App 詳細資訊</strong>」的頁面。</p>
-
-<p><img alt="Edit app details page header" src="https://mdn.mozillademos.org/files/8245/Page%20header.png" style="width: 979px; height: 345px;"></p>
-
-<p>如頁面中所示,你在 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案中提供的 App 詳細資訊,會由系統預先填入大部分的頁面空格之中。</p>
-
-<h2 id="App_圖示與網址">App 圖示與網址</h2>
-
-<p>在 manifest 檔案中提供的 App 圖示與說明,再加上檔案儲存網頁的網址,都已經列於此頁面的第一區塊內。Marketplace 將根據 App 名稱而自動產生網址,並逕行修改以成為專屬網址。你可以點擊 (1)「<strong>開啟詳細資訊頁面 (Open details</strong> <strong>page)</strong>」以檢視 Marketplace 的細節頁面,也能點擊 (2)「<strong>編輯 (Edit)」</strong>以編輯圖示與Marketplace 的網址。</p>
-
-<p><img alt="When the page first loads your app name and icon are displayed (based on the manifest content) along with the URL generated by Marketplace" src="https://mdn.mozillademos.org/files/8247/App%20URL%20-%20Display.png" style="width: 978px; height: 136px;"></p>
-
-<p>若要更改 App 的圖示,就點擊 (1) 的圖示就能瀏覽電腦上的其他圖檔。若要更改 App 詳細資訊的頁面名稱,可於 (2) 的 <strong>App 網址</strong>方塊中輸入新的值。如果你輸入目前已存在的頁面名稱,就會出現警告訊息,直到你修改完畢並點擊「<strong>繼續 (Continue)</strong>」為止。而且必須修改成有效的 App 詳細資訊頁面網址,否則就無法離開此頁面。</p>
-
-<p><img alt="You can (1) change the app's icon and (2) enter your own page name for the app" src="https://mdn.mozillademos.org/files/8197/App%20URL%20-%20Edit.png" style="width: 978px; height: 130px;"></p>
-
-<h2 id="App_說明">App 說明</h2>
-
-<p>接著下個區塊則顯示 App 的相關說明,也是直接取自於 manifest 檔案而來。你也可以依照自己需要而在「<strong>說明 (Description)</strong>」方塊中編輯說明。只要拖曳方塊右下角,就能拉大整個編輯方塊的面積。此為必填欄位。</p>
-
-<p><img alt="You can create a description over 1024 characters and include some HTML tags to improve formatting. " src="https://mdn.mozillademos.org/files/8249/Edit%20description.png" style="width: 978px; height: 171px;"></p>
-
-<p>與 manifest 檔案所提供的說明不同,這裡讓你編輯的說明內容可以:</p>
-
-<ul>
- <li>超過 1024 個字元,但請還是儘量提供簡潔的說明內容。可參閱〈<a href="/en-US/Marketplace/Prepare/Promoting_your_app">Promoting your app</a>〉一文中的「<a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app#App_listing" rel="internal">App listing</a>」,帶你寫出精簡的說明。</li>
- <li>納入基本的 HTML 標籤功能,呈現更漂亮的說明內容。只要點擊 (1)「<strong>支援部分 HTML supported</strong>」,就能看到相關的標籤清單。目前可支援的標籤有:
- <ul>
- <li>&lt;a href title&gt;</li>
- <li>&lt;abbr title&gt;</li>
- <li>&lt;acronym title&gt;</li>
- <li>&lt;b&gt;</li>
- <li>&lt;blockquote&gt;</li>
- <li>&lt;code&gt;</li>
- <li>&lt;em&gt;</li>
- <li>&lt;i&gt;</li>
- <li>&lt;strong&gt;</li>
- <li>&lt;ul&gt;, &lt;li&gt;, and &lt;ol&gt;</li>
- </ul>
- </li>
-</ul>
-
-<h2 id="App_分類">App 分類</h2>
-
-<p>Marketplace 是以「分類 (Category)」提供 App 完整列表。開發者必須為自己的 App 勾選至少一項分類,當然也可以視需要而勾選他項適合的分類。舉例來說,如果 App 可擷取、編輯、分享照片,你當然可以勾選「<strong>Photo &amp; Video</strong>」與「<strong>Social</strong>」兩種分類。</p>
-
-<p><img alt="You must pick one, but can pick 2, categories that match your app'scontent" src="https://mdn.mozillademos.org/files/8251/Categories.png" style="width: 985px; height: 187px;"></p>
-
-<h2 id="隱私權政策">隱私權政策</h2>
-
-<p>開發者必須提供 App 的隱私權政策,即使 App 聲稱不會蒐集個人資料,也同樣必須提供。如果 App 會蒐集消費者的個人詳細資訊,就必須提供詳盡的政策 (網頁連結或純文字均可)。你可到《<a href="/en-US/Marketplace/Publishing/Privacy_policies">隱私權政策指南</a>》 找到的撰寫資訊。而上述「說明」欄位所支援的 HTML 標籤,也同樣可用在政策撰寫時的格式。這裡一樣拖曳 (1) 方塊的右下角,能拉大編輯方塊的面積空間。</p>
-
-<p><img alt="A privacy policy must be provided, even if its only to say that no personal data is collected by the app" src="https://mdn.mozillademos.org/files/8253/Privacy%20policy.png" style="width: 979px; height: 211px;"></p>
-
-<h2 id="App_資訊與支援服務連結">App 資訊與支援服務連結</h2>
-
-<p>如果有 App 首頁與支援服務頁面的網址,亦可一併提供。但你至少須提供電子郵件位址,以利消費者聯絡後續支援服務。</p>
-
-<p><img alt="Link can be provided to any information or support pages for the app, however a support email address must be provided" src="https://mdn.mozillademos.org/files/8255/app%20links.png" style="width: 977px; height: 237px;"></p>
-
-<div class="note">
-<p>支援服務的電子郵件位址,即納入 App 於<span class="hint"> Marketplace 上架時的公開清單中。建議你應提供專屬的電子郵件位址,而不要使用一般的免費郵件位址。</span></p>
-</div>
-
-<h2 id="是否支援_Flash">是否支援 Flash</h2>
-
-<p>如果你針對 Adobe Flash 而開發 Web App 的內容,則請在這裡點選「Yes」代表使用了 Adobe Flash。反之則點選「No」。</p>
-
-<p><img alt="Indicate whether your app has need for Flash support" src="https://mdn.mozillademos.org/files/8257/Flash.png" style="width: 973px; height: 79px;"></p>
-
-<h2 id="截圖與影片">截圖與影片</h2>
-
-<p>現在可為自己的 App 加上截圖與影片了。點擊 (1)「<strong>新增螢幕截圖或影片 (Add a screenshot or video)</strong>」,就能瀏覽電腦的檔案,找到對應的檔案並點選即可。若添增超過 1 支以上的檔案,就能拖曳 (2) 檔案以變更 Marketplace 中呈現的順序。亦可點擊 (3) 的刪除圖示,移除你不想要的檔案。</p>
-
-<p>截圖可為 PNG 或 JPG 格式,影片則為 <a href="http://www.webmproject.org/">WebM</a> 格式。建議手機截圖為 320 x 480 px 尺寸。另可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Marketplace_screenshot_criteria" title="Some guidelines on how to create an effective screenshot for marketplace submission">Marketplace 截圖準則</a>》,以及《<a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app#Videos" rel="internal">Promoting your app</a>》的〈<a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app#Videos" rel="internal">Videos</a>〉進一步了解。</p>
-
-<p><img alt="Click Add a screenshot or video to add a new item. reorder added items and delete any unwanted items" src="https://mdn.mozillademos.org/files/8259/Add%20screenshots%20and%20videos.png" style="width: 982px; height: 462px;"></p>
-
-<h2 id="設定發佈方式">設定發佈方式</h2>
-
-<p>你可決定在 App 通過 Firefox Marketplace 的審查之後,是要立刻上架 (<strong>發佈 App 並讓任何人都能在 Marketplace 中看到,另將納入搜尋結果</strong>),或是暫時不要發佈 (<strong>不發佈App。提醒開發者可稍後調整 App 上架情形</strong>)。</p>
-
-<p><img alt="Selected whether your app will be added to Marketplace as soon as it's been approved or whether you will set its visibility after approval" src="https://mdn.mozillademos.org/files/8473/publication%20visibility%20new.png" style="width: 996px; height: 179px;"></p>
-
-<p>點選「<strong>不要自動發佈我的程式 (Do not publish my app)</strong>」將可:</p>
-
-<ul>
- <li>選擇 App 發佈時機。你可能想排定自己的軟體釋出與發表時機。</li>
- <li>保持他人還看不到此 App。你可能只是發表自己公司內部使用,或是尚在測試階段的 App。</li>
-</ul>
-
-<p>「不要自動發佈我的程式」將有更多詳細資訊供你選擇,敬請期待。</p>
-
-<div class="note">
-<p>在你完成這一步驟之後,就無法編輯此選項。往後若要修改此選項,就必須提供 App 的更新檔才行。</p>
-</div>
-
-<h2 id="給審查人員看的註記">給審查人員看的註記</h2>
-
-<p>最後,你可提供額外資訊給 App 審查人員觀看。特別一提,如果 App 所搭配的 Web 服務需要消費者登入才可使用,則你應提供暫時性的帳戶給審查人員試用此服務。只要拖曳方塊右下角,就能拉大整個編輯方塊的面積。</p>
-
-<p><img alt="Add comments to assist the reviewer review your app" src="https://mdn.mozillademos.org/files/8261/your%20comments%20for%20reviewer.png"></p>
-
-<div class="note">
-<p>在你完成這一步驟之後,就無法編輯此選項。往後若要修改此選項,就必須提供 App 的更新檔才行。</p>
-</div>
-
-<h2 id="下一步">下一步</h2>
-
-<p>點擊「繼續 (Contiune)」即可進到下個程序:<a href="/en-US/Marketplace/Publishing/Submit/Next_steps">下一步</a></p>
-
-<p><img alt="Click Continue to proceed to the next step" src="https://mdn.mozillademos.org/files/8263/continue.png" style="width: 980px; height: 81px;"></p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html
deleted file mode 100644
index a6e3468169..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Submit
-slug: Archive/Mozilla/Marketplace/Publishing/Submit
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submit
----
-<p>This section describes the process for submitting an app to Firefox Marketplace</p>
-<p>Residual details: <a href="/en-US/Marketplace/Publishing/Submit/Submitting_an_app">https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Submitting_an_app</a></p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html
deleted file mode 100644
index 7c657ed720..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html
+++ /dev/null
@@ -1,134 +0,0 @@
----
-title: 將 App 上傳到 Firefox Marketplace
-slug: Archive/Mozilla/Marketplace/Publishing/Submit/Load_your_app
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Load_your_app
----
-<div class="summary">
-<p>在登入自己的開發者帳戶並同意開發者協定之後,就能輸入 App 的細節,再讓  Firefox Marketplace 識別其 manifest 檔案。</p>
-</div>
-
-<div class="note">
-<p>注意:你可能會看到「manifest 檔案」之正體中文翻譯為「安裝資訊檔」。</p>
-</div>
-
-<h2 id="概述">概述</h2>
-
-<p>現在你進入「提交 App (<strong>Submit an App</strong> )」頁面,可進行:</p>
-
-<ul>
- <li>確認 App 的獲利模式 — 是要免費提供給消費者,或是消費者須付費購買,也可以另外提供應用程式內付款 (In-app payments) 產品。</li>
- <li>確認 App 是否可相容於該平台。</li>
- <li>根據 App 的封裝方式:
- <ul>
- <li>確認托管\架設式 (Hosted) App 的 manifest 檔案之位址。</li>
- <li>上傳封裝式 (Packaged) App 的 ZIP 檔案。</li>
- </ul>
- </li>
- <li>提供 App 必要的特性\功能相關資訊。</li>
-</ul>
-
-<h2 id="收益方式">收益方式</h2>
-
-<p>你首先應對 App 所提供的資訊,就是其收益方式。</p>
-
-<ol>
- <li>針對自己的 App,點選 (1)「免費 (<strong>Free)</strong>」或「付費/應用程式內付款 (<strong>Paid / in-app)</strong>」分頁。</li>
- <li><img alt="Select either Free if the app is free to download and use, or Paid / In-app of the app has to be purchased or contains any in-app payment options" src="https://mdn.mozillademos.org/files/8213/Select%20monetization%20model.png" style="width: 978px; height: 162px;"></li>
-</ol>
-
-<div class="note">
-<p>如果你想先讓消費者免費下載 App,再透過 App 內部付費產品獲得收益,請點選「<strong>付費 / 應用程式內付款</strong>」。</p>
-</div>
-
-<div class="note">
-<p>只要你點選「付費/應用程式內付款」並完成提交程序之後,就無法再將該 App 改回免費提供。但原本就點選「免費」的 App 可隨時更改為付費形式。</p>
-</div>
-
-<h2 id="平台相容性">平台相容性</h2>
-
-<p>在選擇了免費\付費 App 之後,就該定義 App 所將賴以執行的作業系統與瀏覽器。</p>
-
-<ol>
- <li>選擇 App 相容的平台<br>
- <img alt="Select the OS and browser implementations the app is designed to work on." src="https://mdn.mozillademos.org/files/8217/Select%20compatible%20platforms.png" style="width: 980px; height: 337px;"></li>
-</ol>
-
-<p>各個平台所支援的收益方式如下。</p>
-
-<table class="standard-table" style="width: 60% ;">
- <thead>
- <tr>
- <th scope="row" style="width: 60% ;"> </th>
- <th scope="col" style="width: 20%;">Free</th>
- <th scope="col" style="width: 20%;">Paid /In-app</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <th scope="row">Firefox OS</th>
- <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td>
- <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td>
- </tr>
- <tr>
- <th scope="row">Firefox for Desktop</th>
- <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td>
- <td style="text-align: center;"> </td>
- </tr>
- <tr>
- <th scope="row">Firefox Mobile<br>
- (Firefox for Android on screen 7" or less)</th>
- <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td>
- <td style="text-align: center;"> </td>
- </tr>
- <tr>
- <th scope="row">Firefox Tablet<br>
- (Firefox for Android on screen over 7")</th>
- <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td>
- <td style="text-align: center;"> </td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="上傳_App">上傳 App</h2>
-
-<p>現在為 Firefox Marketplace 說明 App 類型:</p>
-
-<ol>
- <li>如果為托管\架設式 App,(1) 須先輸入 <a href="/en-US/docs/Web/Apps/Manifest">App 的 manifest 檔案</a>所在之伺服器位址 (須為完整的 URL),再點擊 (2)「<strong>驗證 (Validate)</strong>」。<br>
- <img alt="Enter the URL for the manifest of a Hosted App" src="https://mdn.mozillademos.org/files/8223/Identify%20Hosted%20App.png" style="width: 982px; height: 198px;"><br>
- <br>
- Marketplace 就會驗證你的 manifest 檔案。
- <ul>
- <li>驗證完畢,點擊「<strong>繼續 (Continue)</strong>」。</li>
- <li>若 manifest 檔案的驗證結果出現錯誤或警告,也會提供完整報告的連結。請看過報告之後修正錯誤,再重新提交 manifest 檔案進行驗證。<br>
- <img alt="If there are errors or warning as a result of validating the app's manifest a link is provided to a full report" src="https://mdn.mozillademos.org/files/8225/Validation%20results.png" style="width: 981px; height: 55px;"></li>
- </ul>
- </li>
- <li>如果為封裝式 App,則點擊「<strong>封裝</strong> (<strong>Packaged</strong>)」分頁並點選「<strong>選擇檔案... (Select a file...)</strong>」。接著就會開啟電腦的檔案瀏覽功能,找到 App 的 zip 檔案並上傳。<br>
- <img alt="Click Select a file to upload a packaged app's ZIP file" src="https://mdn.mozillademos.org/files/8211/Select%20Packaged%20App.png" style="width: 982px; height: 189px;"><br>
- Marketplace 現已可驗證 App 的封包。
- <ul>
- <li>驗證完畢,點擊「<strong>繼續 (Continue)</strong>」。</li>
- <li>若封包 (ZIP) 的驗證結果出現錯誤或警告,也會提供完整報告的連結。請看過報告之後修正錯誤,再重新封包檔案之後提交以利驗證。<br>
- <img alt="If there are errors or warning as a result of validating the app's manifest a link is provided to a full report" src="https://mdn.mozillademos.org/files/8225/Validation%20results.png" style="width: 981px; height: 55px;"></li>
- </ul>
- </li>
-</ol>
-
-<h2 id="了解_App_最低限度的_API_需求">了解 App 最低限度的 API 需求</h2>
-
-<p>在 App 驗證完成之後,就會出現「<strong>應用程式最低需求 (App Minimum Requirements)</strong>」頁面。一開始將顯示最常用的 API 需求清單。如果有找不到的 App 需求,則點擊 (1)「<strong>檢視全部 (View all)」</strong>,再 (2) 勾選所要的需求方塊。</p>
-
-<div class="note">
-<p>消費者的裝置若不支援本頁中所選的需求,則 Marketplace 將隱藏你的 App。</p>
-</div>
-
-<p><img alt="An automatically populated list of app requirements displays, click View all and add any that have been missed" src="https://mdn.mozillademos.org/files/8227/Select%20the%20apps%20minimum%20API%20requiements.png" style="width: 984px; height: 506px;"></p>
-
-<h2 id="下一步">下一步</h2>
-
-<p>接著可點擊「<strong>繼續 (Continue)</strong>」完成下個程序。</p>
-
-<p><img alt="When the details have been added to the page, clicking Continue moves onto the next step." src="https://mdn.mozillademos.org/files/8233/Continue%20option.png" style="width: 982px; height: 91px;"></p>
-
-<p>若要了解接下來的步驟,可繼續閱讀:<a href="/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">輸入 App 的細節</a>。</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html
deleted file mode 100644
index 47ef08f0d5..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: App 提交程序的下一步
-slug: Archive/Mozilla/Marketplace/Publishing/Submit/Next_steps
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Next_steps
----
-<div class="summary">
-<p>現在你已經上傳了自己的 App,也更新了詳細資訊。接著讓你先了解接下來將完成的步驟。</p>
-</div>
-
-<p><img alt="an interface screen on the Firefox Marketplace at the start of stage 4, where you are told you can enter some more information, starting with submitting a content rating for your app." src="https://mdn.mozillademos.org/files/6877/submit-app-stage4.png" style="width: 650px; height: 621px; display: block; margin: 0px auto;"></p>
-
-<p>如果你的 App 有其他語言版本,你可能想在繼續下一步之前,再補充 Marketplace 上的其他詳細資訊。這時可點擊「<strong>編輯資訊 (Edit Listing)</strong>」,或參閱《<a href="/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Edit other localizations</a>》進一步了解。不論如何,當然還是跟著流程一步步完成比較簡單。</p>
-
-<h2 id="下一步">下一步</h2>
-
-<p>這時可點擊「繼續 (<strong>Continue</strong>)」以進到下一步驟:《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Submission/Rating_Your_Content">取得 App 內容分級</a>》。</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html
deleted file mode 100644
index 8c00d35b23..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
----
-title: Firefox Marketplace 概述
-slug: Archive/Mozilla/Marketplace/Publishing/Submit/Overview
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Overview
----
-<div class="summary">
-<p>若要讓自己的 App 在 Firefox Marketplace 上架,就必須將 App 提交到 Marketplace 並通過審查。本頁將簡述 App 提交程序。另可參閱其他頁面以了解其他步驟。</p>
-</div>
-
-<div class="note">
-<p>若要進一步了解各個步驟,請逐一參閱各個步驟之連結,並從 Step 1 開始整個程序。而此頁下方亦提供步驟關係圖。</p>
-</div>
-
-<p>另可觀看提交程序影片:<a class="video-item" href="http://s.vid.ly/embeded.html?link=8k2n4w&amp;autoplay=false">http://vid.ly/8k2n4w</a></p>
-
-<h2 id="提交程序">提交程序</h2>
-
-<p>接著就開始將 App 提交到 Firefox Marketplace 之上:</p>
-
-<dl>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account">Step 1 - 登入自己的開發者帳戶</a></dt>
- <dd>
- <ul>
- <li>前往 <a class="external external-icon" href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心 (Developer Hub)</a>。</li>
- <li>點擊「提交您的應用程式至 Marketplace」 。<a class="button" href="https://marketplace.firefox.com/developers/submit/">Submit your app to the Marketplace </a></li>
- <li>登入自己的開發者帳戶:
- <ul>
- <li>如果你尚未註冊,須先註冊。</li>
- <li>如果你是第一次註冊,必須先同意〈Firefox Marketplace Developer Agreement〉。</li>
- </ul>
- </li>
- </ul>
- </dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Load_your_app">Step 2 - 上傳 App</a></dt>
- <dd>在<strong>「提交應用程式」</strong>頁面上:
- <ul>
- <li>設定免費\付費 App。</li>
- <li>選擇 App 對應的平台。</li>
- <li>選擇該 App 為托管\架設式 (Hosted) 或是封裝式 (Packaged):
- <ul>
- <li>若為托管\架設式 App,應在其 manifest 檔案中提供連結。</li>
- <li>若為封裝式 App,請上傳 <code>package.zip</code> 檔案,且在驗證完畢之後,確認是否符合最低 API 需求。</li>
- </ul>
- </li>
- <li>點擊<strong>「繼續」</strong>。</li>
- </ul>
-
- <div class="note">
- <p>注意:你可能會看到「manifest 檔案」之正體中文翻譯為「安裝資訊檔」。</p>
- </div>
- </dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">Step 3 - 輸入 App 的詳細資訊</a></dt>
- <dd>
- <p>在<strong>「編輯 App 詳細資訊」</strong>頁面:</p>
-
- <ul>
- <li>依自己需要而修改 App 網址。</li>
- <li>依自己需要而修改 App 相關說明 (manifest 檔案中所載)。</li>
- <li>選擇 1 到 2 種分類。</li>
- <li>提供隱私權政策。</li>
- <li>若有首頁與支援服務網站,亦請提供。</li>
- <li>提供支援服務的電子郵件位址。</li>
- <li>說明該 App 是否須 Flash 支援功能。</li>
- <li>上傳至少 1 張畫面截圖或影片。</li>
- <li>提供額外說明\註記給 App 審查人員看 (如果 App 需要登入細節,應另外說明其理由)。另請注意,只有在你提交新版本 App 時,才能修改這些註記。</li>
- <li>設定 App 是否在通過審查之後立刻上架。另請注意,只有在你提交新版本 App 時,才能修改此項設定。</li>
- <li>點擊<strong>「繼續」</strong>。</li>
- </ul>
- </dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Next_steps">Step 4 - 參閱「下一步」的細節</a></dt>
- <dd>在<strong>「下一步 (Next Steps)」</strong>頁面上點擊<strong>「繼續」</strong>。</dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Rating_Your_Content">Step 5 - 取得內容分級</a></dt>
- <dd>在<strong>「內容分級」</strong>頁面:
- <ul>
- <li>點擊<strong>「建立 IARC 分級憑證 (Create an IARC Ratings Certificate)」</strong>以取得新的分級,另於 IARC 網站上完成分級問卷。</li>
- <li>若要進入已取得之分級,須提供 <strong>Submission ID</strong> 與 <strong>Security Code</strong>。</li>
- </ul>
- </dd>
- <dt><a href="/en-US/Marketplace/Publishing/Pricing/Introduction">Step 6 - 更新 App 目前對應的販售國別與付款細節</a></dt>
- <dt style="margin-left: 40px;">Step 6a - 若為免費 App (且無 In-app purchases):</dt>
- <dd style="margin-left: 40px;">在左側選單中點擊<strong>「相容性 (Compatibility)」</strong>。依自己需要而更改 App 即將販售的國別。</dd>
- <dt style="margin-left: 40px;">Step 6b - 若為付費 App (或免費 App 但有 In-app payments):</dt>
- <dd style="margin-left: 40px;">在左側選單點擊<strong>「相容性與付款 (Compatibility &amp; Payments)」</strong>
- <ul>
- <li>設定你的付款服務供應商帳戶,如 Bango 與 Boku。</li>
- <li>設定 App 價格。確認 App 是否提供應用程式內付款的產品,並選擇即將販售 App 的國別。</li>
- <li>如果本為免費 App,須付費之後才能升級為較完整功能的「專業版」App,請先設定為免費 App。</li>
- </ul>
- </dd>
- <dt style="margin-left: 40px;">Step 6c - 若 App 包含應用程式內付款的產品:</dt>
- <dd style="margin-left: 40px;">
- <ul>
- <li>在左側選單點擊<strong>「應用程式內付款 (In-App Payments)」</strong>,取得 API 金鑰與安全金鑰。(請注意,只要為 App 添增 API 金鑰與安全金鑰之後,就必須為 App <a href="/en-US/Marketplace/Publishing/Updating_apps">提交更新檔</a>。可參閱 <a href="/en-US/Marketplace/Monetization/In-app_payments">In-app payments</a> 進一步了解)</li>
- <li>如果你使用 <a href="/en-US/Marketplace/Monetization/In-app_payments_section/fxPay_iap">fxPay</a>,則在左側選單點擊<strong>「In-App Products」</strong>,並逐一定義你的應用程式內付款產品。</li>
- </ul>
- </dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Define_your_team">Step 7 - 設定開發團隊成員 (選填)</a></dt>
- <dd>在左側選單點擊<strong>「團隊成員 (Team Members)」</strong>,並依自己的需要添增團隊成員資訊。</dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/View_your_listing">Step 8 - 檢視清單 (選填)</a></dt>
- <dd>在左側選單點擊<strong>「檢視清單 (View Listing)」</strong>,檢視自己在 Marketplace 上的 App 清單。</dd>
- <dt><a href="/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Step 9 - 編輯其他本地化清單 (選填)</a></dt>
- <dd>在左側選單點擊<strong>「編輯清單 (Edit Listing)」</strong>,針對 App 的本地化內容而修改 App 的網址、說明、分類,或新增 Firefox Marketplace 所支援任何語系的細節。</dd>
-</dl>
-
-<p>到此為止,你的 App 已進入審查程序。在左側選單點擊<strong>「狀態與版本 (Status and Version)」</strong>即可了解目前的審查進度。只要 App 提供應用程式內付款的產品,就必須加入 API 金鑰,且須在發佈 App 之前提交更新檔案。</p>
-
-<h2 id="流程圖">流程圖</h2>
-
-<h2 id="sect1"> </h2>
-
-<p><img alt=""></p>
-
-<h2 id="下一步?">下一步?</h2>
-
-<p>提交 App 完畢之後,你可能會需要:</p>
-
-<ul>
- <li><a href="https://marketplace.firefox.com/developers/support">取得支援服務</a></li>
- <li>取得下列資訊:
- <ul>
- <li><a href="https://hacks.mozilla.org/">「Hacks」部落格</a></li>
- <li><a href="https://www.youtube.com/user/mozhacks">YouTube 上的「Hacks」影片頻道</a></li>
- <li><a href="https://twitter.com/mozhacks">「Hacks」的 Twitter 意見</a></li>
- <li><a class="external external-icon" href="https://marketplace.firefox.com/developers/#newsletter-signup">Apps 與 Hacks 電子報</a></li>
- </ul>
- </li>
- <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Apps">獲得 Marketplace</a> 相關資訊</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html
deleted file mode 100644
index e46dbad938..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: 登入 Firefox Marketplace 上的開發者帳戶
-slug: >-
- Archive/Mozilla/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account
-translation_of: >-
- Archive/Mozilla/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account
----
-<div class="summary">
-<p>在將 App 提交到 Firefox Marketplace 之前,必須先申請開發者帳戶,登入之後再接受開發者協定。</p>
-</div>
-
-<h2 id="開啟開發者交流中心_(Developer_Hub)">開啟開發者交流中心 (Developer Hub)</h2>
-
-<ol>
- <li>以瀏覽器開啟 <a href="https://marketplace.firefox.com">Firefox Marketplace</a>。</li>
- <li>到 Firefox Marketplace 頁面底部點擊 (1) <strong>開發者交流中心</strong>。<img alt="Footer of the Firefox Marketplace home page showing the link to the Developer Hub" src="https://mdn.mozillademos.org/files/8125/Developer%20Hub%20from%20Marketplace.png" style="width: 983px; height: 272px;"></li>
-</ol>
-
-<h2 id="開始_App_提交程序">開始 App 提交程序</h2>
-
-<ol>
- <li>在交流中心的首頁上,找到 (1) <strong>提交您的應用程式至 Marketplace (Submit your app to the Marketplace</strong>)。<br>
- <img alt="Developer Hub home page showing the Submit your app to the Marketplace button" src="https://mdn.mozillademos.org/files/8127/Developer%20Hub%20home%20page%20submit%20button.png" style="width: 1011px; height: 366px;"></li>
- <li><a name="Step2">這時會出現「請登入」對話框,點擊 (1) <strong>登入 / 註冊 (Sign in / Sign up</strong>)。</a><br>
- <img alt="The Developer Hub please sign in dialog displayed over the Marketplace Developer Agreement" src="https://mdn.mozillademos.org/files/8129/Please%20sign%20in%20dialog.png" style="width: 988px; height: 248px;"></li>
- <li>接下來就看你是否註冊過 Mozilla Persona:
- <ul>
- <li>如果你沒用過 Persona,建議你註冊:<br>
- <img alt="The first dialog of the Create Persona process" src="https://mdn.mozillademos.org/files/8131/Create%20Persona.png" style="width: 740px; height: 398px;">你可到<a href="https://login.persona.org/about">這裡</a>進一步了解 Persona
- <ol>
- <li>輸入電子郵件位址並點擊「<strong>Next</strong>」。</li>
- <li>輸入新的密碼並再次確認,點擊「<strong>Done</strong>」。</li>
- <li>到你剛剛提供的電子郵件信箱收取確認信。此郵件內含「<strong>Confirm your account now</strong>」的確認連結,點擊此連結。</li>
- <li>在接下來的頁面 (跟上述 <a href="#Step2">step 2</a> 顯示的頁面相同) 上點擊「<strong>登入 / 註冊</strong>」。</li>
- </ol>
- </li>
- <li>如果你已經註冊過 Persona,就請確認你想登入為開發者帳戶的電子郵件位址。<br>
- <img alt="Sign in with an existing Persona identity" src="https://mdn.mozillademos.org/files/8133/signin%20with%20persona.png" style="width: 740px; height: 398px;"><br>
- 點擊「<strong>Sign in</strong>」。</li>
- </ul>
- </li>
- <li>就會看到開發者協定 (Developer Agreement)。<br>
- <img alt="Read the developer agreement, select the option to receive information by email if you wish and agree to the agreement" src="https://mdn.mozillademos.org/files/8139/Agreement.png">
- <ol>
- <li>請閱讀過開發者協定。</li>
- <li>同意往後接收 App Developer 新聞與問卷 (當然還是看你本身意願)</li>
- <li>點擊「同意並繼續 (<strong>Agree and Continue</strong>)」。</li>
- </ol>
- </li>
-</ol>
-
-<p>接著就能進到下一步:<a href="/en-US/Marketplace/Publishing/Submit/Load_your_app">上傳你的 App</a></p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html
deleted file mode 100644
index 57fb423374..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: 更新 App
-slug: Archive/Mozilla/Marketplace/Publishing/Updating_apps
-translation_of: Archive/Mozilla/Marketplace/Publishing/Updating_apps
----
-<div class="summary">
- <p>本篇文章將針對已發佈的 App (自行發佈或於 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 上發佈),說明相關更新步驟。</p>
-</div>
-<div class="note">
- <p><strong>注意:</strong>如果 App 已通過 Marketplace 審查,而開發者想更改 App 的名稱,就必須再次提交 App 並重新審查。</p>
-</div>
-<h2 id="更新托管式_(Hosted)_App">更新托管式 (Hosted) App</h2>
-<p>托管式 App 本質就是網頁,因此同樣依 Web 快取的常規而運作。但開發者亦可選用如 <a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">HTML5 AppCache</a> 的進階機制以加快啟動速度。先了解這二點之後,更新 App 所使用的一般資源大概就沒有需要特別注意的地方了。</p>
-<p>但 Open Web App 在處理 manifest 檔案時就不太一樣了。某些 manifest 的變動必須經過使用者許可。但根據 Web runtime 實作的不同,較難以確定是否會啟動更新作業。</p>
-<p>如果要能確實解決此問題,開發者可於 manifest 檔案中添加「<code>version</code>」欄位。只要檢查 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.getInstalled"><code>navigator.mozApps.getInstalled()</code></a> 函式所回傳的值,即可了解目前的版本。如果消費者並未安裝最新版本,則可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>navigator.mozApps.install()</code></a> 觸發更新作業。</p>
-<p>Web runtime 並不會使用 <code>version</code> 的值,所以開發者可使用任何喜歡的版號設定格式。</p>
-<p>另請注意,如果因更改 manifest 檔案而發生錯誤或毀損,則一旦將 manifest 檔案提交到 Firefox Marketplace 就會發現。嚴重錯誤將導致 App 無法出現在 Marketplace 之中。若是較不嚴重的錯誤,就可能會自動標定該 App 需要重新審查。</p>
-<h2 id="更新封裝式_(Packaged)_App">更新封裝式 (Packaged) App</h2>
-<p><a href="https://developer.mozilla.org/zh-TW/docs/Web/Apps/Developing/Packaged_apps/Packaged_apps">封裝式 App</a> 與托管式 App 的更新程序有所不同。在更新封裝式 App 時,開發者必須將 App 的新版 zip 檔案上傳至 Firefox Marketplace。更新過的 App 同樣要先通過審查,才能再發佈至 Marketplace 之上。如此將於 Firefox OS 手機上觸發更新作業。消費者亦可透過「Settings」App 要求進行更新。</p>
-<p>若想進一步了解封裝式 App 的更新程序,可參閱下一章節。</p>
-<h3 id="更新封裝式_App_相關細節">更新封裝式 App 相關細節</h3>
-<p>接著提供封裝式 App 更新時的相關細節。如果你打算建構 App 商城,就可能必須特別注意。</p>
-<ul>
- <li>將更新過的封裝式 App 發佈之後,亦應更新 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Packaged_apps#Packaged_apps_and_the_Firefox_OS_Marketplace">mini-manifest</a> 指向更新過的 ZIP 檔案 (請注意 mini-manifest 並非 App 的主要 manifest 檔案)。<code>ETag</code> 標頭亦將變更,且將觸發 Firefox OS 手機上的更新作業。</li>
- <li>搭載於手機上的 Firefox OS 將每天一次,檢查 App 是否更新。Firefox OS 將檢查 mini-manifest 的網址,再檢查 mini-manifest 之內 <code>package_path</code>  的網址。只要使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/App">App 物件</a>上的 <code>checkForUpdate()</code> 函式即可進行此作業。一旦 <code>ETag</code> 標頭改變,該函式隨即得知 App 更新過,並將檢查 ZIP 檔案是否變更。</li>
- <li>Firefox OS 將批次檢查 App 的更新檔案。</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/index.html
deleted file mode 100644
index 2ac47dd745..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/submission/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Submission
-slug: Archive/Mozilla/Marketplace/Submission
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Mozilla/Marketplace/Submission
----
-<p>Marketplace submission</p>
diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html
deleted file mode 100644
index efabe33036..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Marketplace 審查準則
-slug: Archive/Mozilla/Marketplace/Submission/Marketplace_review_criteria
-translation_of: Archive/Mozilla/Marketplace/Publishing/Marketplace_review_criteria
----
-<div class="summary">
- <p>開發者若要透過 Firefox Marketplace 發佈 App,則必須先滿足本篇文章的所有條件。相關條件是為了均衡 Firefox Marketplace 開發者與消費者的需求所設計。開發者需要公平、一致、審查嚴格但不嚴苛的平台,以安心作為 App 的開發基礎;消費者希望 App 安全無虞、可在裝置上順利運作、確實進行 App 本身所載明的功能。下方所列的 App 條件,就是為了兼顧相關需求所設計。</p>
-</div>
-<p>先列出 Mozilla 的 App 審查原則:</p>
-<ul>
- <li>審查原則將謹遵公平、一致、寬容的態度與方法。App 審查程序不應只是為 Marketplace 把關,也應該要有受信賴的窗口可提供反饋意見,協助開發者更成功。</li>
- <li>審查人員不是 QA 人員!審查期間會有人檢查 App 的 manifest 檔案,並以一般消費者的角度花個幾分鐘實際執行 App。</li>
- <li>如果 App 未能通過審查,我們也會讓開發者清楚知道所發現的問題,並提供重新開發 App 的步驟。若時間許可且有相關資源,審查人員也會提供說明文件的連結給開發者,並建議可修正之處。</li>
- <li>審查人員不會評斷 App 的外觀,而是單就 App 的運作情形進行審查。舉例來說,即使 App 是以橘色背景搭配紅色的文字,審查人員不會因為版面配色醜陋,而可能以「版面難以閱讀」的理由而退回該 App。</li>
- <li>我們同時為開發者提供懷疑的空間。如果審查人員不確定是否該退回 App,就會先向開發者提出相關問題。我們不會因為開發者無法控制的平台問題,而 (故意) 退回 App。但如果我們無法讓 App 運作,可能會先暫緩 App 通過核准。</li>
-</ul>
-<h2 id="安全性">安全性</h2>
-<p>可到這裡參閱 App 安全架構的相關細節:<a href="https://wiki.mozilla.org/Apps/Security">https://wiki.mozilla.org/Apps/Security</a></p>
-<ul>
- <li>App 的 manifest 檔案,必須與 App 本身的來源一致。</li>
- <li>App 的 manifest 檔案,需經由伺服器附註<code> application/x-web-app-manifest+json 的</code> <code>Content-Type</code> 標頭。</li>
- <li>只要是開發者尚未授權使用的內容,App 均不能以 iframe 或重新導向的方式將之載入。</li>
- <li>必須在 App 的 manifest 檔案中指定必要權限,並說明索取該權限的理由。</li>
-</ul>
-<h2 id="隱私性">隱私性</h2>
-<ul>
- <li>開發者在提交 App 進行審查時,必須一併提供隱私政策的連結,但 Mozilla 並未特別要求隱私政策的內容與格式。開發者可使用我們的<a href="https://github.com/flamsmark/privacy-policy-template">隱私政策範本</a>,另可參閱我們的<a href="https://developer.mozilla.org/en-US/docs/Privacy_policies">隱私政策制定指南</a>。</li>
-</ul>
-<h2 id="內容">內容</h2>
-<ul>
- <li>若 App 違反 Mozilla 下方〈內容指南〉章節中所述條文,我們都將退回 App。如果你認為自己的 App 正遊走〈內容指南〉的規範邊緣,甚或該 App 尚未達到可提交的階段,都可要求審查團隊進一步查明。Mozilla 希望能協助所有開發者順利完成自己的 App,而不是耗時開發 App 之後卻遭退回。</li>
- <li>從 2014 年 1 月開始,所有 App 均必須先取得國際年齡分級聯盟 (International Age Rating Coalition,IARC) 的內容分級。在提交 App 的過程中,Mozilla 將引導開發者完成簡短的問卷,接著就會立刻收到分級結果。可到<a href="https://developer.mozilla.org/en-US/Marketplace/Submission/Rating_Your_Content">這裡</a>了解分級程序的相關資訊。</li>
- <li>提交到 Firefox Marketplace 的截圖與說明,必須能確實代表/呈現此 App。</li>
- <li>在 App 的 manifest 檔案中,<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#locales"><code>locale</code> 的鍵值</a>必須對應 App 所支援的本地化語系。若開發者提供波蘭文的 <code>locale</code> 鍵值,當然消費者會認為該 App 也具備波蘭文的版本。</li>
-</ul>
-<h3 id="內容指南"><strong>內容指南</strong></h3>
-<p>Firefox Marketplace 將不會接受涉及下列內容的 App。且下方均為說明性的列表而非絕對的定義。Mozilla 亦將視情況而隨時更新。若 App 違反本內容指南所提及的任何內容,Mozilla 均有權立刻將該 App 自 Firefox Marketplace 中撤除。</p>
-<ul>
- <li>App 內容不得涉及任何色情圖素,亦不可帶有色情或暴力的暗示。</li>
- <li>App 內容不得侵犯他人權利,包含智慧財產權或其他私有/公眾的財產權。</li>
- <li>App 內容不得傷害 Mozilla 或使用者 (如電腦病毒、間諜軟體、惡意程式碼等)。</li>
- <li>App 內容不得涉及非法或倡導非法活動。</li>
- <li>App 內容不得欺騙、誤導、進行網路釣魚,或導致任何身分竊取之行為。</li>
- <li>App 內容不得倡導賭博行為。</li>
- <li>App 內容不得宣傳、廣告非法或受控制的產品與服務。</li>
- <li>App 內容不得利用、剝削兒童。</li>
- <li>App 內容不得貶損、威脅、恐嚇、鼓吹偏頗之行為,進而影響任何年齡、性別、種族、民族、國籍、性向、殘疾、宗教信仰、地理位置、受法律保障的個人或團體。亦不得鼓吹任何仇恨性的言論。</li>
- <li>App 內容不得誤導使用者進行購買行為。</li>
-</ul>
-<h2 id="功能性">功能性</h2>
-<ul>
- <li>審查人員必須能執行該 App 所宣稱的主要功能。外觀瑕疵或不影響整體功能的不便之處,均將由審查人員回報給開發者,但不會影響該 App 最後的審查結果。</li>
- <li>App 必不能影響系統的效能或穩定度。</li>
-</ul>
-<h2 id="使用性">使用性</h2>
-<ul>
- <li>開發者應根據目標平台,嘗試適當的最佳化 App 配置,進而避免某些錯誤,如:
- <ul>
- <li>提交為行動裝置用的 App,卻明顯是桌面裝置適用的網站。</li>
- <li>App 明顯無法延伸到完整畫面。例如 320x480 的 App 只會佔用平板電腦的上半角落,剩下的畫面都空白一片。這種 App 當然不適用!</li>
- </ul>
- </li>
- <li>App 必須有自己的瀏覽方式,而不需依賴瀏覽器工具列或實體的退回按鈕 (並非所有裝置都具備實體退回按鈕)。
- <ul>
- <li>舉例來說,審查人員可能瀏覽到 App 中的某一處卻無法倒回之前的頁面。但也不必因為瀏覽的方便性,而硬要附上完整的瀏覽器工具列。</li>
- <li>注意:現正針對舊版 Web 內容而開發 Gaia 的「wrapper」: <a href="https://github.com/mozilla-b2g/gaia/issues/2557">https://github.com/mozilla-b2g/gaia/issues/2557</a></li>
- </ul>
- </li>
- <li>如按鈕與連結等的瀏覽元素,均應可輕鬆點擊使用。</li>
-</ul>
-<h2 id="黑名單政策">黑名單政策</h2>
-<p>Mozilla 希望永遠都不會動用到黑名單機制,但仍保留將 App 撤除下架的權利。但只要發現已發佈的 App 違反安全性、隱私性、內容規範,或是嚴重影響系統/網路效能,我們將立刻撤除該 App。在將 App 列入黑名單之前,Mozilla 均將通知該 App 的開發者 (除非我們握有特定證據,否則會假設所有開發者都是善良好公民),並由 App 審查團隊提供完整協助,妥善溝通我們所發現的錯誤並儘力解決。以下特定情況絕對會將 App 列入黑名單並撤除下架:</p>
-<ul>
- <li>進行網路詐欺、網路釣魚</li>
- <li>散佈垃圾郵件、垃圾訊息</li>
- <li>在尚未更新內容分級 (即將建構此功能) 的情況下,私自將可愛小狗圖片 v1.0 換成暴力圖片 v1.0</li>
- <li>App 對極高比例的使用者造成嚴重不當後果 ─ 拖慢手機效能、導致手機重新開機、遺失使用者資料等。而使用者無法辨別是否由 App 所引起,且重新開機亦無法解決相關問題。</li>
- <li>App 用以進行網路攻擊,如分散式阻斷服務 (Distributed denial of service,DDOS)</li>
- <li>(insert movie plot risk here)</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html
deleted file mode 100644
index 3299054ee5..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: App 測試與疑難排解
-slug: Archive/Mozilla/Marketplace/Submission/Pre-submission_checklist
-translation_of: >-
- Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting
----
-<div class="summary">
- <p>本文將說明 App 測試與疑難排解時的注意事項。</p>
-</div>
-<h2 id="設定自己的測試環境">設定自己的測試環境</h2>
-<p>開發者可安裝多種工具,針對 Firefox OS/Open Web App 執行真正有效的測試。我們建議至少安裝下列工具:</p>
-<ul>
- <li>Firefox 桌面版。建議使用如 <a href="http://aurora.mozilla.org/">Aurora</a> 或 <a href="http://nightly.mozilla.org/">Nightly</a> 的預先發行版進行相關測試。</li>
- <li>Firefox 行動版,即 Firefox for Android。同樣建議使用如 <a href="http://aurora.mozilla.org/">Aurora</a> 或 <a href="http://nightly.mozilla.org/">Nightly</a> 的預先發行版進行相關測試。如果開發者手上沒有實體的 Android 裝置,亦可使用 <a href="http://developer.android.com/sdk/">Android emulator</a>。</li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS 應用程式管理員 (App Manager)</a>。此工具已內建於桌面版 Firefox 26 或更高版本中,提供多項有用工具 (如 App 除錯),並可將 App 安裝至模擬器與實體裝置上。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a>。如果開發者特別想在舊版 Firefox OS 上測試 App,即可使用此模擬器。針對 1.2 或更高版本,請使用「應用程式管理員 (App Manager)」。另可透過模擬器的控制面板,將 App 安裝至模擬器之中。</li>
-</ul>
-<p>最理想的情況,當然是能用實際裝置測試自己的 App。可參閱<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide">開發者手機指南</a>。</p>
-<h2 id="測試">測試</h2>
-<p>雖然 Open Web App 與網頁,均使用相同的技術和發佈方式,但因為 App 環境並不具備如 Chrome 瀏覽器的網址列或返回按鈕;且 Firefox OS 裝置也不像 Android 有實體的退回按鈕,所以使用者經驗是截然不同。以下步驟可讓開發者確保 App 達到絕佳的使用者經驗。</p>
-<ol>
- <li>安裝 App。確認 App 的圖示有出現在主畫面上,且 App 的名稱完整未遭截斷。</li>
- <li>啟動 App。確認能正確偵測、顯示螢幕尺寸與方向。</li>
- <li>確認消費者可馬上看到你的 App,而不是看到你的首頁。請記住,若消費者是從 Firefox Marketplace 上安裝你的 App,也就是購買了 App 的功能。不需再次傳送 App 功能的登錄頁面給消費者才對。理想的 App 應該讓消費者能第一眼就看到「Getting Started」或「Login」頁面。</li>
- <li>從頭到尾執行過 App 的主要功能。特別注意瀏覽作業的最末端,還有內容縮放時的問題。</li>
- <li>確認內容連結將導向 App 之外 (如連至其他網頁或 Twitter)。若要開啟新的視窗或框架,也要讓消費者能順利返回你的 App。</li>
- <li>在桌面版瀏覽器中,可使用<a href="https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_View">適應性設計 (Responsive Design) 檢視</a>模式檢查 App 在不同螢幕尺寸中的情況。建議檢查 320x480 ~ 1260x800 的解析度。</li>
-</ol>
-<h2 id="疑難排解">疑難排解</h2>
-<ul>
- <li>如果需要 App 開發方面的協助,則可參閱<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup">應用程式中心</a>上的豐富資訊,其中囊括了設計與開發技術、App 安裝作業、已支援的 API,還有更多。</li>
- <li><a href="https://developer.mozilla.org/en-US/Firefox_OS">Firefox OS 專區</a>提供 Firefox OS 平台的豐富資訊,包含 Firefox OS 的建構、開發其內預設的 App 等。</li>
- <li>若要了解提交作業,可參閱下個章節。</li>
- <li><a href="/en-US/docs/Mozilla/Marketplace/FAQ">Marketplace 常見問題</a>,將針對 Firefox Marketplace 上的多樣 App 發佈問題,提供相關答案。</li>
- <li>若有特殊問題需要解答,另可前往許多<a href="http://www.mozilla.org/about/forums/">相關討論區</a>,包含新聞群組、郵件群組、IRC 聊天室等等。另可參閱<a href="/en-US/Apps">應用程式中心</a>、<a href="/en-US/Firefox_OS">Firefox OS 專區</a>、<a href="/en-US/Marketplace">Marketplace 專區</a>等頁面,找到最高度相關的區塊!</li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html
deleted file mode 100644
index 0446f0240f..0000000000
--- a/files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: 取得 App 內容分級
-slug: Archive/Mozilla/Marketplace/Submission/Rating_Your_Content
-translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Rating_Your_Content
----
-<div class="summary">
-<p>Mozilla 與<a href="http://globalratings.com/">國際年齡分級聯盟 (International Age Rating Coalition,IARC)</a> 合作,將所有 App 均納入適用年齡分級規範。Mozilla 關心使用者,並認為使用者應能自行選擇適合自己的內容。凡 Firefox Marketplace 內的所有 App 均必須完成 IARC 分級。Mozilla 絕對在乎、愛護所有的 App,也必須要求所有 App 或遊戲完成內容分級。在 2014 年 5 月 15 日之後,只要是未完成內容分級的 App 均將強制從 Marketplace 下架。 而 IARC 另提供免費工具讓開發者進行內容分級。</p>
-</div>
-
-<h2 id="有關_IARC_分級工具">有關 IARC 分級工具</h2>
-
-<p>IARC 是由多間國際級的分級委員會合力運作,針對以數位方式發佈於全球的 App 與遊戲,提供了相關工具作為內容分級的基準。只要填寫簡單表格,就會立刻收到所有分級委員會所制定的分級規範。此份規範不僅可協助消費者了解 App 的內容,亦可讓開發者不需個別取得各國的內容分級,進而大幅縮減成本與不便。</p>
-
-<h2 id="所支援的國際分級系統">所支援的國際分級系統</h2>
-
-<p>透過單一的分級精靈功能,即可產生不同系統、國家、所在地區的內容分級。</p>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">分級系統</th>
- <th scope="col">支援國家</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><a href="http://portal.mj.gov.br/classificacao/data/Pages/MJ6BC270E8PTBRNN.htm">Classificação Indicativa </a></td>
- <td>Brazil</td>
- </tr>
- <tr>
- <td><a href="http://www.esrb.org/">ESRB</a></td>
- <td>Canada, Mexico, United States</td>
- </tr>
- <tr>
- <td><a href="http://www.pegi.info">PEGI</a></td>
- <td>Austria, Denmark, Hungary, Latvia, Norway, Slovenia, Belgium, Estonia, Iceland, Lithuania, Poland, Spain, Bulgaria, Finland, Ireland, Luxembourg, Portugal, Sweden, Cyprus, France, Israel, Malta, Romania, Switzerland, Czech Republic, Greece, Italy, Netherlands, Slovak Republic, United Kingdom</td>
- </tr>
- <tr>
- <td><a href="http://usk.de/">USK</a></td>
- <td>Germany</td>
- </tr>
- <tr>
- <td>通用</td>
- <td>其他所有國家適用</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="內容分級包含哪些項目?">內容分級包含哪些項目?</h2>
-
-<p>分級系統將提供消費者三種資訊:</p>
-
-<ul>
- <li>建議最低使用年齡 (The recommended minimum age) ─ 可能因各國民情風俗而有所差異。</li>
- <li>內容說明 (Content descriptors) ─ 該項資訊將說明 App 的所有內容,讓消費者了解自己關心的要點。其內可能包含暴力、酒/藥品使用參考、驚悚指數、實際/模擬博奕行為等資訊。</li>
- <li>互動要素 (Interactive Elements) ─ 該項資訊將提供 App 與消費者互動功能的相關細節,如分享個人資料、分享所在地理位置、應用程式內部付費機制、可下載的內容,或社交網路工具。</li>
-</ul>
-
-<p>分級程序僅需幾分鐘且完全免費,並已整合至 Firefox Marketplace 提交程序與開發者主控頁 (Developer Dashboard) 中。任何 App 均必須先完成分級,Mozilla 才能進行後續審查作業。消費者可在 App 說明頁面上看到 App 對應所在地區的分級,並取得自己想進一步了解的相關資訊。</p>
-
-<h2 id="讓自己的_App_取得內容分級">讓自己的 App 取得內容分級</h2>
-
-<p>IARC 即提供免費的遊戲分級工具,且大多數的 App 都能輕鬆又快速的完成分級。接著來看看分級程序。</p>
-
-<div class="note">
-<p><strong>注意:</strong>Mozilla 並不接受其他系統的分級認證。即使 App 已經完成其他系統的內容分級,開發者仍需要完成 IARC 認證程序。</p>
-</div>
-
-<ol>
- <li>登入 Firefox Marketplace 開發者網站。你必須以開發者的身分登入,才會看到分級工具。</li>
- <li>
- <p>在 App 提交程序期間,就會進入 IARC 分級工具:</p>
-
- <p><img alt="Demonstrates where in the app submission flow where ratings can be entered." src="https://mdn.mozillademos.org/files/6579/submission_flow.png" style="width: 200px; height: 239px; border-width: 1px; border-style: solid;"></p>
-
- <p>或可從開發者主控頁中找到分級工具:</p>
-
- <p><img alt="" src="https://mdn.mozillademos.org/files/6623/from_nav_bar.png" style="border-width: 1px; border-style: solid; height: 199px; width: 200px;"></p>
- </li>
- <li>
- <p>開始分級程序:</p>
-
- <p><img alt="" src="https://mdn.mozillademos.org/files/6583/start_the_rating_process.png" style="width: 600px; height: 242px; border-width: 1px; border-style: solid;"></p>
-
- <p>或可輸入現有分級的資訊:</p>
-
- <p><img alt="" src="https://mdn.mozillademos.org/files/6585/enter_existing_rating_info.png" style="width: 600px; height: 276px; border-width: 1px; border-style: solid;"></p>
- </li>
- <li>
- <p>填寫簡單的問卷:</p>
-
- <p><img alt="" src="https://mdn.mozillademos.org/files/6587/questions.png" style="width: 600px; border-width: 1px; border-style: solid; height: 725px;"></p>
- </li>
- <li>
- <p>添加 App 額外資訊:</p>
-
- <p><img alt="" src="https://mdn.mozillademos.org/files/6589/additional_info.png" style="width: 589px; height: 637px;"></p>
- </li>
- <li>
- <p>預覽並確認分級資訊:</p>
-
- <p><img alt="" src="https://mdn.mozillademos.org/files/6591/confirm_info.png" style="width: 400px; height: 865px; border-width: 1px; border-style: solid;"></p>
- </li>
- <li>
- <p>回到開發者主控頁就會看到分級資訊。接著就可準備上架!</p>
- </li>
-</ol>
-
-<div class="note">
-<p><strong>注意:</strong>開發者接著會收到電子郵件,內含分級認證與安全碼。請自行保留相關記錄備查。</p>
-</div>
-
-<h2 id="更多資訊">更多資訊</h2>
-
-<p>如果開發者對分級程序、分級問卷填寫方式,或對分級結果有任何疑問,請寄發電子郵件至 <a href="mailto:dev-questions@globalratings.com">dev-questions@globalratings.com</a> 向 IARC 團隊詢問。另可前往<a href="http://www.globalratings.com/">全球分級網站</a>獲得更多資訊。</p>
-
-<p>其他任何問題,可聯繫 Mozilla 的 App 審查團隊 <a href="https://groups.google.com/forum/#%21forum/mozilla.appreview" title="appreview@lists.mozilla.org">mozilla.appreview</a>。</p>
diff --git a/files/zh-tw/archive/mozilla/migrate_apps_from_internet_explorer_to_mozilla/index.html b/files/zh-tw/archive/mozilla/migrate_apps_from_internet_explorer_to_mozilla/index.html
deleted file mode 100644
index 857b8f22eb..0000000000
--- a/files/zh-tw/archive/mozilla/migrate_apps_from_internet_explorer_to_mozilla/index.html
+++ /dev/null
@@ -1,1070 +0,0 @@
----
-title: 轉換網頁程式:從 IE 到 Mozilla
-slug: Archive/Mozilla/Migrate_apps_from_Internet_Explorer_to_Mozilla
-tags:
- - 待翻譯
-translation_of: Archive/Mozilla/Migrate_apps_from_Internet_Explorer_to_Mozilla
----
-<p>這篇文章描述 IE 與 Mozilla 瀏覽器之間在程式上的差異,協助您將 IE-only 網頁改寫為 Mozilla 通用網頁。</p>
-<h3 id=".E7.B0.A1.E4.BB.8B" name=".E7.B0.A1.E4.BB.8B">簡介</h3>
-<p>Netscape 當初決定要製作 Mozilla 瀏覽器時刻意決定要支援 W3C 標準,因此 Mozilla 並不能完全回溯相容 Netscape Navigator 4.x 及 Microsoft Internet Explorer 的自有程式。舉例來說,Mozilla 不支援稍候會討論的 <code>&lt;layer&gt;</code> 標籤。此外,有些在 W3C 標準觀念尚未普及前製作的瀏覽器(如 Internet Explorer 4)內含各式怪異的花招,我們稱為怪癖(Quirk),而為了相容這些舊瀏覽器的模式便稱為 Quirks 模式。本文稍後也會討論 Mozilla 的 Quirks 模式。</p>
-<p>我也會闡述其他 Mozilla 支援、但還沒有 W3C 相關規格的非標準技術,如 XMLHttpRequest 及 Rich-text 編輯功能。此處指的 W3C 規格包括:</p>
-<ul>
- <li><a class="external" href="http://www.w3.org/TR/html401/">HTML 4.01</a> 和 <a class="external" href="http://www.w3.org/TR/xhtml1/">XHTML 1.0/1.1</a></li>
- <li>Cascade Style Sheets (CSS): <a class="external" href="http://www.w3.org/TR/REC-CSS1">CSS Level 1</a>、<a class="external" href="http://www.w3.org/TR/REC-CSS2">CSS Level 2</a> 及部分 <a class="external" href="http://www.w3.org/Style/CSS/current-work.html">CSS Level 3</a></li>
- <li>Document Object Model (DOM): <a class="external" href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/">DOM Level 1</a>、<a class="external" href="http://www.w3.org/DOM/DOMTR#dom2">DOM Level 2</a> 及部分 <a class="external" href="http://www.w3.org/DOM/DOMTR#dom3">DOM Level 3</a></li>
- <li>Mathematical Markup Language: <a class="external" href="http://www.w3.org/Math/">MathML Version 2.0</a></li>
- <li>Extensible Markup Language (XML): <a class="external" href="http://www.w3.org/TR/REC-xml">XML 1.0</a>、<a class="external" href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML</a>、<a class="external" href="http://www.w3.org/TR/xml-stylesheet/">Associating Style Sheets with XML Documents 1.0</a>、<a class="external" href="http://lists.w3.org/Archives/Public/www-xml-linking-comments/2001AprJ%20un/att-0074/01-NOTE-FIXptr-20010425.htm">Fragment Identifier for XML</a></li>
- <li>XSL Transformations: <a class="external" href="http://www.w3.org/TR/xslt">XSLT 1.0</a></li>
- <li>XML Path Language: <a class="external" href="http://www.w3.org/TR/xpath">XPath 1.0</a></li>
- <li>Resource Description Framework: <a class="external" href="http://www.w3.org/RDF/">RDF</a></li>
- <li>Simple Object Access Protocol: <a class="external" href="http://www.w3.org/TR/SOAP/%20">SOAP 1.1</a></li>
- <li>ECMA-262, revision 3 (JavaScript 1.5): <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA-262</a></li>
-</ul>
-<h3 id=".E8.B7.A8.E7.80.8F.E8.A6.BD.E5.99.A8.E7.A8.8B.E5.BC.8F.E5.B0.8F.E6.8A.80.E5.B7.A7" name=".E8.B7.A8.E7.80.8F.E8.A6.BD.E5.99.A8.E7.A8.8B.E5.BC.8F.E5.B0.8F.E6.8A.80.E5.B7.A7">跨瀏覽器程式小技巧</h3>
-<p>雖然這世上有所謂的 Web 標準,但不同的瀏覽器作法依然大不相同(即使是同一個瀏覽器,也可能因為作業系統差別而相異)。許多瀏覽器(如 Internet Explorer)在 W3C 規格形成前便提供某些功能,卻在標準制訂後忘了修改既有支援程式以符合標準。</p>
-<p>在我闡述 Mozilla 與 Internet Explorer 相異之處前,我會先講點小技巧,讓你的 Web 應用程式容易擴充、在未來略事修改便能相容新瀏覽器。</p>
-<p>不同瀏覽器下的某相同功能,往往也有不同的 API,所以在某些程式中你會發現不少 <code>if() else()</code> 程式區段,以便區分不同的瀏覽器。以下程式是寫給 Internet Explorer 用的:</p>
-<pre>. . .
-
-var elm;
-
-if (ns4)
- elm = document.layers["myID"];
-else if (ie4)
- elm = document.all["myID"]
-</pre>
-<p>上面這段程式稱不上容易擴充,如果你要多相容一種瀏覽器就得改寫一次。</p>
-<p>要排除遇到新的瀏覽器就要重寫網頁碼的情形,最容易的方法,就是把功能「抽」出來。與其使用一堆 <code>if() else()</code>,不如將常用的程式片段獨立為一個函式以提高效率。如此一來不但程式易讀,要支援更多瀏覽器也方便些:</p>
-<pre>var elm = getElmById("myID");
-
-function getElmById(aID){
- var element = null;
-
- if (isMozilla || isIE5)
- element = document.getElementById(aID)
- else if (isNetscape4)
- element = document.layers[aID]
- else if (isIE4)
- element = document.all[aID];
-
- return element;
-}
-</pre>
-<p>以上的程式仍得處理<strong>瀏覽器偵測</strong>的問題,通常這要靠 useragent 字串來解決,例如:</p>
-<pre>Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031016
-</pre>
-<p>雖然 useragent 字串提供瀏覽器的詳細資訊,但處理這段字串的程式碰上新瀏覽器時還是有可能出錯,此時便需修改程式。</p>
-<p>如果瀏覽器種類無關緊要(好比你已經把不支援的瀏覽器全都擋在門外了),那麼依據瀏覽器的能力來判別會比較好一點。通常可以用 JavaScript 來測試必備的功能,舉例來說,與其使用這樣的程式碼:</p>
-<pre>if (isMozilla || isIE5)
-</pre>
-<p>還不如換條路走:</p>
-<pre>if (document.getElementById)
-</pre>
-<p>這樣也可以讓其他支援此方法的瀏覽器(如 Opera 或 Safari)正常使用,無須更動程式。</p>
-<p>而依據 useragent 字串辨識瀏覽器也並非一無是處,例如在檢查瀏覽器是否符合最低需求或除錯時都有其用途。</p>
-<p>JavaScript也允許順序條件語言(inline conditional statements)以助於代碼的可讀性:</p>
-<p>JavaScript 也支援判斷句簡寫法,協助你將程式寫得更易讀:</p>
-<pre>var foo = (condition) ? conditionIsTrue : conditionIsFalse;
-</pre>
-<p>舉例而言,要取用某元素,可以寫為:</p>
-<pre>
-function getElement(aID){
- return (document.getElementById) ? document.getElementById(aID)
-  : document.all[aID];
-}
-</pre>
-<h3 id="Mozilla_.E8.88.87_Internet_Explorer_.E7.9A.84.E5.B7.AE.E5.88.A5" name="Mozilla_.E8.88.87_Internet_Explorer_.E7.9A.84.E5.B7.AE.E5.88.A5">Mozilla 與 Internet Explorer 的差別</h3>
-<p>首先,我要討論Mozilla和IE在表現HTML行為上的差別。</p>
-<h4 id=".E5.B7.A5.E5.85.B7.E6.8F.90.E7.A4.BA.EF.BC.88tooltips.EF.BC.89" name=".E5.B7.A5.E5.85.B7.E6.8F.90.E7.A4.BA.EF.BC.88tooltips.EF.BC.89">工具提示(tooltips)</h4>
-<p>老牌的瀏覽器透過在超連結和利用 <code>alt</code> 屬性值的 HTML 中導入工具提示來作為工具提示的內容。 最新的 W3C HTML specification 建立了 <code>title</code> 這個屬性,它包含超連結的詳細說明。 現代的瀏覽器會使用 <code>title</code> 的屬性來顯示工具提示,而且 mozilla 只支援 <code>title</code> 屬性,並不支援 <code>alt</code> 屬性。</p>
-<h4 id="HTML_.E7.89.B9.E6.AE.8A.E5.AD.97.E5.85.83.EF.BC.88entities.EF.BC.89" name="HTML_.E7.89.B9.E6.AE.8A.E5.AD.97.E5.85.83.EF.BC.88entities.EF.BC.89">HTML 特殊字元(entities)</h4>
-<p>HTML 標籤可以是一些在 <a class="external" href="http://www.w3.org/TR/REC-html40/sgml/entities.html">W3 standards body</a> 中已定義的字元。 您可以利用它們的數值或字符來代替字元。 舉例來說,您可以利用 <code>&amp;#160;</code> 或等同的字符參考資料 <code>&amp;nbsp;</code> 來代替空白鍵。</p>
-<p>有一些很老很老的瀏覽器,像是 Internet Explorer ,它們允許在特殊字元後面拿走<code>;</code>(分號(:</p>
-<pre>&amp;nbsp Foo
-&amp;nbsp&amp;nbsp Foo
-</pre>
-<p>Mozilla 依然會把 <code>&amp;nbsp</code> 當作空白鍵,既使這樣違反了 W3C 標準(W3C specification)。 但如果 <code>&amp;nbsp</code> 後面直接跟上一些其他的字元,瀏覽器就不會轉換它。 範例:</p>
-<pre>&amp;nbsp12345
-</pre>
-<p>這行程式碼在 Mozilla 中就不會被執行,因為它違反了 W3 標準(W3 standard)。請使用正確的格式(<code>&amp;nbsp;</code>)來避免瀏覽器與瀏覽器之間的差異性。</p>
-<h3 id="DOM_.E5.B7.AE.E7.95.B0" name="DOM_.E5.B7.AE.E7.95.B0">DOM 差異</h3>
-<p>文件物件模型(The Document Object Model,簡稱DOM)是一個裝載著文件元素的樹狀結構。你可以熟練地透過已成為 W3C 標準的 JavaScript API 來操作 DOM。然而在 W3C 標準建立以前, Netscape 4 和 IE 4 實作了一些類似的 API。 Mozilla 僅在使用 W3C 標準無法達成這些 API 的效果時才予以實作。</p>
-<h4 id=".E5.AD.98.E5.8F.96.E5.85.83.E7.B4.A0" name=".E5.AD.98.E5.8F.96.E5.85.83.E7.B4.A0">存取元素</h4>
-<p>如果你想以跨瀏覽器的方式來取得某個元素的參考,請使用<code>document.getelementById(aID)</code> 方法,這個方法不僅可以在 IE 5.0+ 和 Mozilla 上正常運作,它還是 DOM Level 1 的規範。</p>
-<p>Mozilla 不能夠以 <code>document.elementName</code> 或是元素名稱來存取元素,而 IE 可以(名為<em>全域名稱污染</em>)。 Mozilla 也不支援 Netscape 4 的 <code>document.layers</code> 和 IE 的 <code>document.all</code>。 而 <code>document.getElementById</code> 可以讓你取得某個元素,你還可以使用 <code>document.layers</code> 和 <code>document.all</code> 指定一個 tag 名稱來取得一串文件元素,像是全部的 <code>&lt;div&gt;</code> 元素。</p>
-<p>在 W3C DOM Level 1 的規範中,JavaScript 應透過 <code>getElementsByTagName()</code> 取得相同標籤(tag)下的元素。這個方法會傳回一個陣列,同時這個方法也可以呼叫 <code>document</code> 或其他節點下的元素。如果你想取得,你可以透過 <code>getElementsByTagName("*")</code> 來取得整個 DOM 下的元素陣列。</p>
-<p>就如下面表格一,DOM Level 1 經常被用來移動或者隱藏元素。當一個 HTML 元素可以隨意移動時,Netscape 4 所使用的 <code>&lt;layer&gt;</code> 標籤就不被 Mozilla 支援,你可以使用如同 Internet Explorer 的 <code>&lt;div&gt;</code>。根據 HTML 規範,這個標籤可以在 Mozilla 正常運行的。</p>
-<p> </p>
-<p>表格一 - 用於存取元素的方法</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>方法</th>
- <th>描述</th>
- </tr>
- <tr>
- <td>document.getElementById( aId )</td>
- <td>回傳文件中 ID 值為 aId 元素的。</td>
- </tr>
- <tr>
- <td>document.getElementsByTagName( aTagName )</td>
- <td>回傳文件中標籤名稱為 aTagName 的元素</td>
- </tr>
- </tbody>
-</table>
-<h4 id=".E7.B8.B1.E6.A9.AB_DOM" name=".E7.B8.B1.E6.A9.AB_DOM">縱橫 DOM</h4>
-<p>Mozilla 支援透過 JavaScript 存取 DOM 樹狀圖的 W3C DOM APIs (詳見表格二)。透過他可以讀取文件中的任何一個節點。Internet Explorer 也支援這個 APIs,同時也支援一些過時的方法,像是 <code>children</code>。</p>
-<p> </p>
-<p>表格二 - 縱橫 DOM 的方法</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>屬性/方法</th>
- <th>描述</th>
- </tr>
- <tr>
- <td>childNodes</td>
- <td>回傳一個該元素下所有子節點的陣列。</td>
- </tr>
- <tr>
- <td>firstChild</td>
- <td>回傳該元素下的第一個子節點。</td>
- </tr>
- <tr>
- <td>getAttribute( aAttributeName )</td>
- <td>回傳 aAttributeName 的值。</td>
- </tr>
- <tr>
- <td>hasAttribute( aAttributeName )</td>
- <td>回傳一個關於節點 aAttributeName 是否有屬性的布林值。</td>
- </tr>
- <tr>
- <td>hasChildNodes()</td>
- <td>回傳一個關於該節點下是否仍含有子節點的布林值。</td>
- </tr>
- <tr>
- <td>lastChild</td>
- <td>回傳該元素下的最後一個子節點。</td>
- </tr>
- <tr>
- <td>nextSibling</td>
- <td>回傳當下節點後的下一個節點。</td>
- </tr>
- <tr>
- <td>nodeName</td>
- <td>回傳一個當下節點名稱的字串。</td>
- </tr>
- <tr>
- <td>nodeType</td>
- <td>回傳該節點的類型。
- <table>
- <tbody>
- <tr>
- <th>數值</th>
- <th>描述</th>
- </tr>
- <tr>
- <td>1</td>
- <td>元素節點(Element Node)</td>
- </tr>
- <tr>
- <td>2</td>
- <td>屬性節點(Attribute Node)</td>
- </tr>
- <tr>
- <td>3</td>
- <td>文字節點(Text Node)</td>
- </tr>
- <tr>
- <td>4</td>
- <td>CDATA 段落節點(CDATA Section Node)</td>
- </tr>
- <tr>
- <td>5</td>
- <td>實體參引節點(Entity Reference Node)</td>
- </tr>
- <tr>
- <td>6</td>
- <td>實體節點(Entity Node)</td>
- </tr>
- <tr>
- <td>7</td>
- <td>處理指令(Processing Instruction Node)</td>
- </tr>
- <tr>
- <td>8</td>
- <td>註解節點(Comment Node)</td>
- </tr>
- <tr>
- <td>9</td>
- <td>文件節點(Document Node)</td>
- </tr>
- <tr>
- <td>10</td>
- <td>文件型別(Document Type Node)</td>
- </tr>
- <tr>
- <td>11</td>
- <td>文件片段(Document Fragment Node)</td>
- </tr>
- <tr>
- <td>12</td>
- <td>記法節點(Notation Node)</td>
- </tr>
- </tbody>
- </table>
- <pre class="eval">
- <em>*譯注:目前參照 <a class="external" href="http://xml.ascc.net/zh/utf-8/gloss.html">中央研究院計算中心曾士熊先生提供 SGML 名詞部份的翻譯內容</a>,其中並不包含「文件片段(Document Fragment Node)」</em>
-</pre>
- </td>
- </tr>
- <tr>
- <td>nodeValue</td>
- <td>回傳當下節點的值。當節點中存在文字或文段,如文字和註解節點時,此方法會回傳他們的字串值。當節點為屬性節點(attribute node)時,此方法將會回傳屬性值。除此之外,其餘的節點類型都會回傳 <code>null</code>。 </td>
- </tr>
- <tr>
- <td>ownerDocument</td>
- <td>回傳存在於當下節點的 <code>document</code> 物件。</td>
- </tr>
- <tr>
- <td>parentNode</td>
- <td>回傳當前節點的父節點。</td>
- </tr>
- <tr>
- <td>previousSibling</td>
- <td>回傳在該節點之前的節點。</td>
- </tr>
- <tr>
- <td>removeAttribute( aName )</td>
- <td>從當前的節點中移除 aName 屬性。</td>
- </tr>
- <tr>
- <td>setAttribute( aName, aValue )</td>
- <td>將 aName 屬性的值更改為 aValue。</td>
- </tr>
- </tbody>
-</table>
-<p>在 Internet Explorer 中有個不正常的怪癖(quirk),上表中有許多方法會略過自動產生的空白文字節點。請注意,在 Mozilla 中這些並不會略過,所以有時候你必須區別開這些節點。每一個節點都有它的 <code>nodeType</code> 屬性。舉例來說,元素節點的類型是 1;而文字節點是 3、註解節點是 8(詳見表格二 - nodeType)。最好區別開這些空白文字節點的辦法就是指處裡節點類型為 1 的子節點:</p>
-<pre>HTML部分:
- &lt;div id="foo"&gt;
- &lt;span&gt;Test&lt;/span&gt;
- &lt;/div&gt;
-
-JavaScript部分:
- var myDiv = document.getElementById("foo");
- var myChildren = myXMLDoc.childNodes;
- for (var i = 0; i &lt; myChildren.length; i++) {
- if (myChildren[i].nodeType == 1){
- // 元素節點
- }
- }
-</pre>
-<h4 id=".E5.85.A7.E5.AE.B9.E5.BB.BA.E7.AB.8B.E5.8F.8A.E8.99.95.E7.90.86" name=".E5.85.A7.E5.AE.B9.E5.BB.BA.E7.AB.8B.E5.8F.8A.E8.99.95.E7.90.86">內容建立及處理</h4>
-<p>Mozilla 支援一些比較舊的動態增加 DOM 內容的方法,像是</p>
-<pre class="eval"><code>document.write</code>, <code>document.open</code> 和 document.close。
-</pre>
-<p>Mozilla 也支援 Internet Explorer 的 <code>innerHTML</code> 方法,這個方法可以用來處理所有的節點。即使這個方法無效,Mozilla 還支援 <code>outerHTML</code> (這個方法包含該元素,它與 <code>innerHTML</code> 有一定的差異) 和 <code>innerText</code> (用於存取或修改節點的文字,功能與 Mozilla 裡的 <code>textContent</code> 差不多)。</p>
-<p>Internet Explorer 中存在著許多不規範也不被 Mozilla 的內容處理方法,包括回傳參數、插入數值和插入元素到節點中。像是 <code>getAdjacentElement</code>、 <code>insertAdjacentHTML</code> 等。表格三中敘述了 W3C 定義的內容處理方法,它們適用於所有的 DOM 節點。</p>
-<p> </p>
-<p>表格三 - Mozilla 使用的內容處理方法</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>方法</th>
- <th>描述</th>
- </tr>
- <tr>
- <td>appendChild( aNode )</td>
- <td>建立一個新的子節點,並回傳新子節點的參照值。</td>
- </tr>
- <tr>
- <td>cloneNode( aDeep )</td>
- <td>複製該節點並且傳回複製後的節點。如果 aDeep 的值「成立」,那個這個方法會把該節點下所有的子節點複製到新的節點。</td>
- </tr>
- <tr>
- <td>createElement( aTagName )</td>
- <td>建立並回傳一個沒有母節點(即上層沒有節點)的節點。該節點的名稱為 aTagName 。</td>
- </tr>
- <tr>
- <td>createTextNode( aTextValue )</td>
- <td>建立並回傳一個沒有母節點的文字節點,該節點值為 aTextValue。</td>
- </tr>
- <tr>
- <td>insertBefore( aNewNode, aChildNode )</td>
- <td>把 aNewNode 插入到 aChildNode 之前。(兩者都必須在當前的節點下)</td>
- </tr>
- <tr>
- <td>removeChild( aChildNode )</td>
- <td>移除 aChildNode 並回傳一個參照值。</td>
- </tr>
- <tr>
- <td>replaceChild( aNewNode, aChildNode )</td>
- <td>用 aChildNode 替代 aNewNode,並且回傳一個移除節點的參照值。</td>
- </tr>
- </tbody>
-</table>
-<h4 id=".E6.96.87.E4.BB.B6.E7.89.87.E6.AE.B5" name=".E6.96.87.E4.BB.B6.E7.89.87.E6.AE.B5">文件片段</h4>
-<p>因為效能的緣故,你可以在記憶體中創建 document 而非在現存的 DOM 上做動作。 DOM Level 1 Core 引入了 document fragments,這是一個輕量化的 document 且支援了部份既有可用的 document interface。舉例來說,他雖不支援 <code>getElementById</code> 但卻支援 <code>appendChild</code> 。你可以很容易的按照現存的的 document 來創建  document fragments 。</p>
-<p>在 Mozilla 中,要創造新的 document fragments 只需要使用 <code>document.createDocumentFragment()</code>,之後你便可取得一個空的 document fragment。</p>
-<p>Internet Explorer 在實做 document fragment 上並未按照標準的 W3C standard 。倘若你在 IE 中調用此功能,只能拿回一個 regular document 而非 document fragment。</p>
-<h3 id="JavaScript_.E5.B7.AE.E7.95.B0" name="JavaScript_.E5.B7.AE.E7.95.B0">JavaScript 差異</h3>
-<p>Mozilla 與 Internet Explorer 之間最大的差別就是 JavaScript。 這些問題通常存在於瀏覽器所公佈的 JavaScript APIs,像是 DOM hooks。 這兩種瀏覽器各自佔有一部份 JavaScript 核心的差異性;這些遇到的問題通常也和時間有關。</p>
-<h4 id="JavaScript_.E6.97.A5.E6.9C.9F.E5.B7.AE.E7.95.B0" name="JavaScript_.E6.97.A5.E6.9C.9F.E5.B7.AE.E7.95.B0">JavaScript 日期差異</h4>
-<p><code>getYear</code> 這個函數是唯一 <code>Date</code> 中的不同點。根據 ECMAScript specification(JavaScript 也遵循這個 specification),這個函式不是 Y2k-compliant 。假設在 2004 年時執行 <code>new Date().getYear()</code>,它會回傳 "104" 。根據 ECMAScript specification , <code>getYear</code> 會回傳年份減去 1900,原意是回傳 "98" 來表示 1998。<code>getYear</code> 在 ECMAScript Version 3 時被 <code>getFullYear()</code> 所代替。 當 mozilla 繼續遵循規範時,Internet Explorer 已經把 <code>getYear()</code> 修改成像 <code>getFullYear()</code> 的工作方式,使它成為Y2k-compliant。</p>
-<h4 id="JavaScript_.E5.9F.B7.E8.A1.8C.E5.B7.AE.E7.95.B0" name="JavaScript_.E5.9F.B7.E8.A1.8C.E5.B7.AE.E7.95.B0">JavaScript 執行差異</h4>
-<p>不同的瀏覽器使用不同的方法執行 JavaScript。舉例來說,下面的程式碼假設當 <code>script</code> 執行的時候 <code>div</code> 節點已經存在於 DOM:</p>
-<pre>...
-&lt;div id="foo"&gt;Loading...&lt;/div&gt;
-
-&lt;script&gt;
- document.getElementById("foo").innerHTML = "Done.";
-&lt;/script&gt;
-</pre>
-<p>無論如何,這都不能夠確定元素(elements)是否存在。要確認所有的元素都存在,您應該將 <code>onload</code> 事件擺在 <code>&lt;body&gt;</code> 標籤:</p>
-<pre>&lt;body onload="doFinish()"&gt;
-
-&lt;div id="foo"&gt;Loading...&lt;/div&gt;
-
-&lt;script&gt;
- function doFinish() {
- var element = document.getElementById("foo");
- element.innerHTML = "Done.";
- }
-&lt;/script&gt;
-...
-</pre>
-<p>像這樣與時間相關的問題也和硬體有關-較慢的系統可以顯示出較快的系統中隱藏的臭蟲(bugs)。 <code>window.open</code> 是一個具體的例子:  </p>
-<pre>&lt;script&gt;
- function doOpenWindow(){
- var myWindow = window.open("about:blank");
- myWindow.location.href = "http://www.ibm.com";
- }
-&lt;/script&gt;
-</pre>
-<p>這段程式碼的問題是: <code>window.open</code> 的時程是非同步的-它不會阻擋 JavaScript 的執行,直到所有的新視窗載入完畢。 因此,您應該在在載入新視窗完畢後才執行 <code>window.open</code> 。 您可以透過 在新視窗中利用 <code>onload</code> 執行 <code>window.opener</code> 來回到原本開啟新視窗的視窗(母體)。</p>
-<h4 id="JavaScript_.E7.94.A2.E7.94.9F.E4.B9.8B_HTML_.E5.B7.AE.E7.95.B0" name="JavaScript_.E7.94.A2.E7.94.9F.E4.B9.8B_HTML_.E5.B7.AE.E7.95.B0">JavaScript 產生之 HTML 差異</h4>
-<p>  在 JavaScript 中,我們可以透過 <code>document.write 來從字串產生 HTML 程式碼。但這有個值得注意的地方在於,要是你的內嵌碼中中含有</code> <code>&lt;script&gt;</code> tag 會發生什麼事?當你的目標頁面處於 &lt;a href="#html_modes"&gt;strict rendering mode&lt;/a&gt; 下時,它將會解析位於  <code>&lt;script&gt; 和 </code> <code>&lt;/script&gt;</code>  中的內容。讓我們看個例子:</p>
-<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
-...
-&lt;script&gt;
- document.write("&lt;script&gt;alert("Hello")&lt;/script&gt;")
-&lt;/script&gt;
-</pre>
-<p>  因為目前處於 strict mode 下,Mozilla 的解析器 (parser) 將會查看介於 <code>&lt;script&gt;</code> 和 <code>&lt;/script&gt;中的內容。這是因為在 strict mode 下解析器並不認得任何語言。但假如處在</code> quirks mode 下,解析器卻識得 JavaScript 語法。而事實上,Internet Explorer 總是處於 quirks mode 下 - 它並不真正之支援 XHTML。一個比較兩全其美的作法是將該內容分割成兩個部份:</p>
-<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
-...
-&lt;script&gt;
- document.write("&lt;script&gt;alert("Hello")&lt;/" + "script&gt;")
-&lt;/script&gt;
-</pre>
-<h4 id="JavaScript_.E9.99.A4.E9.8C.AF" name="JavaScript_.E9.99.A4.E9.8C.AF">JavaScript 除錯</h4>
-<p>Mozilla provides several ways to debug JavaScript-related issues found in applications created for Internet Explorer. The first tool is the built-in JavaScript console, shown in Figure 1, where errors and warnings are logged. You can access it in Mozilla by going to <strong>Tools -&gt; Web Development -&gt; JavaScript Console</strong>, or in Firefox (the standalone browser product from Mozilla) at <strong>Tools -&gt; JavaScript Console</strong>.</p>
-<p> </p>
-<p>Figure 1. JavaScript console</p>
-<div>
- <img alt="Javascript Console"></div>
-<p>The JavaScript console can show the full log list or just errors, warnings, and messages. The error message in Figure 1 says that at aol.com, line 95 tries to access an undefined variable called is_ns70. Clicking on the link will open Mozilla's internal view source window with the offending line highlighted.</p>
-<p>The console also allows you to evaluate JavaScript. To evaluate the entered JavaScript syntax, type in <code>1+1</code> into the input field and press <strong>Evaluate</strong>, as Figure 2 shows.</p>
-<p> </p>
-<p>Figure 2. JavaScript console evaluating</p>
-<div>
- <img alt="JavaScript Console evaluating"></div>
-<p>Mozilla's JavaScript engine has built-in support for debugging, and thus can provide powerful tools for JavaScript developers. Venkman, shown in Figure 3, is a powerful, cross-platform JavaScript debugger that integrates with Mozilla. It is usually bundled with Mozilla releases; you can find it at <strong>Tools -&gt; Web Development -&gt; JavaScript Debugger</strong>. For Firefox, the debugger isn't bundled; instead, you can download and install it from the <a class="external" href="http://www.mozilla.org/projects/venkman/">Venkman Project Page</a>. You can also find tutorials at the development page, located at the <a class="external" href="http://www.hacksrus.com/%7Eginda/venkman/">Venkman Development Page</a>.</p>
-<p> </p>
-<p>Figure 3. Mozilla's JavaScript debugger</p>
-<div>
- <img alt="Mozilla's JavaScript debugger"></div>
-<p>The JavaScript debugger can debug JavaScript running in the Mozilla browser window. It supports such standard debugging features as breakpoint management, call stack inspection, and variable/object inspection. All features are accessible through the user interface or through the debugger's interactive console. With the console, you al can execute arbitrary JavaScript in the same scope as the JavaScript currently being debugged.</p>
-<h3 id="CSS_.E5.B7.AE.E7.95.B0" name="CSS_.E5.B7.AE.E7.95.B0">CSS 差異</h3>
-<p>與 Internet Explorer 和其他的瀏覽器比較之下, Mozilla 擁有最強大的 Cascading Style Sheets 4(即 CSS) 支援, 包含大部份的 CSS1、CSS2 和部份的 CSS3 。</p>
-<p>對於下列敘述的問題, Mozilla 會在 JavaScript 控制台中發出警告。 如果您遇到了 CSS 的相關問題,請確認 JavaScript 控制台。</p>
-<h4 id="CSS_.E6.AA.94.E7.84.A1.E6.B3.95.E5.A5.97.E7.94.A8.EF.BC.9AMIME_Type_.E5.95.8F.E9.A1.8C" name="CSS_.E6.AA.94.E7.84.A1.E6.B3.95.E5.A5.97.E7.94.A8.EF.BC.9AMIME_Type_.E5.95.8F.E9.A1.8C">CSS 檔無法套用:MIME Type 問題</h4>
-<p>CSS 定義的相關檔沒有被讀取是 CSS 的相關問題中最常見的。 這通常是伺服器將 CSS 檔案送出了錯誤的 MIME Type 。 CSS 說明書 ( CSS specification ) 中提到:「 CSS 檔案應該被作為 text/css mimetype 。」 當網頁處於嚴格的規範模式 ( strict standards mode )時, Mozilla 將遵循並只載入以 text/css 作為 mimetype 的 CSS 檔案。 在 Internet Explorer 中,無論 mimetype 是甚麼, CSS 檔案都會被載入。 當網頁的 doctype ( document type,檔案類型 ) 在網頁的開頭被指定時,他們會進入嚴格的標準模式。 要解決這個問題,您可以修改正確的 mimetype 或移除 doctype。 我們會在下個章節中討論更多關於 doctype。</p>
-<h4 id="CSS_.E5.96.AE.E4.BD.8D" name="CSS_.E5.96.AE.E4.BD.8D">CSS 單位</h4>
-<p>有很多網路應用程式都不在他們的 CSS 中加上單位,尤其是利用 JavaScript 設定 CSS 的時候。 當網頁不執行在標準模式時,Mozilla 不會回報錯誤。 因為 Internet Explorer 並非真正的支援 XHTML ,它不在乎有沒有具體的單位描述。 如果網頁處於嚴格的標準描述下,並且沒有使用單位,那麼 Mozilla 將忽略以下的 style :</p>
-<pre class="eval">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "<span class="nowiki">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span>"&gt;
-&lt;html&gt;
- &lt;body&gt;
- // works in strict mode
- &lt;div style="width:40<span class="boldcode">px</span>; border:1px solid black;"&gt;
- Text
- &lt;/div&gt;
-
- // will fail in strict mode
- &lt;div style="width:40; border:1px solid black;"&gt;
- Text
- &lt;/div&gt;
- &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-<p>因為上述的範例中有一個規範的 doctype (檔案類型),所以網頁將執行在嚴格的標準模式下。 第一個 div 標籤會套用 40 像素的寬度,因為它有單位,但是第二個 div 標籤將不會套用指定的寬度,因此會套用預設的 100% 寬度。 透過 JavaScript 設定寬度將會得到一樣的結果。</p>
-<h4 id="JavaScript_.E5.8F.8A_CSS" name="JavaScript_.E5.8F.8A_CSS">JavaScript 及 CSS</h4>
-<p>既然 Mozilla 支援 CSS 標準,它同時也支援透過 JavaScript 設定 CSS 的 CSS DOM。 您可以透過 <code>style</code> 標籤讀取、移除和修改 CSS 的屬性規則:</p>
-<pre>&lt;div id="myDiv" border:1px solid black;"&gt;
- Text
-&lt;/div&gt;
-
-&lt;script&gt;
- var myElm = document.getElementById("myDiv");
- myElm.style.width = "40px";
-&lt;/script&gt;
-</pre>
-<p>您可以利用這種方式來延伸 css 的屬性。再次強調,如果網頁處於標準模式,您必須加上單位,否則 Mozilla 將忽略指令。 當您要查詢變數時,透過 <code>.style.width</code> 來達成,在 Mozilla 和 Internet Explorer 中,傳回的值中會包含單位,也就是傳回了一串字串。 您可以利用 <code>parseFloat("40px")</code> 將字串轉換成數值。</p>
-<h4 id="CSS_.E6.BA.A2.E5.87.BA.E9.83.A8.E5.88.86.EF.BC.88overflow.EF.BC.89.E5.B7.AE.E7.95.B0" name="CSS_.E6.BA.A2.E5.87.BA.E9.83.A8.E5.88.86.EF.BC.88overflow.EF.BC.89.E5.B7.AE.E7.95.B0">CSS 溢出部分(overflow)差異</h4>
-<p>CSS 增加了溢出(overflow)的概念,它允許您定義如何處理溢出部份;舉例來說,當 <code>div</code> 內容指定的高度高於 <code>div</code> 的高度時, CSS 規範(CSS standard)中定義了如果程式中沒有定義溢出的相關設定, <code>div</code> 的內容將會溢出。 但是 Internet Explorer 仍然不會遵循相關規範,並且會為了留住內容而擴張 <code>div</code> 的高度。 下面的例子表現了這個差異性:</p>
-<pre>&lt;div style="height:100px; border: 1px solid black;"&gt;
- &lt;div style="height:150px; border: 1px solid red; margin:10px;"&gt;
- a
- &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-<p>就像你在圖片四看到的,Mozilla 依照了 CSS 規範做出了判斷。 規範中提到了在這個情況下,因為 <code>div</code> 的內部高過它的母體,所以它溢出到了按鈕的地方。 如果您這麼愛 Internet Explorer 的行為,就不要在母體(即 <code>div</code> )加上 height 這個屬性。</p>
-<p> </p>
-<p>圖片四:div溢出部份</p>
-<div>
- <img alt="DIVdiv溢出部份"></div>
-<h4 id="hover.EF.BC.88.E6.BB.91.E9.BC.A0.E7.A7.BB.E4.B8.8A.E6.9F.90.E5.85.83.E7.B4.A0.EF.BC.89.E6.95.88.E6.9E.9C.E5.B7.AE.E7.95.B0" name="hover.EF.BC.88.E6.BB.91.E9.BC.A0.E7.A7.BB.E4.B8.8A.E6.9F.90.E5.85.83.E7.B4.A0.EF.BC.89.E6.95.88.E6.9E.9C.E5.B7.AE.E7.95.B0">hover(滑鼠移上某元素)效果差異</h4>
-<p>在一些網站上存在著 Internet Explorer 的非標準 CSS hover。 在 Mozilla 中,通常當滑鼠滑入的時候,利用改變 Text Style 來顯示它自己。 這是因為 <code>a:hover</code> ,在 Internet Explorer 中的 CSS 解析器對應 HTML 中錨點(anchor)的是 <code>&lt;a href="" /&gt;</code>,而不是 <code>&lt;a name="" /&gt;</code> 由於作者將錨點設定標記(anchor-setting markup)套用進了區塊,所以造成了文字的顏色變化:</p>
-<pre>CSS:
- a:hover {color:green;}
-
-HTML:
- &lt;a href="foo.com"&gt;This text should turn green when you hover over it.&lt;/a&gt;
-
- &lt;a name="anchor-name"&gt;
- This text should change color when hovered over, but doesn't in Internet Explorer.
- &lt;/a&gt;
-</pre>
-<p>Mozilla 遵循 CSS 說明書 ( CSS specification )並且在這個例子中會把顏色變成綠色。 您可以使用這兩種方法來讓 Mozilla 擁有像 Internet Explorer 的效果,並且當滑鼠滑入時不會改變文字的顏色:</p>
-<ul>
- <li>其一,您可以把 CSS 的規則改成 <code>a:link:hover {color:green;}</code>,這樣只會當該元素是超連結(有 <code>href</code> 屬性),才會改變顏色。</li>
- <li>其二,您可以修改標記,並在文字的開頭之前關閉已打開的 <code>&lt;a /&gt;</code> -採用這個方法的話,錨點(anchor)會是有效的。</li>
-</ul>
-<h3 id="Quirks_.E6.A8.A1.E5.BC.8F.E3.80.81.E6.A8.99.E6.BA.96.E6.A8.A1.E5.BC.8F" name="Quirks_.E6.A8.A1.E5.BC.8F.E3.80.81.E6.A8.99.E6.BA.96.E6.A8.A1.E5.BC.8F">Quirks 模式、標準模式</h3>
-<p>  在舊的瀏覽器上 (如 Internet Explorer 4),網頁可能會被以一種被不完全正確的方式渲染網頁。當 Mozilla 企圖成為一個和標準相容的瀏覽器的情況下,它採取三種不同方式來處理在這些不太合標準的渲染方式下開發的既有網頁。你可以在  Mozilla 瀏覽器中的  <strong>View -&gt; Page Info</strong> (或 Ctrl-i) 下查看目前處於哪種模式。而該採取怎樣的模式則取決於該頁面的 doctype。</p>
-<p>  Doctypes (document type declarations) 看起來是:</p>
-<p><code>&lt;!DOCTYPE HTML PUBLIC <span style="color: blue;">"-//W3C//DTD HTML 4.01 Transitional//EN"</span> <span style="color: green;">"<span class="nowiki">http://www.w3.org/TR/html4/loose.dtd</span>"</span>&gt;</code></p>
-<p>  藍色部份稱為 public identifier,而綠色部份是為 system identifier (以 URI 方式描述)。</p>
-<h4 id=".E6.A8.99.E6.BA.96.E6.A8.A1.E5.BC.8F" name=".E6.A8.99.E6.BA.96.E6.A8.A1.E5.BC.8F">Standards Mode (標準模式)</h4>
-<p>  Standards mode 是最嚴謹的渲染模式。它將完全按照 W3C HTML 以及 CSS specification 來處理,並且不支援任何除此之外的寫法。 Mozilla 會在以下情形中使用此模式:</p>
-<ul>
- <li>當頁面是以 <code>text/xml</code> mimetype 或任何其他 XML 及 XHTML mimetype 發送時</li>
- <li>採用除了 IBM doctype 之外的任何 "DOCTYPE HTML SYSTEM" doctype (例如 <code>&lt;!DOCTYPE HTML SYSTEM "<span class="nowiki">http://www.w3.org/TR/REC-html40/strict.dtd</span>"&gt;</code>)</li>
- <li>不知名的 doctypes 或沒有提供 DTDs 的 doctypes </li>
-</ul>
-<h4 id=".E8.BF.91.E4.B9.8E.E6.A8.99.E6.BA.96.E6.A8.A1.E5.BC.8F" name=".E8.BF.91.E4.B9.8E.E6.A8.99.E6.BA.96.E6.A8.A1.E5.BC.8F">Almost Standards mode (近乎標準模式)</h4>
-<p>Mozilla introduced almost standards mode for one reason: a section in the CSS 2 specification breaks designs based on a precise layout of small images in table cells. Instead of forming one image to the user, each small image ends up with a gap next to it. The old IBM homepage shown in Figure 5 offers an example.</p>
-<p> </p>
-<p>Figure 5. Image gap</p>
-<div>
- <img alt="Image Gap"></div>
-<p>Almost standards mode behaves almost exactly as standards mode, except when it comes to an image gap issue. The issue occurs often on standards-compliant pages and causes them to display incorrectly.</p>
-<p>Mozilla uses almost standards mode for the following conditions:</p>
-<ul>
- <li>For any "loose" doctype (for example, <code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&gt;</code>, <code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<span class="nowiki">http://www.w3.org/TR/html4/loose.dtd</span>"&gt;</code>)</li>
- <li>For the IBM doctype (<code>&lt;!DOCTYPE html SYSTEM "<span class="nowiki">http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd</span>"&gt;</code>)</li>
-</ul>
-<p>You can read more about the <a href="/zh_tw/Images,_Tables,_and_Mysterious_Gaps" title="zh_tw/Images,_Tables,_and_Mysterious_Gaps">image gap issue</a>.</p>
-<h4 id="Quirks_.E6.A8.A1.E5.BC.8F" name="Quirks_.E6.A8.A1.E5.BC.8F">Quirks Mode (怪癖模式)</h4>
-<p>  以目前情況來說,網路上充斥著許多不完全符合標準規範的網頁。這些不合標準的網頁,卻和有著 bug 的瀏覽器配合的很好。舉例來說,在以前Netscape 居市場領導地位時,便有著 bug。而 IE 誕生石,為了能和那些網頁相容,「繼承」了這些 bug 們。對於在之後才來到市場上的新一代瀏覽器們來說,這些 bug 們便被稱為 <strong>quirks</strong> (但他們大都能向下相容於這些網頁)。值得注意的是,因為這些既有網頁並非按照規格設計,所以新瀏覽器在渲染時得花上更多時間。不幸的是,絕大多數的網頁都有賴新瀏覽器們以此模式渲染。</p>
-<p>Mozilla 會在以下情況使用此模式:</p>
-<ul>
- <li>當網頁不指明 doctype 時</li>
- <li>當 doctypes 沒有 system identifier 時(例如 <code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;</code>)</li>
-</ul>
-<p>For further reading, check out: <a class="external" href="http://www.mozilla.org/docs/web-developer/quirks/quirklist.html">List of Quirks</a> and <a class="external" href="http://www.mozilla.org/docs/web-developer/quirks/doctypes.html">List of Doctypes and What Modes They Cause</a>.</p>
-<p> </p>
-<h3 id=".E4.BA.8B.E4.BB.B6.E5.B7.AE.E7.95.B0" name=".E4.BA.8B.E4.BB.B6.E5.B7.AE.E7.95.B0">事件差異</h3>
-<p>  Mozilla 和 Internet Explorer 在 events 的這個部分幾乎是完全不同的。 Mozilla event model 遵循 W3C 以及 Netscape model。但在 Internet Explorer 中,倘若一個 function 被 event 所觸發,那麼我們可以用 <code>window.event </code>來接觸到該 event 物件 - 這必須被特別指定為參數傳入。Mozilla 則會直接傳遞該 <code>event</code> 物件到 event handlers 中。一個跨瀏覽器 (cross-browser) 的 event handling 範例如下:</p>
-<pre>&lt;div onclick="handleEvent(event)"&gt;Click me!&lt;/div&gt;
-
-&lt;script&gt;
- function handleEvent(aEvent) {
- // if aEvent is null, means the Internet Explorer event model,
- // so get window.event.
- var myEvent = aEvent ? aEvent : window.event;
- }
-&lt;/script&gt;
-</pre>
-<p>  此外,event 物件產生時所擁有的 properties 和 functions 在 Mozilla and Internet Explorer 也可能有不同的名字。請參見 Table 4。</p>
-<p> </p>
-<p>Table 4. Mozilla/Internet Explorer event property 比較表</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Internet Explorer Name</th>
- <th>Mozilla Name</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>altKey</td>
- <td>altKey</td>
- <td>Boolean property that returns whether the alt key was pressed during the event.</td>
- </tr>
- <tr>
- <td>cancelBubble</td>
- <td>stopPropagation()</td>
- <td>Used to stop the event from bubbling farther up the tree.</td>
- </tr>
- <tr>
- <td>clientX</td>
- <td>clientX</td>
- <td>The X coordinate of the event, in relation to the client.</td>
- </tr>
- <tr>
- <td>clientY</td>
- <td>clientY</td>
- <td>The Y coordinate of the event, in relation to the client.</td>
- </tr>
- <tr>
- <td>ctrlKey</td>
- <td>ctrlKey</td>
- <td>Boolean property that returns whether the Ctrl key was pressed during the event.</td>
- </tr>
- <tr>
- <td>fromElement</td>
- <td>relatedTarget</td>
- <td>For mouse events, this is the element from which the mouse moved away.</td>
- </tr>
- <tr>
- <td>keyCode</td>
- <td>keyCode</td>
- <td>For keyboard events, this is a number representing the key that was pressed. It is 0 for mouse events.</td>
- </tr>
- <tr>
- <td>returnValue</td>
- <td>preventDefault()</td>
- <td>Used to prevent the event's default action from occurring.</td>
- </tr>
- <tr>
- <td>screenX</td>
- <td>screenX</td>
- <td>The X coordinate of the event, in relation to the screen.</td>
- </tr>
- <tr>
- <td>screenX</td>
- <td>screenY</td>
- <td>The Y coordinate of the event, in relation to the screen.</td>
- </tr>
- <tr>
- <td>shiftKey</td>
- <td>shiftKey</td>
- <td>Boolean property that returns whether the Shift key was pressed during the event.</td>
- </tr>
- <tr>
- <td>srcElement</td>
- <td>target</td>
- <td>The element to which the event was originally dispatched.</td>
- </tr>
- <tr>
- <td>toElement</td>
- <td>currentTarget</td>
- <td>For mouse events, this is the element to which the mouse moved.</td>
- </tr>
- <tr>
- <td>type</td>
- <td>type</td>
- <td>Returns the name of the event.</td>
- </tr>
- </tbody>
-</table>
-<h4 id=".E5.8A.A0.E4.B8.8A.E4.BA.8B.E4.BB.B6.E6.8E.A7.E5.88.B6.E5.BC.8F" name=".E5.8A.A0.E4.B8.8A.E4.BA.8B.E4.BB.B6.E6.8E.A7.E5.88.B6.E5.BC.8F">加上事件控制式</h4>
-<p>  Mozilla 支援了兩種方式來附加 events 到 JavaScript 中。第一種是所有瀏覽器都支援的,直接將 event properties 連接到物件上。下例為設定一個 <code>click</code> event handler,一個 function reference 被設定到物件的 <code>onclick</code> property:</p>
-<pre>&lt;div id="myDiv"&gt;Click me!&lt;/div&gt;
-
-&lt;script&gt;
- function handleEvent(aEvent) {
- // if aEvent is null, means the Internet Explorer event model,
- // so get window.event.
- var myEvent = aEvent ? aEvent : window.event;
- }
-
- function onPageLoad(){
- document.getElementById("myDiv").onclick = handleEvent;
- }
-&lt;/script&gt;
-</pre>
-<p>Mozilla fully supports the W3C standard way of attaching listeners to DOM nodes. You use the <code>addEventListener()</code> and <code>removeEventListener()</code> methods, and have the benefit of being able to set multiple listeners for the same event type. Both methods require three parameters: the event type, a function reference, and a boolean denoting whether the listener should catch events in their capture phase. If the boolean is set to false, it will only catch bubbling events. W3C events have three phases: capturing, at target, and bubbling. Every event object has an <code>eventPhase</code> attribute indicating the phase numerically (0 indexed). Every time you trigger an event, the event starts at the DOM's outermost element, the element at the top of the DOM tree. It then walks the DOM using the most direct route toward the target, which is the capturing phase. When the event reaches the target, the event is in the target phase.  After arriving at the target, it walks up the DOM tree back to the outermost node; this is <strong>bubbling</strong>. Internet Explorer's event model only has the bubbling phase; therefore, setting the third parameter to false results in Internet Explorer-like behavior:</p>
-<pre>&lt;div id="myDiv"&gt;Click me!&lt;/div&gt;
-
-&lt;script&gt;
-
- function handleEvent(aEvent) {
- // if aEvent is null, it is the Internet Explorer event model,
- // so get window.event.
- var myEvent = aEvent ? aEvent : window.event;
- }
-
- function onPageLoad() {
- var element = document.getElementById("myDiv");
- element.addEventListener("click", handleEvent, false);
- }
-&lt;/script&gt;
-</pre>
-<p>One advantage of <code>addEventListener()</code> and <code>removeEventListener()</code> over setting properties is that you can have multiple event listeners for the same event, each calling another function. Thus, to remove an event listener requires all three parameters be the same as the ones you use when adding the listener.</p>
-<p>Mozilla does not support Internet Explorer's method of converting &lt;script&gt; tags into event handlers, which extends &lt;script&gt; with <code>for</code> and <code>event</code> attributes (see Table 5). It also does not support the <code>attachEvent</code> and <code>detachEvent</code> methods. Instead, you should use the <code>addEventListener</code> and <code>removeEventListener</code> methods. Internet Explorer does not support the W3C events specification.</p>
-<p> </p>
-<p>Table 5. Event method differences between Mozilla and Internet Explorer</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Internet Explorer Method</th>
- <th>Mozilla Method</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>attachEvent(aEventType, aFunctionReference)</td>
- <td>addEventListener(aEventType, aFunctionReference, aUseCapture)</td>
- <td>Adds an event listener to a DOM element.</td>
- </tr>
- <tr>
- <td>detachEvent(aEventType, aFunctionReference)</td>
- <td>removeEventListener(aEventType, aFunctionReference, aUseCapture)</td>
- <td>Removes an event listener to a DOM element.</td>
- </tr>
- </tbody>
-</table>
-<h3 id="Rich-text_.E7.B7.A8.E8.BC.AF" name="Rich-text_.E7.B7.A8.E8.BC.AF">Rich-text 編輯</h3>
-<p>While Mozilla prides itself with being the most W3C standards-compliant browser, it does support nonstandard functionality, such as <code>innerHTML</code> and rich text editing, if no W3C equivalent exists.</p>
-<p>Mozilla 1.3 introduced an implementation of Internet Explorer's designMode feature, which turns an HTML document into a rich text editor field. Once turned into the editor, commands can run on the document through the <code>execCommand</code> command. Mozilla does not support Internet Explorer's <code>contentEditable</code> attribute for making any widget editable. You can use an iframe to add a rich text editor.</p>
-<h4 id="Rich-text_.E5.B7.AE.E7.95.B0" name="Rich-text_.E5.B7.AE.E7.95.B0">Rich-text 差異</h4>
-<p>Mozilla supports the W3C standard of accessing iframe's document object through <code>IFrameElm.contentDocument</code>, while Internet Explorer requires you to access it through <code>document.frames{{ mediawiki.external('\"name\"') }}</code> and then access the resulting <code>document</code>:</p>
-<pre>function getIFrameDocument(aID) {
- var rv = null;
-
- // if contentDocument exists, W3C compliant (Mozilla)
- if (document.getElementById(aID).contentDocument){
- rv = document.getElementById(aID).contentDocument;
- } else {
- // IE
- rv = document.frames[aID].document;
- }
- return rv;
-}
-</pre>
-<p>Another difference between Mozilla and Internet Explorer is the HTML that the rich text editor creates. Mozilla defaults to using CSS for the generated markup. However, Mozilla allows you to toggle between HTML and CSS mode using the <code>useCSS</code> execCommand and toggling it between true and false. Internet Explorer always uses HTML markup.</p>
-<pre>Mozilla (CSS):
- &lt;span style="color: blue;"&gt;Big Blue&lt;/span&gt;
-
-Mozilla (HTML):
- &lt;font color="blue"&gt;Big Blue&lt;/font&gt;
-
-Internet Explorer:
- &lt;FONT color="blue"&gt;Big Blue&lt;/FONT&gt;
-</pre>
-<p>Below is a list of commands that execCommand in Mozilla supports:</p>
-<p> </p>
-<p>Table 6. Rich text editing commands</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Command Name</th>
- <th>Description</th>
- <th>Argument</th>
- </tr>
- <tr>
- <td>bold</td>
- <td>Toggles the selection's bold attribute.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>createlink</td>
- <td>Generates an HTML link from the selected text.</td>
- <td>The URL to use for the link</td>
- </tr>
- <tr>
- <td>delete</td>
- <td>Deletes the selection.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>fontname</td>
- <td>Changes the font used in the selected text.</td>
- <td>The font name to use (Arial, for example)</td>
- </tr>
- <tr>
- <td>fontsize</td>
- <td>Changes the font size used in the selected text.</td>
- <td>The font size to use</td>
- </tr>
- <tr>
- <td>fontcolor</td>
- <td>Changes the font color used in the selected text.</td>
- <td>The color to use</td>
- </tr>
- <tr>
- <td>indent</td>
- <td>Indents the block where the caret is.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>inserthorizontalrule</td>
- <td>Inserts an &lt;hr&gt; element at the cursor's position.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>insertimage</td>
- <td>Inserts an image at the cursor's position.</td>
- <td>URL of the image to use</td>
- </tr>
- <tr>
- <td>insertorderedlist</td>
- <td>Inserts an ordered list (&lt;ol&gt;) element at the cursor's position.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>insertunorderedlist</td>
- <td>Inserts an unordered list (&lt;ul&gt;) element at the cursor's position.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>italic</td>
- <td>Toggles the selection's italicize attribute.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>justifycenter</td>
- <td>Centers the content at the current line.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>justifyleft</td>
- <td>Justifies the content at the current line to the left.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>justifyright</td>
- <td>Justifies the content at the current line to the right.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>outdent</td>
- <td>Outdents the block where the caret is.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>redo</td>
- <td>Redoes the previous undo command.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>removeformat</td>
- <td>Removes all formatting from the selection.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>selectall</td>
- <td>Selects everything in the rich text editor.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>strikethrough</td>
- <td>Toggles the strikethrough of the selected text.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>subscript</td>
- <td>Converts the current selection into subscript.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>superscript</td>
- <td>Converts the current selection into superscript.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>underline</td>
- <td>Toggles the underline of the selected text.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>undo</td>
- <td>Undoes the last executed command.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>unlink</td>
- <td>Removes all link information from the selection.</td>
- <td>---</td>
- </tr>
- <tr>
- <td>useCSS</td>
- <td>Toggles the usage of CSS in the generated markup.</td>
- <td>Boolean value</td>
- </tr>
- </tbody>
-</table>
-<p>For more information, visit <a href="/zh_tw/Rich-Text_Editing_in_Mozilla" title="zh_tw/Rich-Text_Editing_in_Mozilla">Rich-Text Editing in Mozilla</a>.</p>
-<p> </p>
-<h3 id="XML_.E5.B7.AE.E7.95.B0" name="XML_.E5.B7.AE.E7.95.B0">XML 差異</h3>
-<p>Mozilla 對 XML 與相關的技術有很完整的支援,如對 XSLT 與 Web services 等。它也支援一些 Internet Explorer 非標準的延伸,例如 XMLHttpRequest。</p>
-<p>Mozilla has strong support for XML and XML-related technologies, such as XSLT and Web services. It also supports some nonstandard Internet Explorer extensions, such as XMLHttpRequest.</p>
-<h4 id=".E6.8E.8C.E6.8E.A7_XML" name=".E6.8E.8C.E6.8E.A7_XML">掌控 XML</h4>
-<p>如同對於標準 HTML,對於可各方面控制 XML 檔的 DOM 的支援,Mozilla 也是依 W3C 所定的 XML DOM 規格。Mozilla 與 Internet Explorer 在 XML DOM 上的不同處大多在於 Internet Explorer 非標準的處理方式。一個常見的差異是對空白字元節點的處理。 通常在建立 XML 時,XML 節點間會有空白。 Internet Explorer 用 <code>XMLNode.childNodes[]</code> 時不會包括這些空白節點,但在 Mozilla 上這些節點會在 array 裡。</p>
-<p>  在 HTML 標準上,Mozilla 支援了 W3C XML DOM 規範,但  Internet Explorer 則否。Mozilla 和 Internet Explorer 的一些差異很大部分是肇始於後者的非規範行為。在這其中,最廣為人知的應該就是如何去處理 white space text nodes 了。通常在 XML 文檔產生後,會在 XML node 間包含著一些 white space。當你使用 <code>XMLNode.childNodes[] 時,Internet Explorer 將不會包含這些</code> white space nodes。但在 Mozilla 中,這些 nodes 仍會出現在 array 中。</p>
-<pre>XML:
- &lt;?xml version="1.0"?&gt;
- &lt;myXMLdoc xmlns:myns="http://myfoo.com"&gt;
- &lt;myns:foo&gt;bar&lt;/myns:foo&gt;
- &lt;/myXMLdoc&gt;
-
-JavaScript:
- var myXMLDoc = getXMLDocument().documentElement;
- alert(myXMLDoc.childNodes.length);
-</pre>
-<p>The first line of JavaScript 的第一行載入 XML 檔並用 <code>documentElement</code> 來存取它的 root 元素 (<code>myXMLDoc</code>)。第二行顯示子節點的數目。根據 W3C 規格,接在一起的空白與換行字符組成一個文字節點。在 Mozilla 上 <code>myXMLdoc</code> 節點有三個子:一個有換行字符與兩個空白的文字節點、<code>myns:foo</code> 節點、與另一個有換行字符的文字節點。Internet Explorer 並不遵循這個,因此上面的程式碼會顯示 "1",表示只有 <code>myns:foo</code> 節點。所以,如要迴走子節點並掠過文字節點,要分辨這些節點。</p>
-<p>The first line of JavaScript loads the XML document and accesses the root element (<code>myXMLDoc</code>) by retrieving the <code>documentElement</code>. The second line simply alerts the number of child nodes. Per the W3C specification, the white spaces and new lines merge into one text node if they follow each other. For Mozilla, the <code>myXMLdoc</code> node has three children: a text node containing a new line and two spaces; the <code>myns:foo</code> node; and another text node with a new line. Internet Explorer, however, does not abide by this and will return "1" for the above code, namely only the <code>myns:foo</code> node. Therefore, to walk the child nodes and disregard text nodes, you must distinguish such nodes.</p>
-<p>As mentioned earlier, every node has a <code>nodeType</code> attribute representing the node type. For example, an element node has type 1, while a document node has type 9. To disregard text nodes, you must check for types 3 (text node) and 8 (comment node).</p>
-<pre>XML:
- &lt;?xml version="1.0"?&gt;
- &lt;myXMLdoc xmlns:myns="http://myfoo.com"&gt;
- &lt;myns:foo&gt;bar&lt;/myns:foo&gt;
- &lt;/myXMLdoc&gt;
-
-JavaScript:
- var myXMLDoc = getXMLDocument().documentElement;
- var myChildren = myXMLDoc.childNodes;
-
- for (var run = 0; run &lt; myChildren.length; run++){
- if ( (myChildren[run].nodeType != 3) &amp;&amp;
- myChildren[run].nodeType != 8) ){
- // not a text or comment node
- }
- }
-</pre>
-<h4 id="XML_data_islands" name="XML_data_islands">XML data islands</h4>
-<p>Internet Explorer has a nonstandard feature called <em>XML data islands</em>, which allow you to embed XML inside an HTML document using the nonstandard HTML tag <code>&lt;xml&gt;</code>. Mozilla does not support XML data islands and handles them as unknown HTML tags. You can achieve the same functionality using XHTML; however, because Internet Explorer's support for XHTML is weak, this is usually not an option.</p>
-<p>One cross-browser solution is to use DOM parsers, which parse a string that contains a serialized XML document and generates the document for the parsed XML. Mozilla uses the <code>DOMParser</code> class, which takes the serialized string and creates an XML document out of it. In Internet Explorer, you can achieve the same functionality using ActiveX. A new <code>Microsoft.XMLDOM</code> generates and has a <code>loadXML</code> method that can take in a string and generate a document from it. The following code shows you how:</p>
-<pre>IE XML data island:
- ..
- &lt;xml id="xmldataisland"&gt;
- &lt;foo&gt;bar&lt;/foo&gt;
- &lt;/xml&gt;
-
-Cross-browser solution:
- var xmlString = "&lt;xml id=\"xmldataisland\"&gt;&lt;foo&gt;bar&lt;/foo&gt;&lt;/xml&gt;";
-
- var myDocument;
-
- if (document.implementation.createDocument){
- // Mozilla, create a new DOMParser
- var parser = new DOMParser();
- myDocument = parser.parseFromString(xmlString, "text/xml");
- } else if (window.ActiveXObject){
- // Internet Explorer, create a new XML document using ActiveX
- // and use loadXML as a DOM parser.
- myDocument = new ActiveXObject("Microsoft.XMLDOM")
- myDocument.async="false";
-
- myDocument.loadXML(xmlString);
- }
-</pre>
-<h4 id="XML_HTTP_request" name="XML_HTTP_request">XML HTTP request</h4>
-<p>Internet Explorer allows you to send and retrieve XML files using MSXML's <code>XMLHTTP</code> class, which is instantiated through ActiveX using <code>new ActiveXObject("Msxml2.XMLHTTP")</code> or <code>new ActiveXObject("Microsoft.XMLHTTP")</code>. Since there is no standard method of doing this, Mozilla provides the same functionality in the global JavaScript <code>XMLHttpRequest</code> object. The object generates asynchronous requests by default.</p>
-<p>After instantiating the object using <code>new XMLHttpRequest()</code>, you can use the <code>open</code> method to specify what type of request (GET or POST) you use, which file you load, and if it is asynchronous or not. If the call is asynchronous, then give the <code>onload</code> member a function reference, which is called once the request has completed.</p>
-<p>Synchronous request:</p>
-<pre class="eval"> var myXMLHTTPRequest = new XMLHttpRequest();
- myXMLHTTPRequest.open("GET", "data.xml", false);
-
- myXMLHTTPRequest.send(null);
-
- var myXMLDocument = myXMLHTTPRequest.responseXML;
-</pre>
-<p>Asynchronous request:</p>
-<pre class="eval"> var myXMLHTTPRequest;
-
- function <span class="boldcode">xmlLoaded</span>() {
- var myXMLDocument = myXMLHTTPRequest.responseXML;
- }
-
- function loadXML(){
- myXMLHTTPRequest = new XMLHttpRequest();
-
- myXMLHTTPRequest.open("GET", "data.xml", true);
-
- myXMLHTTPRequest.onload = <span class="boldcode">xmlLoaded</span>;
-
- myXMLHTTPRequest.send(null);
- }
-</pre>
-<p>Table 7 features a list of available methods and properties for Mozilla's <code>XMLHttpRequest</code>.</p>
-<p> </p>
-<p>Table 7. XMLHttpRequest methods and properties</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Name</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>void abort()</td>
- <td>Stops the request if it is still running.</td>
- </tr>
- <tr>
- <td>string getAllResponseHeaders()</td>
- <td>Returns all response headers as one string.</td>
- </tr>
- <tr>
- <td>string getResponseHeader(string headerName)</td>
- <td>Returns the value of the specified header.</td>
- </tr>
- <tr>
- <td>functionRef onerror</td>
- <td>If set, the references function will be called whenever an error occurs during the request.</td>
- </tr>
- <tr>
- <td>functionRef onload</td>
- <td>If set, the references function will be called when the request completes successfully and the response has been received. Use when an asynchronous request is used.</td>
- </tr>
- <tr>
- <td>void open (string HTTP_Method, string URL)<br>
- <br>
- void open (string HTTP_Method, string URL, boolean async, string userName, string password)</td>
- <td>Initializes the request for the specified URL, using either GET or POST as the HTTP method. To send the request, call the <code>send()</code> method after initialization. If <code>async</code> is false, the request is synchronous, else it defaults to asynchronous. Optionally, you can specify a username and password for the given URL needed.</td>
- </tr>
- <tr>
- <td>int readyState</td>
- <td>State of the request. Possible values:
- <table>
- <tbody>
- <tr>
- <th>Value</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>0</td>
- <td>UNINITIALIZED - open() has not been called yet.</td>
- </tr>
- <tr>
- <td>1</td>
- <td>LOADING - send() has not been called yet.</td>
- </tr>
- <tr>
- <td>2</td>
- <td>LOADED - send() has been called, headers and status are available.</td>
- </tr>
- <tr>
- <td>3</td>
- <td>INTERACTIVE - Downloading, responseText holds the partial data.</td>
- </tr>
- <tr>
- <td>4</td>
- <td>COMPLETED - Finished with all operations.</td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td>string responseText</td>
- <td>String containing the response.</td>
- </tr>
- <tr>
- <td>DOMDocument responseXML</td>
- <td>DOM Document containing the response.</td>
- </tr>
- <tr>
- <td>void send(variant body)</td>
- <td>Initiates the request. If <code>body</code> is defined, it issent as the body of the POST request. <code>body</code> can be an XML document or a string serialized XML document.</td>
- </tr>
- <tr>
- <td>void setRequestHeader (string headerName, string headerValue)</td>
- <td>Sets an HTTP request header for use in the HTTP request. Has to be called after <code>open()</code> is called.</td>
- </tr>
- <tr>
- <td>string status</td>
- <td>The status code of the HTTP response.</td>
- </tr>
- </tbody>
-</table>
-<h4 id="XSLT_.E5.B7.AE.E7.95.B0" name="XSLT_.E5.B7.AE.E7.95.B0">XSLT 差異</h4>
-<p>Mozilla supports XSL Transformations (XSLT) 1.0. It also allows JavaScript to perform XSLT transformations and allows running XPATH on a document.</p>
-<p>Mozilla requires that you send the XML and XSLT file holding the stylesheet with an XML mimetype (<code>text/xml</code> or <code>application/xml</code>). This is the most common reason why XSLT won't run in Mozilla but will in Internet Explorer. Mozilla is strict in that way.</p>
-<p>Internet Explorer 5.0 and 5.5 supported XSLT's working draft, which is substantially different than the final 1.0 recommendation. The easiest way to distinguish what version an XSLT file was written against is to look at the namespace. The namespace for the 1.0 recommendation is <code><span class="nowiki">http://www.w3.org/1999/XSL/Transform</span></code>, while the working draft's namespace is <code><span class="nowiki">http://www.w3.org/TR/WD-xsl</span></code>. Internet Explorer 6 supports the working draft for backwards compatibility, but Mozilla does not support the working draft, only the final recommendation.</p>
-<p>If XSLT requires you to distinguish the browser, you can query the "xsl:vendor" system property. Mozilla's XSLT engine will report itself as "Transformiix" and Internet Explorer will return "Microsoft."</p>
-<pre>&lt;xsl:if test="system-property('xsl:vendor') = 'Transformiix'"&gt;
- &lt;!-- Mozilla specific markup --&gt;
-&lt;/xsl:if&gt;
-&lt;xsl:if test="system-property('xsl:vendor') = 'Microsoft'"&gt;
- &lt;!-- Internet Explorer specific markup --&gt;
-&lt;/xsl:if&gt;
-</pre>
-<p>Mozilla also provides JavaScript interfaces for XSLT, allowing a Web site to complete XSLT transformations in memory. You can do this using the global <code>XSLTProcessor</code> JavaScript object. <code>XSLTProcessor</code> requires you to load the XML and XSLT files, because it needs their DOM documents. The XSLT document, imported by the <code>XSLTProcessor</code>, allows you to manipulate XSLT parameters. <code>XSLTProcessor</code> can generate a standalone document using <code>transformToDocument()</code>, or it can create a document fragment using <code>transformToFragment()</code>, which you can easily append into another DOM document. Below is an example:</p>
-<p> </p>
-<pre>var xslStylesheet;
-var xsltProcessor = new XSLTProcessor();
-
-// load the xslt file, example1.xsl
-var myXMLHTTPRequest = new XMLHttpRequest();
-myXMLHTTPRequest.open("GET", "example1.xsl", false);
-myXMLHTTPRequest.send(null);
-
-// get the XML document and import it
-xslStylesheet = myXMLHTTPRequest.responseXML;
-
-xsltProcessor.importStylesheet(xslStylesheet);
-
-// load the xml file, example1.xml
-myXMLHTTPRequest = new XMLHttpRequest();
-myXMLHTTPRequest.open("GET", "example1.xml", false);
-myXMLHTTPRequest.send(null);
-
-var xmlSource = myXMLHTTPRequest.responseXML;
-
-var resultDocument = xsltProcessor.transformToDocument(xmlSource);
-</pre>
-<p>After creating an <code>XSLTProcessor</code>, you load the XSLT file using <code>XMLHttpRequest</code>. The XMLHttpRequest's <code>responseXML</code> member contains the XML document of the XSLT file, which is passed to <code>importStylesheet</code>. You then use the <code>XMLHttpRequest</code> again to load the source XML document that must be transformed; that document is then passed to the <code>transformToDocument</code> method of <code>XSLTProcessor</code>. Table 8 features a list of <code>XSLTProcessor</code> methods.</p>
-<p> </p>
-<p>Table 8. XSLTProcessor methods</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Method</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>void importStylesheet(Node styleSheet)</td>
- <td>Imports the XSLT stylesheet. The <code>styleSheet</code> argument is the root node of an XSLT stylesheet's DOM document.</td>
- </tr>
- <tr>
- <td>DocumentFragment transformToFragment(Node source, Document owner)</td>
- <td>Transforms the Node <code>source</code> by applying the stylesheet imported using the <code>importStylesheet</code> method and generates a DocumentFragment. <code>owner</code> specifies what DOM document the DocumentFragment should belong to, making it appendable to that DOM document.</td>
- </tr>
- <tr>
- <td>Document transformToDocument(Node source)</td>
- <td>Transforms the Node <code>source</code> by applying the stylesheet imported using the <code>importStylesheet</code> method and returns a standalone DOM document.</td>
- </tr>
- <tr>
- <td>void setParameter(String namespaceURI, String localName, Variant value)</td>
- <td>Sets a parameter in the imported XSLT stylesheet.</td>
- </tr>
- <tr>
- <td>Variant getParameter(String namespaceURI, String localName)</td>
- <td>Gets the value of a parameter in the imported XSLT stylesheet.</td>
- </tr>
- <tr>
- <td>void removeParameter(String namespaceURI, String localName)</td>
- <td>Removes all set parameters from the imported XSLT stylesheet and makes them default to the XSLT-defined defaults.</td>
- </tr>
- <tr>
- <td>void clearParameters()</td>
- <td>Removes all set parameters and sets them to defaults specified in the XSLT stylesheet.</td>
- </tr>
- <tr>
- <td>void reset()</td>
- <td>Removes all parameters and stylesheets.</td>
- </tr>
- </tbody>
-</table>
-<div class="originaldocinfo">
- <h3 id=".E5.8E.9F.E6.96.87.E8.B3.87.E8.A8.8A" name=".E5.8E.9F.E6.96.87.E8.B3.87.E8.A8.8A">原文資訊</h3>
- <ul>
- <li>原文作者:Doron Rosenberg, IBM Corporation</li>
- <li>公開日期: 26 Jul 2005</li>
- <li>原文連結: <a class="external" href="http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/" rel="freelink">http://www-128.ibm.com/developerwork...y/wa-ie2mozgd/</a></li>
- </ul>
-</div>
diff --git a/files/zh-tw/archive/mozilla/persona/branding/index.html b/files/zh-tw/archive/mozilla/persona/branding/index.html
deleted file mode 100644
index 2793b91f88..0000000000
--- a/files/zh-tw/archive/mozilla/persona/branding/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: 品牌資源
-slug: Archive/Mozilla/Persona/branding
-translation_of: Archive/Mozilla/Persona/User_interface_guidelines
----
-<h2 id="「使用_Persona_登入」按鈕">「使用 Persona 登入」按鈕</h2>
-<h3 id="圖片">圖片</h3>
-<p>登入按鈕有三種版本、三種配色:</p>
-<table>
- <thead>
- <tr>
- <th scope="row"> </th>
- <th scope="col">Sign in with your Email</th>
- <th scope="col">Sign in with Persona</th>
- <th scope="col">Sign in</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <th scope="row">黑</th>
- <td><img alt="" src="/files/3955/email_sign_in_black.png" style="width: 202px; height: 25px;"></td>
- <td><img alt="" src="/files/3961/persona_sign_in_black.png" style="width: 185px; height: 25px;"></td>
- <td><img alt="" src="/files/3967/plain_sign_in_black.png" style="width: 95px; height: 25px;"></td>
- </tr>
- <tr>
- <th scope="row">藍</th>
- <td><img alt="" src="/files/3957/email_sign_in_blue.png" style="width: 202px; height: 25px;"></td>
- <td><img alt="" src="/files/3963/persona_sign_in_blue.png" style="width: 185px; height: 25px;"></td>
- <td><img alt="" src="/files/3969/plain_sign_in_blue.png" style="width: 95px; height: 25px;"></td>
- </tr>
- <tr>
- <th scope="row">紅</th>
- <td><img alt="" src="/files/3959/email_sign_in_red.png" style="width: 202px; height: 25px;"></td>
- <td><img alt="" src="/files/3965/persona_sign_in_red.png" style="width: 185px; height: 25px;"></td>
- <td><img alt="" src="/files/3971/plain_sign_in_red.png" style="width: 95px; height: 25px;"></td>
- </tr>
- </tbody>
-</table>
-<h3 id="CSS-Based">CSS-Based</h3>
-<p><a href="http://sawyerhollenshead.com/" title="http://sawyerhollenshead.com/">Sawyer Hollenshead</a> 製作了一套精美的 CSS-based 按鈕。<a href="/files/3973/persona-css-buttons.zip" title="/files/3973/persona-css-buttons.zip">下載 (.zip)</a></p>
-<h2 id="更多資訊">更多資訊</h2>
-<p>您可在 <a href="http://people.mozilla.org/~smartell/persona/" title="http://people.mozilla.org/~smartell/persona/">Sean Martell's style primer</a> 找到更多有關 Persona 視覺設計的資訊。</p>
diff --git a/files/zh-tw/archive/mozilla/persona/index.html b/files/zh-tw/archive/mozilla/persona/index.html
deleted file mode 100644
index 5345e5f569..0000000000
--- a/files/zh-tw/archive/mozilla/persona/index.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-title: Persona
-slug: Archive/Mozilla/Persona
-translation_of: Archive/Mozilla/Persona
----
-<div class="callout-box">
-<p><strong>       保持聯繫或取得協助!</strong></p>
-
-<p>追蹤 <a class="external" dir="ltr" href="mailto:jcchimjj@yahoo.com?subject=%E9%80%A3%E7%B5%90" id="jcchimjj@yahoo.com" lang="Zh-TW" name="huawei 大叔" title="http://identity.mozilla.com/">我們的 </a><a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">blog</a>,加入 <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">我們的郵件列表</a>,或在 <a class="link-https" href="https://wiki.mozilla.org/IRC" title="https://wiki.mozilla.org/IRC">IRC</a> 裡頭 <a class="link-irc" href="irc://irc.mozilla.org/identity" title="irc://irc.mozilla.org/identity">#identity</a> 頻道找到我們。</p>
-</div>
-
-<p><a class="link-https" href="https://login.persona.org/" title="https://www.mozilla.org/zh-TW/persona/">Mozilla Persona</a> 是一個跨瀏覽器的 Web 登入驗證系統,其基本設計精神為易於使用以及易於實作。它可以使用於當今<a href="/zh-TW/docs/persona/Browser_compatibility" title="/zh-TW/docs/persona/Browser_compatibility">主要的各種瀏覽器</a>環境中,你可以<a href="/zh-TW/docs/Persona/Quick_Setup">現在就開始使用</a>它。</p>
-
-<p>為什麼你應該套用 Persona 在你的網站上呢?</p>
-
-<ol>
- <li><strong>Persona 完全消除了特定網站的密碼,</strong>讓使用者們與網站們從創立、管理以及安全地保存密碼的責任中解放出來。</li>
- <li><strong>Persona </strong><strong>易於使用。</strong>只需要兩次點擊,一位 Persona 使用者即可登入某個新網站,諸如:<a href="http://voo.st" title="http://voo.st">Voost</a> 或 <a href="http://crossword.thetimes.co.uk/" title="http://crossword.thetimes.co.uk/">The Times Crossword</a> ,避開了造訪新網站又要再申請一組帳號密碼的麻煩事。</li>
- <li><strong>Persona 易於實作。</strong>開發人員只需要花一個下午的時間,即可將 Persona 套用到一個網站中。</li>
- <li>更棒的是,<strong>不會被鎖定。</strong>開發人員可以取得造訪網站的所有使用者已驗證過的電子郵件信箱,而使用者可以使用任何一個或多個電子郵件信箱在 Persona 中。</li>
-</ol>
-
-<p>而且,Persona 未來將會變得越來越棒:它是基於<strong>開放</strong>、<strong>去中心化</strong>的通訊協定,被設計規劃成<strong>可直接整合到各個瀏覽器中</strong>,以及<strong>可由電子郵件服務提供者直接提供支援</strong>。今天採用並導入 Persona 的網站將直接體驗到這些未來的改進項目,不需要再更動其程式碼。</p>
-
-<div class="note"><strong>備註:</strong>Persona 正在很活躍地開發中。歡迎造訪<a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">我們的</a><a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/"> blog</a> 來認識更多心功能,或是加入<a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">我們的郵件群組(英文)</a>給予我們更多建議與回饋!</div>
-
-<h2 id="動手導入_Persona_到你的網站中">動手導入 Persona 到你的網站中</h2>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h3 id="開始動手!">開始動手!</h3>
-
- <dl>
- <dt><a href="/zh-TW/docs/Persona/Why_Persona" title="zh-TW/BrowserID/Why_BrowserID">為什麼是 Persona?</a></dt>
- <dd>認識更多關於在你的網站上採用 Persona 的原因,以及它與其他身分驗證系統的差異比較。</dd>
- <dt><a href="/zh-TW/docs/Persona/Quick_Setup" title="BrowserID/Quick setup">快速指南</a></dt>
- <dd>這是一份快捷的攻略,馬上學習如何在你的網站中加入 Persona 功能。</dd>
- </dl>
- </td>
- <td>
- <h3 id="Persona_API_參考資料">Persona API 參考資料</h3>
-
- <dl>
- <dt><a href="/zh-TW/DOM/navigator.id" title="navigator.id">navigator.id API </a></dt>
- <dd>這是一份關於 <code>navigator.id</code> 物件的參考資料,Web 開發人員可以用來將 Persona 整合到網站中。</dd>
- <dt><a href="/zh-TW/Persona/Remote_Verification_API" title="zh-TW/BrowserID/Remote_Verification_API">Verification (驗證) API </a></dt>
- <dd>這份參考資料是關於建構在<code>https</code><code>://verifier.login.persona.org/verify</code> 的遠端驗證 API。</dd>
- </dl>
- </td>
- </tr>
- <tr>
- <td>
- <h3 id="導引指南">導引指南</h3>
-
- <dl>
- <dt><a href="/zh-TW/Persona/Security_Considerations" title="BrowserID/Security considerations">安全考量</a></dt>
- <dd>實作與技巧用以確保你的 Persona 佈署是安全的。</dd>
- <dt><a href="/zh-TW/Persona/Browser_compatibility" title="/Browser_compatibility">瀏覽器相容性</a></dt>
- <dd>確切得知有哪些瀏覽器有支援 Persona。</dd>
- <dt><a href="/zh-TW/Persona/Internationalization" title="/Internationalization">國際化</a></dt>
- <dd>了解 Persona 如何處理不同的各國語言。</dd>
- </dl>
- </td>
- <td>
- <h3 id="資源">資源</h3>
-
- <dl>
- <dt><a class="link-https" href="https://github.com/mozilla/browserid/wiki/Persona-Libraries" title="https://github.com/mozilla/browserid/wiki/BrowserID-Libraries">函式庫與套件</a></dt>
- <dd>尋找你愛好的程式語言、web framework、blog 或是內容管理系統 (CMS) 的函式庫或套件 (plugin)。</dd>
- <dt><a class="link-https" href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">The Persona cookbook</a></dt>
- <dd>給 Persona 網站參考的範例程式碼。包含有 C# (MVC3)、PHP、Node.JS 等等各種語言。</dd>
- <dt><a href="/zh-TW/docs/persona/branding" title="/zh-TW/docs/persona/branding">品牌資源</a></dt>
- <dd>Persona 登入按鈕,以及方便你的使用者識別的 Persona 圖形資源。</dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 id="給身分識別提供者_(Identity_Provider)_的資訊">給身分識別提供者 (Identity Provider) 的資訊</h2>
-
- <p>如果你是電子郵件服務提供者,或是身分識別服務提供者,請參考以下資訊獲知如何整合並成為一個 Persona 身分識別提供者 (IdP)。</p>
-
- <dl>
- <dt><a href="/zh-TW/docs/Persona/Identity_Provider_Overview" title="IdP">IdP 概述</a></dt>
- <dd>Persona 身份識別提供者概述。</dd>
- <dt><a href="/zh-TW/Persona/Implementing_a_Persona_IdP" title="Guide to Implementing a Persona IdP">實作 IdP</a></dt>
- <dd>這是一份詳細的技術指南,關於如何成為身分識別提供者 (IdP)。</dd>
- <dt><a href="/zh-TW/docs/Persona/.well-known-browserid" title="https://developer.mozilla.org/zh-TW/docs/Persona/.well-known-browserid">.well-known/browserid</a></dt>
- <dd><code>.well-known/browserid</code> 文件的結構與用途概述。這份文件檔案被 IdPs 用於廣播通知其支援此通訊協定。</dd>
- </dl>
- </td>
- <td>
- <h2 id="Persona_專案">Persona 專案</h2>
-
- <dl>
- <dt><a href="/zh-TW/Persona/Glossary" title="navigator.id">專有名詞對照表</a></dt>
- <dd>BrowserID 和 Persona 定義的專有名詞。</dd>
- <dt><a href="/zh-TW/Persona/FAQ" title="zh-TW/BrowserID/FAQ">FAQ</a></dt>
- <dd>常見問題集。</dd>
- <dt><a href="/zh-TW/Persona/Protocol_Overview" title="BrowserID/Protocol overview">通訊協定概述</a></dt>
- <dd>BrowserID 通訊協定的底層技術性概述。</dd>
- <dt><a href="/zh-TW/persona/Crypto" title="MDN">加密</a></dt>
- <dd>一瞥 Persona 和 BrowserID 背後的密碼學概念。</dd>
- <dt><a class="link-https" href="https://github.com/mozilla/id-specs/blob/master/browserid/index.md" title="https://github.com/mozilla/id-specs/blob/master/browserid/index.md">規格</a></dt>
- <dd>在這裡可以挖到更多更深的技術性細節。</dd>
- <dt><a href="/Persona/Bootstrapping_Persona" title="zh-TW/BrowserID/Bootstrapping_BrowserID">Persona 網站</a></dt>
- <dd>為了讓 Persona 運作,我們在 <a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a> 設立了三種服務:一個身分識別提供者,一個可移動可轉移的 {{ domxref("navigator.id") }} API 實作,以及一個身分判定 (identity assertion) 驗證服務。</dd>
- <dt><a href="https://github.com/mozilla/browserid">Persona 原始程式碼</a></dt>
- <dd>我們將 Persona 網站背後的程式碼放在 GitHub 上。非常歡迎送 Pull requests 給我們!</dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/persona/internationalization/index.html b/files/zh-tw/archive/mozilla/persona/internationalization/index.html
deleted file mode 100644
index b4ec357352..0000000000
--- a/files/zh-tw/archive/mozilla/persona/internationalization/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: Internationalization
-slug: Archive/Mozilla/Persona/Internationalization
-tags:
- - Persona
-translation_of: Archive/Mozilla/Persona/Internationalization
----
-<h2 id="Persona_的本土化如何呢?">Persona 的本土化如何呢?</h2>
-<p>將來,使用 Persona 登入網站的使用者界面(UI)將被直接集成至瀏覽器中,並且隨著瀏覽器自己的本土化來本土化。。而不支援集成的瀏覽器,Persona 的使用者界面即由一系列來自 <a href="https://login.persona.org" title="https://login.persona.org">login.persona.org</a> 的對話框所組成。這些對話框的翻譯由來自社群的自願者進行,並且有超過 45 種語言<a href="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json" title="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json">可用於這些產品中</a>。</p>
-<h2 id="Persona_如何選擇語言?">Persona 如何選擇語言?</h2>
-<p>Persona 服務通過來自瀏覽器請求頭部訊息中的 <code>Accept-Language</code> 來選擇語言。<code>Accept-Language</code> 頭部訊息所使用的語言與 <code>mozilla.org</code> 所使用的為一致:</p>
-<ol>
- <li>對於每個 <code>Accept-Language</code> 中的語言標籤:
- <ul>
- <li>確保我們有完整的該語言標籤的語言,則為精準配對該語言標籤</li>
- <li>確保我們有該語言標籤中的第一個部分,則精準配對第一部分</li>
- </ul>
- </li>
- <li>若沒辦法通過規則 1 來配對,則退而使用 en-US 。但是,通常 en 或 en-US 幾乎會被大多數瀏覽器作為最後一個傳送的 accept-lang 頭部資訊。</li>
-</ol>
-<p>舉例來說,下列下列表格列出了不同的 <code>Accept-Language</code> 會選擇的語言,假設支援下列語言: <code>en-US, es, es-MX</code>:</p>
-<table>
- <thead>
- <tr>
- <th scope="col"><strong>Accept-Language Header</strong></th>
- <th scope="col"><strong>Persona 選擇的語言</strong></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><code>es-AR,es;q=0.8,en-us;q=0.5</code></td>
- <td><code>es</code></td>
- </tr>
- <tr>
- <td><code>es-MX,es;q=0.8,en-us;q=0.5</code></td>
- <td><code>es-MX</code></td>
- </tr>
- <tr>
- <td><code>e</code><code>s-es,en-us;q=0.5</code></td>
- <td><code>en-US</code></td>
- </tr>
- <tr>
- <td><code>e</code><code>s-es</code></td>
- <td><code>en-US</code></td>
- </tr>
- </tbody>
-</table>
-<p>目前還沒辦法讓網站強制將對話框設為某一種語言。這是因為 Persona UI 的邏輯是(以及未來在本機上實現的,也會是)設計為作為瀏覽器的使用者界面的一部分,所以其語言應該要同瀏覽器的語言一致。</p>
-<h2 id="我可以如何協助?">我可以如何協助?</h2>
-<p>Persona 使用了 Mozilla Verbatim 來協助志願者建立新的翻譯。若您想幫助,請參閱<a href="https://developer.mozilla.org/en-US/docs/Localizing_with_Verbatim" title="https://developer.mozilla.org/en-US/docs/Localizing_with_Verbatim">開始使用 Verbatim</a> 並看看 Verbatim 上的<a href="https://localize.mozilla.org/projects/browserid/" title="https://localize.mozilla.org/projects/browserid/">「BrowserID」計劃</a> 。</p>
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/persona/quick_setup/index.html b/files/zh-tw/archive/mozilla/persona/quick_setup/index.html
deleted file mode 100644
index d21858329f..0000000000
--- a/files/zh-tw/archive/mozilla/persona/quick_setup/index.html
+++ /dev/null
@@ -1,137 +0,0 @@
----
-title: 快速指南
-slug: Archive/Mozilla/Persona/Quick_Setup
-translation_of: Archive/Mozilla/Persona/Quick_Setup
----
-<p>要把 Persona 登入系統加到你的網站,只需要五個步驟:</p>
-<ol>
- <li>在你的網頁中引入 Persona 的 JavaScript 函式庫。</li>
- <li>加上「登入」和「登出」按鈕。</li>
- <li>監聽登入和登出行為。</li>
- <li>驗證使用者的身分 (credential)。</li>
- <li>檢視最佳導入實例。</li>
-</ol>
-<p>你應該能在一個下午就建置完成並開始執行,另外重要的事情是:如果你要在你的網站上開始使用 Persona,請花點時間訂閱 <a href="https://mail.mozilla.org/listinfo/persona-notices">Persona 通知</a> 郵件清單。它的流量非常低,只會用於通知你關於變更公告或是安全問題等可能對你的網站造成影響的議題。</p>
-<h2 id="步驟1:引入_Persona_函式庫">步驟1:引入 Persona 函式庫</h2>
-<p>Persona 被設計為跨瀏覽器且可在<a href="https://developer.mozilla.org/docs/persona/Browser_compatibility">全部主要桌面和移動瀏覽器</a>中工作。</p>
-<p>在未來我們期望瀏覽器提供 Persona 的原生支援,但我們同時提供了一個 JavaScript 函式庫完整實作了使用者介面和客戶端部分的協議。透過包含這個函式庫,你的使用者將可以用 Persona 登入,無論他們的瀏覽器是否有原生支援。</p>
-<p>一旦頁面中的這個函式庫載入完成,你需要的 Persona 函式({{ domxref("navigator.id.watch()", "watch()") }}、{{ domxref("navigator.id.request()", "request()") }} 和 {{ domxref("navigator.id.logout()", "logout()") }})會在全域物件 <code>navigator.id</code> 中可用。</p>
-<p>要包含 Persona JavaScript 函式庫,你可以把這個 <code>script</code> 標籤放進你頁面的首部:</p>
-<pre class="brush: html;">&lt;script src="https://login.persona.org/include.js"&gt;&lt;/script&gt;
-</pre>
-<p>你<strong>必須</strong>在每個使用 {{ domxref("navigator.id") }} 中函式的頁面裡包含這個標籤。因為 Persona 始終在開發中,你不應該自行管理 <code>include.js</code> 檔。</p>
-<h2 id="步驟2:加入登入登出按鈕">步驟2:加入登入/登出按鈕</h2>
-<p>因為 Persona 被設計為一個 DOM API,你必須在使用者按下你網站上的登入或登出按鈕時呼叫函式。要開啟 Persona 對話視窗並提示使用者登入,你應該呼叫 {{ domxref("navigator.id.request()") }} 。而登出要呼叫 {{ domxref("navigator.id.logout()") }} 。</p>
-<p>例如:</p>
-<pre class="brush: js;">var signinLink = document.getElementById('signin');
-if (signinLink) {
-signinLink.onclick = function() { navigator.id.request(); };
-};
-
-var signoutLink = document.getElementById('signout');
-if (signoutLink) {
-signoutLink.onclick = function() { navigator.id.logout(); };
-};
-</pre>
-<p>那些按鈕的是什麼樣子的?查看我們的<a href="https://developer.mozilla.org/docs/persona/branding">品牌資源</a>頁面中的預製圖片和基於 CSS 的按鈕!</p>
-<h2 id="步驟3:監視登入登出行為">步驟3:監視登入/登出行為</h2>
-<p>要把 Persona 封裝成函式,你需要告訴它當使用者登入/登出時做甚麼。呼叫 {{ domxref("navigator.id.watch()") }} 函式就可以實作,它支援三處:</p>
-<ol>
- <li>
- <p>你網站目前使用者的 <code>loggedInEmail</code> ,如果沒有則為 <code>null</code> 。你應該在渲染頁面的時候動態產生它。</p>
- </li>
- <li>
- <p>當觸發 <code>onlogin</code> 行為的時候呼叫的函式。這個函式會被傳遞一個必須認證的「身分斷言」參數。</p>
- </li>
- <li>
- <p>當觸發 <code>onlogout</code> 行為的時候呼叫的函式。這個函式不會被傳遞任何參數。</p>
- </li>
-</ol>
-<div class="note style-wrap">
- <p><strong>注意:</strong>你必須總是在呼叫 {{ domxref("navigator.id.watch()") }} 時同時包含 <code>onlogin</code> 和 <code>onlogout</code> 。</p>
-</div>
-<p>例如,如果你現在認為 Bob 已經登入到你的網站,你會這樣做:</p>
-<pre class="brush: js;">var currentUser = 'bob@example.com';
-
-navigator.id.watch({
-loggedInUser: currentUser,
-onlogin: function(assertion) {
-// 一個使用者已經登入!這是你需要做的:
-// 1. 把斷言發送到後端驗證並建立一個工作階段。
-// 2. 更新你的 UI。
-$.ajax({ /* &lt;-- 本例使用了 jQuery,但你也可以用你想用的 */
-type: 'POST',
-url: '/auth/login', // 這是你網站上的一個 URL
-data: {assertion: assertion},
-success: function(res, status, xhr) { window.location.reload(); },
-error: function(res, status, xhr) { alert("登入失敗" + res); }
-});
-},
-onlogout: function() {
-// 一個使用者已經登出!這是你需要做的:
-// 銷毀使用者的工作階段並重新導向使用者或做後端的呼叫。
-// 同樣,讓 loggedInUser 在下個頁面載入時變為 null。
-// (這是一個字面的 JavaScript null。不是 false、 0 或 undefined。null。)
-$.ajax({
-type: 'POST',
-url: '/auth/logout', // 這是你網站上的一個 URL
-success: function(res, status, xhr) { window.location.reload(); },
-error: function(res, status, xhr) { alert("登出失敗" + res); }
-});
-}
-});
-</pre>
-<p>在本例中,<code>onlogin</code> 和 <code>onlogout</code> 都通過向你網站的後端發送非同步 <code>POST</code> 請求來實作。後端隨後通常用設定或刪除工作階段 cookie 中的資訊來登入或登出使用者。之後,如果一切都核對無誤,頁面重新載入來考慮帳號的新登入狀態。</p>
-<p>你當然可以用 AJAX 來不用重新載入或重新導向來實作,但這超出了本教學的範疇。</p>
-<p>你<strong>必須</strong>在每個有登入/登出按鈕的頁面上呼叫這個函式。要為使用者支持 Persona 加強功能,諸如自動登入和全域登出,你<strong>應該</strong>在網站上的每個頁面都呼叫這個函式。</p>
-<h2 id="步驟4:驗證使用者證書">步驟4:驗證使用者證書</h2>
-<p>Persona 用「身分斷言」來代替密碼,那是一種類似一次性、單一網站的、使用者郵件地址捆綁的密碼。當使用者想要登入時,你的 <code>onlogin</code> 回調會傳入一個該使用者的斷言來呼叫。在你登入他們前,你必須驗證斷言的有效性。</p>
-<p>在你的伺服器上而不是使用者瀏覽器上執行的 JavaScript 中驗證斷言是<em>極度</em>重要的,因為那很容易偽造。上面的例子用 jQuery 的 <code>$.ajax()</code> 輔助函式來把斷言通過 <code>POST</code> 到 <code>/auth/login</code> 來呈遞給後端。</p>
-<p>一旦你的伺服器取得了斷言,你如何驗證它?最簡單的方法是用 Mozilla 提供的輔助服務。簡單地把斷言以兩個參數 <code>POST</code> 給 <code>https://verifier.login.persona.org/verify</code>:</p>
-<ol>
- <li><code>assertion</code>: 使用者提供的身分斷言。</li>
- <li><code>audience</code>: 你網站的主機名稱和連接埠。你必須在後端硬編碼這個值;不要從使用者提供的任何資料中派生這個值。</li>
-</ol>
-<p>例如,如果你是 <code>example.com</code>,你可以用下面的命令行來測試斷言:</p>
-<pre class="brush: bash;">$ curl -d "assertion=&lt;ASSERTION&gt;&amp;audience=https://example.com:443" "https://verifier.login.persona.org/verify"
-</pre>
-<p>如果它是有效的,你會得到像這樣的一個 JSON 回應:</p>
-<pre class="brush: js;">{
-"status": "okay",
-"email": "bob@eyedee.me",
-"audience": "https://example.com:443",
-"expires": 1308859352261,
-"issuer": "eyedee.me"
-}
-</pre>
-<p>你可以閱讀<a href="https://developer.mozilla.org/en-US/docs/BrowserID/Remote_Verification_API">驗證服務 API</a>來獲知更多關於驗證服務的內容。一個 <code>/api/login</code> 實作的使用了 <a href="http://python.org/">Python</a>、<a href="http://flask.pocoo.org/">Flask</a> web 框架和 <a href="http://python-requests.org">Requests</a> HTTP 函式庫的例子看起來是這樣:</p>
-<pre class="brush: python;">@app.route('/auth/login', methods=['POST'])
-def login():
-# 請求必須包含我們要驗證的斷言
-if 'assertion' not in request.form:
-abort(400)
-
-# 把斷言發送給 Mozilla 的驗證服務
-data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'}
-resp = requests.post('https://verifier.login.persona.org/verify', data=data, verify=True)
-
-# 驗證器回應了嗎?
-if resp.ok:
-# 處理回應
-verification_data = json.loads(resp.content)
-
-# 檢查斷言是否有效
-if verification_data['status'] == 'okay':
-# 設置一個安全工作階段 cookie 來登入使用者
-session.update({'email': verification_data['email']})
-return resp.content
-
-# 哎喲,有什麼東西不對,放棄
-abort(500)
-</pre>
-<p>工作階段管理可能很像你現有的登入系統。首先的大區別是在驗證使用者身分採用了檢查斷言而不是檢查密碼。另一個不同是確保使用者的郵件地址有效來用於 {{ domxref("navigator.id.watch()") }} 的 <code>loggedInEmail</code> 參數</p>
-<p>登出很簡單:你只需要移除使用者的工作階段 cookie。</p>
-<h2 id="步驟5:回顧最佳實踐">步驟5:回顧最佳實踐</h2>
-<p>一旦所有的東西都工作正常並且你已經成功登入和登出你的網站,你應該花一會時間來回顧安全可靠地使用 Persona 的<a href="https://developer.mozilla.org/docs/BrowserID/Security_Considerations">最佳實踐</a>。</p>
-<p>如果你在做一個要作為生產環境的網站,你會想要編寫整合測試來模擬用 Persona 登入或登出使用者。要改善 Selenium 中的這個行為,請考慮使用 <a href="https://github.com/mozilla/bidpom" title="https://github.com/mozilla/bidpom">bidpom</a> 函式庫。<a href="https://mockmyid.com/" title="https://mockmyid.com/">mockmyid.com</a> 和 <a href="http://personatestuser.org" title="http://personatestuser.org">personatestuser.org</a> 這兩個網站也可能會有用。</p>
-<p>最後,不要忘記登記加入 <a href="https://mail.mozilla.org/listinfo/persona-notices">Persona 通知</a> 郵件清單,這樣會通知你任何安全問題或 Persona API 的向後相容變更。這個清單的流量非常低:它只用於通知會對你的網站造成負面影響的變更。</p>
diff --git a/files/zh-tw/archive/mozilla/persona/remote_verification_api/index.html b/files/zh-tw/archive/mozilla/persona/remote_verification_api/index.html
deleted file mode 100644
index 7d84cc21b6..0000000000
--- a/files/zh-tw/archive/mozilla/persona/remote_verification_api/index.html
+++ /dev/null
@@ -1,171 +0,0 @@
----
-title: 遠端驗證 API
-slug: Archive/Mozilla/Persona/Remote_Verification_API
-translation_of: Archive/Mozilla/Persona/Remote_Verification_API
----
-<h2 id="Summary" name="Summary">概覽</h2>
-<p>當使用者嘗試登入至網站時,瀏覽器會產生一名為「斷言」的資料結構,其實質上就是一個加密過的電子郵件位置。瀏覽器傳送這個斷言至網站上,使用者登入前,網站必須驗證斷言的有效性。</p>
-<p>斷言可以在本地端或是通過在下列位置的 API 來進行驗證:<span class="link-https"><code>https://verifier.login.persona.org/verify</code></span>。這個頁面介紹了如何使用 API 。</p>
-<h2 id="Methods" name="Methods">方法</h2>
-<p>HTTP POST 請求至 <code>https://verifier.login.persona.org/verify</code>。</p>
-<h3 id="Parameters" name="Parameters">參數</h3>
-<dl>
- <dt>
- <code>assertion</code></dt>
- <dd>
- 使用者所提供之斷言。作為傳入 {{ domxref("navigator.id.watch()") }} 中 <code>onlogin</code> 函數的第一個參數。</dd>
- <dt>
- <code>audience</code></dt>
- <dd>
- 您網站的通訊協定、網域名稱、與通訊埠。例如:<code>「https://example.com:443</code>」</dd>
-</dl>
-<h3 id="Return_values" name="Return_values">回傳值</h3>
-<p>呼叫後會傳統一個包含 <code>status</code> 元素的 JSON 結構,其值可能為「okay」或是「failure」。 依據 <code>status 的值的不同,可能會包含下列表中的額外元素。</code></p>
-<h4 id="okay" name="okay">"okay"</h4>
-<p>該斷言有效。</p>
-<p>在這種情況下,JSON 結構會包含下列附加元素:</p>
-<table class="standard-table" style="width: 80%;">
- <tbody>
- <tr>
- <td>"<code>email</code>"</td>
- <td>斷言中包含的登入者的郵件位置。</td>
- </tr>
- <tr>
- <td>"<code>audience</code>"</td>
- <td>Audience 的值包含了斷言。Expected to be your own website URL.</td>
- </tr>
- <tr>
- <td>"<code>expires</code>"</td>
- <td>斷言有效期的資料,expressed as the <a href="/en/JavaScript/Reference/Global_Objects/Date/valueOf" title="en/JavaScript/Reference/Global_Objects/Date/valueOf">primitive value of a Date object</a>: that is, the number of milliseconds since midnight 01 January, 1970 UTC.</td>
- </tr>
- <tr>
- <td>"<code>issuer</code>"</td>
- <td>The hostname of the identity provider that issued the assertion.</td>
- </tr>
- </tbody>
-</table>
-<h4 id="failure" name="failure">"failure"</h4>
-<p>該斷言無效。這種情況下 JSON 結構將會包含一個附加的元素:</p>
-<table class="compact-table">
- <tbody>
- <tr>
- <td><code>"reason"</code></td>
- <td>一字串解釋驗證為何失敗。</td>
- </tr>
- </tbody>
-</table>
-<h2 id="Examples" name="Examples">範例</h2>
-<h3 id="node.js" name="node.js">node.js</h3>
-<p>該範例為使用 express.js 的 Node.js 伺服器。</p>
-<pre class="brush: js">var express = require("express"),
- app = express.createServer(),
- https = require("https"),
- querystring = require("querystring");
-/* ... */
-
-// Audience 必須符合您瀏覽器的位置列上顯示的,
-// 包含通訊協定、主機名稱、以及通訊埠。
-var audience = "http://localhost:8888";
-
-app.post("/authenticate", function(req, res) {
- var vreq = https.request({
- host: "verifier.login.persona.org",
- path: "/verify",
- method: "POST"
- }, function(vres) {
- var body = "";
- vres.on('data', function(chunk) { body+=chunk; } )
- .on('end', function() {
- try {
- var verifierResp = JSON.parse(body);
- var valid = verifierResp &amp;&amp; verifierResp.status === "okay";
- var email = valid ? verifierResp.email : null;
- req.session.email = email;
- if (valid) {
- console.log("assertion verified successfully for email:", email);
- res.json(email);
- } else {
- console.log("failed to verify assertion:", verifierResp.reason);
- res.send(verifierResp.reason, 403);
- }
- } catch(e) {
- console.log("non-JSON response from verifier");
- // bogus response from verifier!
- res.send("bogus response from verifier!", 403);
-
- }
- });
- });
-
- vreq.setHeader('Content-Type', 'application/x-www-form-urlencoded');
-
- var data = querystring.stringify({
- assertion: req.body.assertion,
- audience: audience
- });
-
- vreq.setHeader('Content-Length', data.length);
- vreq.write(data);
- vreq.end();
-
- console.log("verifying assertion!");
-});
-
-</pre>
-<p>via <a class="link-https" href="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112">Lloyd Hilaiel</a></p>
-<h3 id="PHP" name="PHP">PHP</h3>
-<pre class="brush: php">$url = 'https://verifier.login.persona.org/verify';
-$assert = filter_input(
-    INPUT_POST,
-    'assertion',
-    FILTER_UNSAFE_RAW,
-    FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH
-);
-//使用 $_POST 超全域陣列供 PHP &lt; 5.2 並撰寫您自己的篩選其
-$params = 'assertion=' . urlencode($assert) . '&amp;audience=' .
- urlencode('http://example.com:80');
-$ch = curl_init();
-$options = array(
- CURLOPT_URL =&gt; $url,
- CURLOPT_RETURNTRANSFER =&gt; TRUE,
- CURLOPT_POST =&gt; 2,
- //CURLOPT_SSL_VERIFYPEER =&gt; true, //This currently blocks connection to 'https://verifier.login.persona.org/verify'
- CURLOPT_SSL_VERIFYPEER =&gt; 0,
-
- CURLOPT_SSL_VERIFYHOST =&gt; 2,
- CURLOPT_POSTFIELDS =&gt; $params
-);
-curl_setopt_array($ch, $options);
-$result = curl_exec($ch);
-curl_close($ch);
-echo $result;</pre>
-<p>Via <a class="link-https" href="https://github.com/codepo8/BrowserID-login-with-PHP/blob/184fdb74c8a554461c262875859968154d09288e/verify.php">Christian Heilmann</a></p>
-<h3 id="Java" name="Java" style="line-height: 20px;">Java</h3>
-<pre class="brush: java">@Override
-protected void doPost(final HttpServletRequest req,
-   final HttpServletResponse resp) throws ServletException,
-   IOException {
-
-   final String audience = req.getServerName();
-   final String assertion = req.getParameter("assertion");
-   final Verifier verifier = new Verifier();
-   final BrowserIDResponse personaResponse = verifier.verify(assertion,audience);
-   final Status status = personaResponse.getStatus();
-
-   if (status == Status.OK) {
-     /* Authentication with Persona was successful */
-     String email = personaResponse.getEmail();
-     log.info("{} has sucessfully signed in", email);
-     HttpSession session = req.getSession(true);
-     session.setAttribute("email", email);
-
-   } else {
-     /* Authentication with Persona failed */
-     log.info("Sign in failed...");
-
-   }
-}
-</pre>
-<p>Via <a class="link-https" href="https://github.com/user454322/browserid-verifier">Javier</a></p>
-<p> </p>
-<p>注意:If you send the assertion and audience parameters as a JSON-object, they <strong>must not</strong> be URL-encoded. If they are sent as regular HTTP POST parameters, as in the example above, they <strong>must</strong> be URL-encoded.</p>
diff --git a/files/zh-tw/archive/mozilla/persona/why_persona/index.html b/files/zh-tw/archive/mozilla/persona/why_persona/index.html
deleted file mode 100644
index e6b3b97ded..0000000000
--- a/files/zh-tw/archive/mozilla/persona/why_persona/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: 為什麼是 Persona?
-slug: Archive/Mozilla/Persona/Why_Persona
-translation_of: Archive/Mozilla/Persona/Why_Persona
----
-<p style="">現行的使用者帳號和密碼系統不是個長久之計:使用者每造訪一個新網站新服務就得建立並記住一組新的、複雜的密碼,然後每一個網站系統都必須要夠安全地存放這些密碼。儘管如此,最近的事故中也顯示了即使是有規模、有聲望的大型網路公司也還是會在密碼安全上失誤出錯,讓他們的使用者資訊暴露在風險中。</p>
-<p style="">Persona 是一個開放的、分散式的、web 規模的身分識別系統,用以取代一個網站一組密碼的局面。它解決了如 OpenID 這類系統的易用性與隱私相關等缺點,而且不訴諸於如 Facebook Connect 這類型中心化系統架構。</p>
-<h2 id="Persona_擺脫了每站一密碼">Persona 擺脫了每站一密碼</h2>
-<p>Persona 讓使用者在完成一個簡單的、一次性的身分識別處理流程後,只需要兩次點擊即可登入網站,而不再需要每站一密碼了。這是安全、可靠的,並且植基於公開金鑰密碼學的基礎上。使用者的瀏覽器產生一組加密過的「身分判定」來取代密碼,它的有效期只存在幾分鐘而且只能用於單一網站上。因為沒有網站特定的密碼,網站使用 Persona 也就不需要擔心如何安全地儲存密碼或是擔心失去或洩漏密碼資料庫了。</p>
-<p>如此快速簡便的步驟,將讓使用者更快樂地造訪新網站。</p>
-<h2 id="Persona_使用電子郵件信箱地址作為身分識別">Persona 使用電子郵件信箱地址作為身分識別</h2>
-<p>Persona 使用電子郵件信箱地址作為身分的識別方式,而不使用任意形式或自訂形式的用戶名稱作為身分識別。這帶給了使用者與開發人員諸多的好處:</p>
-<h3 id="使用者使用電子郵件信箱地址的好處">使用者使用電子郵件信箱地址的好處</h3>
-<ul>
- <li>使用者已經知道自己的郵件信箱地址,相反地,使用 OpenID 得要多學習心得而且可能讓人感到困惑的 URL 網址。</li>
- <li>電子郵件信箱地址很靈巧地可以取得 <code>someone@some-context</code> 的概念,容易用來讓使用者區分 <code>@work(工作用)</code>、 <code>@home(家用)</code> 或 <code>@school(學校)</code> 的身份。這與 Facebook 或 Google+ 等社群網站使用實名或單一帳號政策的合併身份的趨勢不相同。</li>
- <li>電子郵件信箱地址可以自行設立或是委由其他供應者提供,讓使用者可以自己控制自己的身份。</li>
-</ul>
-<h3 id="開發者使用電子郵件信箱地址的好處">開發者使用電子郵件信箱地址的好處</h3>
-<ul>
- <li>郵件信箱地址,讓開發者可以直接聯繫他們的使用者。</li>
- <li>大多數網站都需要使用者提供郵件信箱地址,Persona 會在使用者登入時自動提供,免除了額外需要填寫的註冊表單。</li>
- <li>許多登入系統已經將電子郵件信箱地址視為唯一鍵。這代表著不會被 Persona 給綁住,而且可以與現有的登入系統一起並列部署。</li>
-</ul>
-<p>更不用說電子郵件已經是個完整地,橫跨無數服務提供者的,數以億計帳戶的分散式系統。</p>
-<h2 id="Persona_與其他單一登入_(Single_Sign-On)_服務有何不同?" style="">Persona 與其他單一登入 (Single Sign-On) 服務有何不同?</h2>
-<p>Persona 安全、可靠、而且簡單。它保護了使用者的隱私、使用者的控制權、使用者的選擇,而這些是其它登入服務無法或不願意做到的。</p>
-<p>許多社群網站,例如 Facebook 或 Google+,需要使用者使用真實姓名,並且限制使用者僅能使用單一帳號。藉由建構於電子郵件信箱地址的架構,Persona 允許使用者用以區分它們工作用、家用、學校用等不同的身份識別。</p>
-<p>Persona 是開放的,也是分散式的:任何一位擁有電子郵件信箱地址的人都可以登入使用 Persona。除此之外,任何人也可以建立他們自己的身份識別服務或委由其他專業機構建立服務,就像使用電子郵件一般。這與需要單一且中心化帳號的社群網站登錄服務的做法剛好相反。</p>
-<p>Persona 也採用較為新穎的做法來保護使用者的隱私,藉由將瀏覽器置入成為驗證過程當中的一環:瀏覽器從使用者的電子郵件提供者獲取認證身份,然後瀏覽器轉頭將此認證轉呈給網站。電子郵件提供者無法追蹤使用者,但是網站仍可藉由密碼學等驗證技術取得使用者的身份認證,並信任此使用者身份。其它大部份系統,即使是像 OpenID 如此的分散式系統,仍需要網站在背景連接通訊 (phone home) 才允許使用者登入。</p>
diff --git a/files/zh-tw/archive/mozilla/xpinstall/index.html b/files/zh-tw/archive/mozilla/xpinstall/index.html
deleted file mode 100644
index 907f839dc4..0000000000
--- a/files/zh-tw/archive/mozilla/xpinstall/index.html
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: XPInstall
-slug: Archive/Mozilla/XPInstall
-tags:
- - NeedsTranslation
- - TopicStub
- - XPInstall
- - XPInstall_API_reference
-translation_of: Archive/Mozilla/XPInstall
----
-<div><div class="warning"><p>Parts of this page show the use of the <a href="https://developer.mozilla.org/en-US/docs/XPInstall_API_Reference">XPInstall API</a>. The majority of this API is now deprecated and as of Gecko 1.9 no longer available. <a href="https://developer.mozilla.org/en-US/docs/Extensions">Extension</a>, <a href="https://developer.mozilla.org/en-US/docs/Themes">Theme</a>, and <a href="https://developer.mozilla.org/en-US/docs/Plugins">plug-in</a> developers must switch away from <code>install.js</code> based packages to the new <a href="https://developer.mozilla.org/en-US/docs/Bundles">packaging scheme</a> with an <code><a href="https://developer.mozilla.org/en-US/docs/Install_Manifests">install.rdf</a></code> manifest. In particular plugin developers should see <a href="https://developer.mozilla.org/en-US/docs/Shipping_a_plugin_as_a_Toolkit_bundle">how to package a plugin as an extension</a>.</p></div>
-<pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-
-&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
- &lt;Description about="urn:mozilla:install-manifest"&gt;
- &lt;!-- properties --&gt;
- &lt;/Description&gt;
-&lt;/RDF&gt;</code></pre>
-</div>
-
-<div><strong>Cross-Platform Install (XPInstall)</strong> is a technology used by Mozilla Application Suite, Mozilla Firefox, Mozilla Thunderbird and other <a href="/en-US/docs/XUL" title="XUL">XUL</a>-based applications for installing <a href="/en-US/docs/Extensions" title="Extensions">extensions</a>. An <a href="/en-US/docs/XPI" title="XPI">XPI</a> (pronounced "zippy" and derived from XPInstall) installer module is a ZIP file that contains an install script or manifest (entitled install.js or <a href="/en-US/docs/Install_Manifests" title="Install_Manifests">install.rdf</a>) at the root of the file.</div>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
-
- <dl>
- <dt><a href="/en-US/docs/XPInstall_API_Reference" title="XPInstall_API_Reference">XPInstall API Reference</a></dt>
- <dd>XPInstall API Reference.</dd>
- <dt><a href="/en-US/docs/Learn_XPI_Installer_Scripting_by_Example" title="Learn_XPI_Installer_Scripting_by_Example">Learn XPI Installer Scripting by Example</a></dt>
- <dd>This article uses the installer script from <code>browser.xpi</code> install package as the basis for discussing XPI installations in general.</dd>
- <dt><a href="/en-US/docs/Creating_XPI_Installer_Modules" title="Creating_XPI_Installer_Modules">Creating XPI Installer Modules</a></dt>
- <dd>This article describes the packaging scheme of the Mozilla and offers a tutorial for creating a new package that can then be redistributed, installed, and made available to users.</dd>
- <dt><a href="/en-US/docs/Install_Wizards_(aka:_Stub_Installers)" title="Install_Wizards_(aka:_Stub_Installers)">Install Wizards (aka: Stub Installers)</a></dt>
- </dl>
-
- <p><span class="alllinks"><a href="/en-US/docs/tag/XPInstall" title="tag/XPInstall">View All...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">Community</h2>
-
- <ul>
- <li>View Mozilla forums... {{ DiscussionList("dev-platform", "mozilla.dev.platform") }}</li>
- </ul>
-
- <h2 class="Tools" id="Tools" name="Tools">Tools</h2>
-
- <ul>
- <li><a class="external" href="http://www.mozilla.org/quality/smartupdate/xpinstall-trigger.html">XPInstall trigger page</a></li>
- </ul>
-
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
-
- <ul>
- <li><a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/XPI" title="XPI">XPI</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/xpinstall/scripting_by_example/index.html b/files/zh-tw/archive/mozilla/xpinstall/scripting_by_example/index.html
deleted file mode 100644
index 7d95c88d75..0000000000
--- a/files/zh-tw/archive/mozilla/xpinstall/scripting_by_example/index.html
+++ /dev/null
@@ -1,244 +0,0 @@
----
-title: XPI 安裝腳本範例教學
-slug: Archive/Mozilla/XPInstall/Scripting_by_example
-tags:
- - XPInstall
- - 待翻譯
-translation_of: Archive/Mozilla/XPInstall/Scripting_by_example
----
-<p>本文以 browser.xpi 安裝套件為基礎,討論一般的 XPI 安裝程序。安裝腳本 <code><a href="zh_tw/Learn_XPI_Installer_Scripting_by_Example/Installer_Script">installer script</a></code> 雖短,但含括了 XPInstall API 大部分的重要功能,且可做為其他一般用途套件的安裝腳本樣本。本文在 unix 下安裝,不過各平台的安裝方式大同小異,你可以此變化安裝在各種 Mozilla 支援的平台。</p>
-
-<h2 id=".E9.97.9C.E6.96.BC_browser.xpi" name=".E9.97.9C.E6.96.BC_browser.xpi">關於 <code>browser.xpi</code></h2>
-
-<p><code>browser.xpi</code> 是 Mozilla 瀏覽器安裝主要元件的 XPI 封存檔。Mozilla 跨平台安裝以 XPI 格式作為組織、壓縮、以及軟體自動化安裝及更新的用途。XPI 的格式同 ZIP 及 JAR,為 PKZIP 壓縮後的檔案,只是內含可供管理安裝方式的腳本。本文目標即為此安裝腳本<code><a href="zh_tw/Learn_XPI_Installer_Scripting_by_Example/Installer_Script">installer script</a></code>(通常稱為 <code>install.js</code>)的教學。</p>
-
-<p>任何能解 ZIP 壓縮檔的工具都能開啟 XPI 檔,先來看看裡面有什麼東西:</p>
-
-<pre>install.js
-bin\
- chrome\
- components
- defaults\
- icons\
- plugins\
- res\
-</pre>
-
-<p>Note that this high-level structure parallels the directory structure of the installed browser very closely:</p>
-
-<p><img alt="mozilla directory on linux"></p>
-
-<p>As you will see in the installation script, the contents of the archive are installed onto the file system in much the same way that they are stored in the archive itself, though it's possible to rearrange things arbitrarily upon installation--to create new directories, to install files in system folders and other areas.</p>
-
-<h2 id=".E7.B6.9C.E8.A6.BD.E5.AE.89.E8.A3.9D.E8.85.B3.E6.9C.AC" name=".E7.B6.9C.E8.A6.BD.E5.AE.89.E8.A3.9D.E8.85.B3.E6.9C.AC">綜覽安裝腳本</h2>
-
-<p>XPI install scripts are written in JavaScript using XPInstall Engine syntax defined in the <a href="zh_tw/XPInstall_API_Reference">XPInstall API Reference</a>.</p>
-
-<p>Most installation scripts, including the one discussed here, take the following basic form (in pseudo-code and with links to the sections in which these installation steps are documented):</p>
-
-<p>節譯:大部分的安裝腳本都採以下的概念依流程安裝:</p>
-
-<pre>initInstall();
-if (verify_space()) {
- err = add_dirs_and_files;
- register_files;
-
- if (err==SUCCESS) { performInstall() };
- else { cancelInstall() };
-}
-</pre>
-
-<p>As you can see in the <a href="zh_tw/Learn_XPI_Installer_Scripting_by_Example/Installer_Script">code listing</a>, the verification process at the top is on lines 1 to 18; the file addition process, here part of the main installation block, is on lines 24 to 41; the registration part of the main installation block is on lines 42-58; and the execution at the end of the main block is on lines 59 to 71. If you choose not to register the installed software or do the verifications at the front end of the installation, then at a minimum, the install scripts must<em>initialize, add the files to be installed, and execute.</em></p>
-
-<p>Note also that when you call methods on the <code>Install</code>--as you do so often in installation scripts (<code>getFolder</code>, <code>initInstall</code>, <code>addFile</code>, and <code>performInstall</code> are all examples of common <code>Install</code> object methods)--the <code>Install</code> object is implicit; like the <code>window</code> object in regular web page scripts, the Install object does not need to be prefixed to the method.</p>
-
-<h3 id=".E5.88.9D.E5.A7.8B.E5.8C.96" name=".E5.88.9D.E5.A7.8B.E5.8C.96">初始化</h3>
-
-<p>All installations must begin with <code>initInstall()</code>. The <code>initInstall()</code> method on the Install object creates a new installation for the specified software and version. In the browser.xpi installation, this function appears at line 20: <code> var err = initInstall("Netscape Seamonkey", "Browser", "6.0.0.2000110807"); </code></p>
-
-<p>如果你在 <code>initInstall()</code> 之前呼叫 <code>Install</code> 物件中的方法,會導致錯誤。</p>
-
-<p>The <code>initInstall</code> method takes the following parameters: the display name of the package, the name of the package as it appears in the client registry, and the version, which can be expressed as a number or as an InstallVersion object. In the example above, "Netscape Seamonkey" is the display name, "Browser" is the registry name, and the version is "6.0.0.2000110807." See <code><a href="zh_tw/XPInstall_API_Reference/Install_Object/Methods/initInstall">initInstall</a></code> in the <a href="zh_tw/XPInstall_API_Reference">XPInstall API Reference</a> for more information on the initialization process.</p>
-
-<h3 id=".E6.AA.A2.E9.A9.97.E5.AE.89.E8.A3.9D.E7.9B.AE.E6.A8.99" name=".E6.AA.A2.E9.A9.97.E5.AE.89.E8.A3.9D.E7.9B.AE.E6.A8.99">檢驗安裝目標</h3>
-
-<p>The first thing the installation script does when it's executed is to check that there is adequate disk space for the software to be installed, where the <code>verifyDiskSpace</code> function is called as a condition of the main installation block that starts at line 24).</p>
-
-<pre> // 先檢查磁碟剩餘空間
- function verifyDiskSpace(dirPath, spaceRequired)
- {
- var spaceAvailable;
- // 取得安裝磁碟之剩餘空間
- spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
-
- // 將剩餘空間單位化為 KB
- spaceAvailable = parseInt(spaceAvailable / 1024);
- // 開始檢查
- if(spaceAvailable &lt; spaceRequired)
- {
- logComment("Insufficient disk space: " + dirPath);
- logComment(" required : " + spaceRequired + " K");
- logComment(" available: " + spaceAvailable + " K");
- return(false);
- }
- return(true);
- }
-</pre>
-
-<p>In the <code>verifyDiskSpace</code> block, <code>fileGetDiskSpaceAvailable</code> is called with <code>dirPath</code> as its expected input. This input is defined in line 22, where <code>getFolder()</code> is used to assign a value to the communicatorFolder variable representing the "Program" folder on the local system:</p>
-
-<pre>var communicatorFolder = getFolder("Program");
-spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
-</pre>
-
-<p><code>spaceRequired</code>, the other expected input to the <code>verifyDiskSpace</code> function, is given as 17311 kilobytes on line 19. Inside the function, the two sizes are compared and if the available space is larger than the required space, the installation proceeds.</p>
-
-<h3 id=".E7.82.BA_Install_.E7.89.A9.E4.BB.B6.E5.8A.A0.E5.85.A5.E6.AA.94.E6.A1.88.E5.8F.8A.E5.85.A7.E5.90.AB.E6.AA.94.E6.A1.88.E7.9A.84.E7.9B.AE.E9.8C.84" name=".E7.82.BA_Install_.E7.89.A9.E4.BB.B6.E5.8A.A0.E5.85.A5.E6.AA.94.E6.A1.88.E5.8F.8A.E5.85.A7.E5.90.AB.E6.AA.94.E6.A1.88.E7.9A.84.E7.9B.AE.E9.8C.84">為 Install 物件加入檔案及內含檔案的目錄</h3>
-
-<p>一旦確保程式可以開始安裝,就該把想放的檔案加入安裝程序。在 <code>browser.xpi</code> 中,此程式段位於 26 到 41 行:</p>
-
-<pre> err = addDirectory("Program",
- "6.0.0.2000110807",
- "bin", // jar source folder
- communicatorFolder, // target folder
- "", // target subdir
- true ); // force flag
-
- logComment("addDirectory() returned: " + err);
-
- // 建立 plugins 目錄
- var pluginsFolder = getFolder("Plugins");
- if (!fileExists(pluginsFolder))
- {
- var ignoreErr = dirCreate(pluginsFolder);
- logComment("dirCreate() returned: " + ignoreErr);
- }
- else
- logComment("Plugins folder already exists");
-</pre>
-
-<p>本例檔案都放在單一目錄中, 所以採用 <code>Install</code> 物件的 <code>addDirectory</code> 方法將壓縮檔目錄中的檔案一併加入。<code>addDirectory</code> 跟 <code>addFile</code> 兩種方法都要指定來源與目的路徑,在此例中是把「bin」目錄中的檔案列為來源,並要求於程式正式呼叫 <code>performInstall</code> 時將檔案安裝到 <code>communicatorFolder</code> 目錄(此變數於第 22 行指定為「Program」)。</p>
-
-<p>"Program" is one of a short list of keywords that can be used in place of full path names in methods such as <code>addFile</code>. "Program" represents the directory where software itself is installed (e.g., <code>C:\Program Files\</code> on win32 systems), as opposed to supporting directories like "Components", "Chrome", or "Temporary" (see <code><a href="zh_tw/XPInstall_API_Reference/Install_Object/Methods/getFolder">getFolder</a></code> in the <a href="zh_tw/XPInstall_API_Reference">XPInstall API Reference</a> for a list of keywords).</p>
-
-<h3 id=".E7.99.BB.E8.A8.98.E8.BB.9F.E9.AB.94" name=".E7.99.BB.E8.A8.98.E8.BB.9F.E9.AB.94">登記軟體</h3>
-
-<p>對於一個軟體來說,有時候需要同時在作業系統和 Netscape 6 平台上進行登記「登錄碼」。當你安裝了一個新的 chrome 像是 <code>browser.xpi</code> 時,你需要讓 chrome 登錄碼把這些更新登記在起來;如此一來,面板(skin)、使用者介面(user preference)、檔案清單(packaging list)、本地化文件(localization bundle)就會自動與新的軟體對應。</p>
-
-<p>對於在 win32 作業系統上登記軟體,XPInstall API 提供兩個特別的物件-<code>WinProfile</code> 和 <code>WinReg</code>。它們能夠對 Windows 使用者資料和 Windows 登錄碼進行對應的操作。<code>browser.xpi</code> 安裝腳本並不強制你使用這些物件。關於在 win32 平台上和其他作業系統登記軟體,詳情可以參考 XPInstall API Reference。</p>
-
-<p>而要利用 chrome 登錄碼登記基於 Netscape 6 的新軟體,像是一些外掛(plug-in)、元件(component)、佈景主題(theme)和套件(package),你需要使用 Install 物件中的 registerChrome 函數。如果執行成功,這個函數會回傳一個「0」並且將這筆紀錄寫進 <code>chrome</code> 的子目錄「installed-chrome.txt」這個檔案當中以便以後其他的 <code>chrome</code> 能夠同步更新千變萬化的 RDF 檔案。</p>
-
-<pre> var cf = getFolder("Chrome");
- registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.xpi"),"content/global/");
- registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"browser.xpi"),"content/communicator/");
- registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"browser.xpi"),"content/editor/");
- registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"browser.xpi"),"content/navigator/");
- registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/communicator/");
- registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/editor/");
- ...
-</pre>
-
-<p>在第 42 行至 58 行,只要有不同的資料夾中存在需要紀錄在 chrome 紀錄碼中的內容, <code>registerChrome</code> 就會被呼叫。 In lines 42-58, <code>registerChrome</code> is called as many times as there are different directories that contain content that needs to be registered with the chrome registry. Note that in the first few lines of this process, new content from the XPI is being registered, and in the remainder, it is new skin information. In this most common form of the <code>registerChrome</code> function (it can also be used to support the now-deprecated<em>manifest.rdf</em> style of installation archive), the three parameters represent, in order, the chrome <code>SWITCH</code> used to indicate what kind of software is being registered, the target destination of the software (e.g., the "Chrome" folder in the example above), and the path within the XPI (or JAR theme archive) where the contents.rdf file is located.</p>
-
-<p>See <code><a href="zh_tw/XPInstall_API_Reference/Install_Object/Methods/registerChrome">registerChrome</a></code> in the XPInstall API Reference for more information about registering new packages with the chrome registry.</p>
-
-<h3 id=".E9.96.8B.E5.A7.8B.E5.AE.89.E8.A3.9D" name=".E9.96.8B.E5.A7.8B.E5.AE.89.E8.A3.9D">開始安裝</h3>
-
-<p>Once you have added all the files to the installation, the final step is to actually execute the installation. Note that until this point, the install calls you have been making on the Install object are preliminary only. Recall that an install process takes the following general form:</p>
-
-<pre>initInstall();
-if (verify_space()) {
- err = add_dirs_and_files;
- register_files;
-
- if (err==SUCCESS) { performInstall() };
- else { cancelInstall() };
-}
-</pre>
-
-<p>In this arrangement, the actual execution of the installation is checked against the errors returned from the addition of files to the installation, which may itself have been conditioned on some verification of version and necessary disk space.</p>
-
-<p>The actual install code used to execute the installation appears in the<em>install.js</em> file as follows:</p>
-
-<pre>if (err==SUCCESS)
- {
- err = performInstall();
- logComment("performInstall() returned: " + err);
- }
-
- else
- {
- cancelInstall(err);
- logComment("cancelInstall() due to error: " + err);
- }
-}
-else
- cancelInstall(INSUFFICIENT_DISK_SPACE);
-</pre>
-
-<p><code>performInstall</code> is the function used to execute the install once it has been initialized and loaded, and it is the last step to installing the software. Note that in the example above, the installation is cancelled if the error code from the file addition process returns success (0), and also cancelled outside the main block if the earlier verification process is not successful.</p>
-
-<p>Note also the comments that indicate the success of various steps in the process--including the performInstall and cancelInstall steps--are written to the install log using the <code>logComment</code>, described in the following section.</p>
-
-<h2 id=".E5.AE.89.E8.A3.9D.E7.B4.80.E9.8C.84" name=".E5.AE.89.E8.A3.9D.E7.B4.80.E9.8C.84">安裝紀錄</h2>
-
-<p>Logging is an important feature of the XPInstall API that can help you streamline and debug your installations. In the example in the <a href="#Executing_the_Installation">Executing the Installation</a> section and in many places in the installation script, the <code>logComment</code> API is used to write data to a log file that can then be reviewed when things don't go as planned.</p>
-
-<p>The install log is created in the product directory by default (where the browser executable is). If the installation doesn't have proper permission, the install log is written to the user's profile directory. Respectively, these directories correspond to the "Program" and "Current User" keywords for the getFolder method.</p>
-
-<h2 id=".E6.9B.B4.E9.80.B2.E4.B8.80.E6.AD.A5" name=".E6.9B.B4.E9.80.B2.E4.B8.80.E6.AD.A5">更進一步</h2>
-
-<p>What does all this mean to you? How can this information be adapted for your own installations? In this final section, we describe the application of the XPInstall technology described here in the creation and deployment of a very simple installation script and installation archive (XPI).</p>
-
-<p>Say you have a simple executable and a README file that goes with it, and you want to make it available for installation from a XPI. After putting these two files in a XPI (which, as described above, is simply a ZIP file with an install.js script at the top and a suffix of '.xpi'), the next step is to add an installation script to the XPI.</p>
-
-<p>Minimally, the installation script must:</p>
-
-<ul>
- <li>Call <code>initInstall</code> with the name and version of the executable (the version is not optional, though you may or may not use the version in subsequent installations or updates)</li>
- <li>Find somewhere to put the installed files. In the example below, <code>getFolder</code> is used with the "Program" keyword to specify the browser's program directory as the target for installation. Since I am using NS6 right now on a Windows machine, that target directory is "C:\Program Files\Netscape\Netscape 6\".</li>
- <li>Add files to the initialized installation using <code>addFile</code>.</li>
- <li>Call performInstall to execute the installation.</li>
-</ul>
-
-<p>Here is an example of small but complete installation script.</p>
-
-<pre>var xpiSrc = "cd_ripper.exe";
-var xpiDoc = "README_cdrip";
-
-initInstall("My CD Ripper", "cdrip", "1.0.1.7");
-f = getFolder("Program");
-setPackageFolder(f);
-addFile(xpiSrc);
-addFile(xpiDoc);
-
-if (0 == getLastError())
- performInstall();
-else
- cancelInstall();
-</pre>
-
-<p>The example above shows this minimal installation. This install script does not include any version or disk space checking, very little error checking, only a single executable, no registration, and no commenting. It does, however, take the executable and the README file and install them on the user's system. Note also that for the installation script in a XPI to be automatically triggered from a web page, you must use a "trigger script." The following InstallTrigger function, called from an event handler on a regular web page, will point to the remotely-hosted XPI (called here 'cdrip.xpi') and trigger its installation:</p>
-
-<pre>function putIt()
-{
- xpi={'CD_Ripper':'cdrip.xpi'};
- InstallTrigger.install(xpi);
-}
-...
-
-&lt;a href="#" onclick="putIt();"&gt;install the CD Ripper Now!&lt;/a&gt;
-</pre>
-
-<p>See the <a href="zh_tw/XPInstall_API_Reference/InstallTrigger_Object">InstallTrigger</a> object in the XPInstall API Reference for more information on triggering installations.</p>
-
-<div class="originaldocinfo">
-<h2 id=".E5.8E.9F.E6.96.87.E8.B3.87.E8.A8.8A" name=".E5.8E.9F.E6.96.87.E8.B3.87.E8.A8.8A">原文資訊</h2>
-
-<ul>
- <li>作者:<a class="link-mailto" href="mailto:mailto:oeschger@netscape.com">Ian Oeschger</a></li>
- <li>更新日期:01/26/2006</li>
- <li>版權資訊:Copyright (C) <a class="link-mailto" href="mailto:mailto:oeschger@netscape.com">Ian Oeschger</a></li>
-</ul>
-</div>
diff --git a/files/zh-tw/archive/mozilla/xul/index.html b/files/zh-tw/archive/mozilla/xul/index.html
deleted file mode 100644
index ac13916ad4..0000000000
--- a/files/zh-tw/archive/mozilla/xul/index.html
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: XUL
-slug: Archive/Mozilla/XUL
-tags:
- - XUL
-translation_of: Archive/Mozilla/XUL
----
-<p> </p>
-
-<div class="callout-box"><strong><a href="/zh_tw/XUL_%E6%8C%87%E5%8D%97" title="zh_tw/XUL_指南">XUL 指南</a></strong><br>
-這份指南將協助你開始學習 XUL,原始創作來自於 XULPlanet。</div>
-
-<div><strong>XUL</strong> (XML User Interface Language,XML 使用者介面語言) 是 Mozilla 以 <a href="/zh_tw/XML" title="zh_tw/XML">XML</a> 為基礎的語言,可以讓你打造豐富功能且跨平台的應用程式,不論是否有連線到網際網路。這些應用程式可以輕鬆地自訂文字、圖案以及排版,因此可以很方便地為不同市場區塊發表不同品牌形象或本地化。已經熟悉 Dynamic HTML (<a href="/zh_tw/DHTML" title="zh_tw/DHTML">DHTML</a>) 的 Web 開發人員將可以很快地學會 XUL,並且馬上開始開發應用程式。 用 Firefox 或其他以 <a href="/zh_tw/Gecko" title="zh_tw/Gecko">Gecko</a> 為基礎的瀏覽器開啟 <a class="external" href="http://www.hevanet.com/acorbin/xul/top.xul">XUL 週期表</a> ,你將會看到一些 XUL 範例。</div>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h4 id=".E6.96.87.E4.BB.B6" name=".E6.96.87.E4.BB.B6"><a href="/Special:Tags?tag=XUL&amp;language=zh-tw" title="Special:Tags?tag=XUL&amp;language=zh-tw">文件</a></h4>
-
- <dl>
- <dt><a class="external" href="/index.php?title=zh_tw/XUL_%E5%8F%83%E8%80%83%E6%89%8B%E5%86%8A" title="https://developer.mozilla.org/index.php?title=zh_tw/XUL_參考手冊">XUL 參考文獻</a></dt>
- <dd><small>請參照這份 <a href="/zh_tw/Preferences_System" title="zh_tw/Preferences_System">prefwindow</a> MDC 文件。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="/en/XUL_controls" title="en/XUL_controls">XUL 控制項</a></dt>
- <dd><small>快速瀏覽 XUL 控制項。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="/zh_tw/The_Joy_of_XUL" title="zh_tw/The_Joy_of_XUL">第一次玩 XUL 就上手</a></dt>
- <dd><small>介紹 XUL 幾項重要功能與元件。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="/en/XUL/PopupGuide" title="en/XUL/PopupGuide">選單和彈出選單指南</a></dt>
- <dd><small>選單和彈出式面板的指南。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="/zh_tw/XUL/Template_Guide" title="zh_tw/XUL/Template_Guide">XUL 模板指南</a></dt>
- <dd><small>一份詳細討論 XUL 模板的指南,是個從資料源產生內容的方法指引。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="/En/DragDrop/Drag_and_Drop" title="Drag and Drop">XUL 的拖曳處理</a></dt>
- <dd><small>如何使用拖曳操作。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="/zh_tw/%E7%82%BA_Firefox_1.5_%E6%94%B9%E5%AF%AB_XUL_%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F" title="zh_tw/為_Firefox_1.5_改寫_XUL_應用程式">為 Firefox 1.5 改寫 XUL 應用程式</a></dt>
- <dd><small>一份關於 <a href="/zh_tw/Firefox_1.5" title="zh_tw/Firefox_1.5">Firefox 1.5</a> 所做變更的清單,會影響到使用 XUL 開發人員。</small></dd>
- </dl>
-
- <p><span class="alllinks"><a href="/Special:Tags?tag=XUL&amp;language=zh-tw" title="Special:Tags?tag=XUL&amp;language=zh-tw">所有文件...</a></span></p>
- </td>
- <td>
- <h4 id=".E7.A4.BE.E7.BE.A4" name=".E7.A4.BE.E7.BE.A4">社群</h4>
-
- <ul>
- <li>查閱 Mozilla 討論區...</li>
- </ul>
-
- <ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xul">郵件討論</a></li>
- <li><a href="news://news.mozilla.org/mozilla.dev.tech.xul">新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.tech.xul">Google 群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.tech.xul">feeds 消息來源</a></li>
- </ul>
-
- <ul>
- <li><a class="link-irc" href="irc://irc.mozilla.org/xul">irc.mozilla.org 上的 #xul</a></li>
- </ul>
-
- <h4 id=".E5.B7.A5.E5.85.B7" name=".E5.B7.A5.E5.85.B7">工具</h4>
-
- <ul>
- <li><a class="external" href="/en/docs/XUL_Explorer" title="en/docs/XUL_Explorer">XUL Explorer</a> (輕量級 XUL IDE)</li>
- <li><a class="external" href="http://ted.mielczarek.org/code/mozilla/extensiondev/">給擴充套件開發人員的擴充套件</a> (即時 XUL 編輯器)</li>
- <li><a class="external" href="http://www.extensionsmirror.nl/index.php?showtopic=751">XULRef sidebar</a></li>
- <li><a href="/zh_tw/DOM_Inspector" title="zh_tw/DOM_Inspector">DOM Inspector</a></li>
- </ul>
-
- <p><span class="alllinks"><a href="/Special:Tags?tag=XUL:Tools&amp;language=zh-tw" title="Special:Tags?tag=XUL:Tools&amp;language=zh-tw">所有工具...</a></span></p>
-
- <h4 id=".E7.9B.B8.E9.97.9C.E4.B8.BB.E9.A1.8C" name=".E7.9B.B8.E9.97.9C.E4.B8.BB.E9.A1.8C">相關主題</h4>
-
- <dl>
- <dd><a href="/zh_tw/JavaScript" title="zh_tw/JavaScript">JavaScript</a>, <a href="/zh_tw/XBL" title="zh_tw/XBL">XBL</a>, <a href="/zh_tw/CSS" title="zh_tw/CSS">CSS</a>, <a href="/Zh_tw/RDF" title="Zh_tw/RDF">RDF</a>, <a href="/zh_tw/Extensions" title="zh_tw/Extensions">Extensions</a>, <a href="/zh_tw/XULRunner" title="zh_tw/XULRunner">XULRunner</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p><span class="comment">Categories</span></p>
-
-<p><span class="comment">Interwiki Language Links</span></p>
diff --git a/files/zh-tw/archive/mozilla/xul/template_guide/index.html b/files/zh-tw/archive/mozilla/xul/template_guide/index.html
deleted file mode 100644
index 643bdaea0e..0000000000
--- a/files/zh-tw/archive/mozilla/xul/template_guide/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Template Guide
-slug: Archive/Mozilla/XUL/Template_Guide
----
-<p>這個頁面無內容。您可以通過貢獻來豐富 MDN 的內容</p>
diff --git a/files/zh-tw/archive/mozilla/xul/the_joy_of_xul/index.html b/files/zh-tw/archive/mozilla/xul/the_joy_of_xul/index.html
deleted file mode 100644
index ab1da2e93c..0000000000
--- a/files/zh-tw/archive/mozilla/xul/the_joy_of_xul/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: The Joy of XUL
-slug: Archive/Mozilla/XUL/The_Joy_of_XUL
-tags:
- - XUL
-translation_of: Archive/Mozilla/XUL/The_Joy_of_XUL
----
-<p> </p>
-<p>建議的讀者群:想要更加認識 XUL 且想瞭解為什麼 Mozilla 會採用 XUL 的應用開發人員與管理者。</p>
-<p>翻譯原則:由於考量到預設讀者群應該有某種程度的原文專有名詞的認識基礎,故盡可能保留原文專有名詞,或採用加註的方式呈現。如果文中有對稱關係,則採用對稱保留或加註。</p>
-<p> </p>
-<h3 id=".E5.BA.8F.E8.AB.96" name=".E5.BA.8F.E8.AB.96">序論</h3>
-<p><a href="/zh_tw/XUL" title="zh_tw/XUL">XUL</a> (發音〝/zu:l/〞) 是 Mozilla 以 XML 為基礎的使用者介面語言,讓你盡情地開發各式各樣的跨平台應用程式,不論是否在連線到網際網路的狀態皆可。這些應用程式可以藉由簡單地變更文字,圖案與版面佈局,來達到客製化的目的,因此可以輕易地本土化以推廣到各種市場去。如果您已經是熟習 Dynamic HTML (<a href="/zh_tw/DHTML" title="zh_tw/DHTML">DHTML</a>) 的網頁設計師,那您將可以很快地學會 XUL 並且可以馬上開始動手建構應用程式了。</p>
-<p>這份文件將介紹一些比較吸引人的理由給網頁設計師,來應用 XUL 以及 Mozilla 相關技術來撰寫跨平台的應用程式。這也將充分說明 Mozilla 要設計 XUL 的動機,以及為什麼 Mozilla 平台是使用 XUL 建構起來的。XUL 的重要特色與優勢將會接著以支援 Mozilla 技術的方式來呈現。最後,有個關於 "使用 XUL 所撰寫之 Calendar" 的小小個案研討,作為補充。</p>
-<h3 id=".E9.87.8D.E8.A6.81.E7.89.B9.E8.89.B2.E8.88.87.E5.84.AA.E5.8B.A2" name=".E9.87.8D.E8.A6.81.E7.89.B9.E8.89.B2.E8.88.87.E5.84.AA.E5.8B.A2">重要特色與優勢</h3>
-<table class="standard-table"> <tbody> <tr> <td>強大、以元件為基礎的標示語言</td> <td>XUL 的目標是建造跨平台的應用程式,以別於原本拿來設計網頁的 DHTML。因此,XUL 設計為應用程式的加工組件(application artifacts),如︰視窗(windows)、標籤(labels)、按鈕(buttons)等,用來取代頁面(pages)、大標題(heading levels)、連結(hypertext links)等。 <p>事實上,許多開發人員已經嘗試在他們的 DHTML 網頁應用程式中達到圖形界面的效果,但這其中的代價就是複雜以及效能,而且沒有任何標準可以支援。</p> </td> </tr> <tr> <td>以現有標準為基礎</td> <td>XUL 是立基於 W3C 標準 XML 1.0 的一個 XML 語言。使用 XUL 的應用程式是建構於這些 W3C 標準技術之上︰HTML 4.0、CSS 1 &amp; 2、DOM Levels 1 &amp; 2、JavaScript 1.5,包括 ECMA-262 Edition 3 (ECMAscript)、XML 1.0。 <p>mozilla.org 正進一步地尋求 W3C 為 eXtensible Binding Language (XBL) 標準化。(參考下面的〝支援技術〞)。</p> </td> </tr> <tr> <td>平台可攜性</td> <td>如同 HTML,XUL 被設計成與平台無關的,可以很容易地讓應用程式在任何存在 Mozilla 的作業系統上面使用。想想看現在有多麼廣泛的平台支援 Mozilla,這是以 XUL 技術來開發應用程式當中,最令人讚嘆的特色。 <p>因為 XUL 提供了使用者介面組成元件的抽象層,因此實現了這個保證︰一經寫就,處處執行 (write-once, run-anywhere)。所有 Mozilla 核心應用程式的使用者介面都是用 XUL 所撰寫的,並且該單一程式碼,在所有 Mozilla 平台上都支援。</p> </td> </tr> <tr> <td>分離介面呈現與程式流程</td> <td>大部分網頁應用程式沒落的主因就是,把使用者介面跟程式流程緊緊的結合在一起了。這在一個團隊的環境中是個頗為難的問題,因為這兩部分所需的技能通常是分散在不同的人身上。 <p>XUL 很清楚地分離出應用程式的各個組成︰程式流程 ("content" 以 XUL、XBL 與 JavaScript 組成)、外觀 ("skin" 以 CSS 和圖像組成)、與特定語言的文字標籤 ("locale" 以 DTD 以及在 .properties 檔案中的對應字串)。XUL 應用程式的佈局與外觀可以自由地改變,獨立程式與流程之外。甚至,應用程式可以本地化為任何語言或地區,完全獨立於程式流程或外觀。</p> <p>對應用程式作各種分離所得的結果是︰程式設計師可以很容易地維護程式,設計師可以輕鬆地變更設計樣式,而各個語言的翻譯人員也可以自行完成翻譯工作。這樣子獨立的工作流程,相較於以 HTML 為基礎的應用程式更容易協同工作,也減少了整個系統在穩定性與品質上的衝擊。</p> </td> </tr> <tr> <td>輕鬆自訂、本地化、打品牌</td> <td>另一個由分離程式流程,介面呈現和語言文字所直接造成的特點,即是不同的使用者或使用群可以很容易的修改成所需要的樣子。 <p>程式開發人員可以只維護應用程式的主要程式碼,然後藉由使用不同的外觀介面 (skin) 來自訂圖示與品牌觀感給他們不同的顧客群。一個以英文介面撰寫與開發的應用程式,可以被翻譯成法文給相同需求的顧客使用。當這些改變被廣泛地使用在這個應用程式的時候,他們也可以從程式流程與介面呈現之中獨立出來,來分享給所有的自訂版本。</p> </td> </tr> </tbody>
-</table>
-<h3 id=".E6.94.AF.E6.8F.B4.E6.8A.80.E8.A1.93" name=".E6.94.AF.E6.8F.B4.E6.8A.80.E8.A1.93">支援技術</h3>
-<p>這裡有一些 Mozilla 所用來支援 XUL 撰寫跨平台網頁應用程式的技術。</p>
-<table class="standard-table"> <tbody> <tr> <td><a href="/zh_tw/XBL" title="zh_tw/XBL">XBL</a></td> <td>eXtensible Bindings Language (XBL) 是一種標記語言 (markup language),定義了新的物件元素以及給 XUL 構件 (widget) 的 "bindings"。藉由 XBL,開發人員可以為 XUL 構件定義新的內容,為 XUL 構件添加事件處理,加入新的介面屬性與方法。事實上,XBL 將使得開發人員得以利用自訂現有的標籤 (tag) 或是新增他們所需要的標籤來擴充 XUL。 <p>藉由使用 XBL,開發人員可以輕易地建構出所想要的使用者介面物件,如︰進度表、別緻的彈出式選單、甚至是工具列或搜尋表單。這些自訂物件可以在指定標籤與其屬性之後,使用在各個 XUL 應用程式當中。</p> </td> </tr> <tr> <td><a href="/zh_tw/Overlay" title="zh_tw/Overlay">Overlays</a></td> <td>Overlay 是用來描述使用介面之額外內容的 XUL 檔案。他們是一種增添使用介面的通用機制,用以增加額外的元件,覆蓋掉 XUL 檔案中不再支援的使用者介面,並且可以重新利用使用者介面當中的一些片段。 <p>Overlay 對於自訂與擴充現有應用程式而言是個很強大的機制,因為他們是以兩種相關但卻又幾乎完全不同的方式在運作著。某種程度上看來,Overlay 其他語言所謂的〝引入(include)〞檔案,因為一個應用程式可能指定在其定義中引入一個 Overlay。但是 Overlay 也可以只用於外觀上,使得設計人員可以在某個應用程式上頭使用 Overlay,而不需要改變其原始程式。</p> <p>在實作上,這使得開發人員只需對其應用程式維護一組程式碼,然後再為客戶應用各自自訂的外型,或是引入特別的功能,而這些都完全獨立於主程式碼。這導致整個解決方案的簡化,與降低維護成本。</p> <p>Overlay 對於那些想要為 Mozilla 增添新功能但又希望保有著作權的軟體開發人員而言還有個特點。這兩種執照聲明︰Netscape Public License (NPL) 和 Mozilla Public License (MPL) 都要求那些有對原始程式 (Mozilla 所提供的那些原始程式碼) 做過修改的開發人員,要釋放出他們變更之後的程式碼給他們的顧客。Overlay 可以在變更著作權的情況下用來為 Mozilla 增添新的功能,而不會污染了最原始的開放原始程式碼。</p> </td> </tr> <tr> <td><a href="/zh_tw/XPCOM" title="zh_tw/XPCOM">XPCOM</a>/<a href="/zh_tw/XPConnect" title="zh_tw/XPConnect">XPConnect</a></td> <td>XPCOM 與 XPConnect 都是加強技術,將外部函數庫與 XUL 應用程式整合在一起。 <p>XPCOM,代表的是跨平台組成物件模型 (Cross Platform Component Object Model),是個用來撰寫跨平台與軟體模組化的一個架構。XPCOM 的組成元件可以用 C、C++ 和 JavaScript 來撰寫,並且可以在這些環境下來開發︰C、C++、JavaScript、<a href="/zh_tw/Python" title="zh_tw/Python">Python</a>、與 Perl 擴充集。</p> <p>XPConnect 這個技術是用來製造出簡單的 XPCOM 與 JavaScript 之間的溝通。XPConnect 允許 JavaScript 物件正大光明地存取與運用 XPCOM 物件。他也讓 JavaScript 物件可以表示成 XPCOM 相容介面以供 XPCOM 物件呼叫使用。</p> <p>將兩者合在一起,XPCOM 和 XPConnect 使得開發人員可以設計那些需要使用編譯式語言的效能或是存取作業系統等級的 XUL 應用程式。</p> </td> </tr> <tr> <td><a href="/zh_tw/XPInstall" title="zh_tw/XPInstall">XPInstall</a></td> <td>XPInstall,Mozilla 的跨平台安裝技術,提供了一個標準的方式將 XUL 應用程式的各個元件包裝成一個安裝檔案,來讓 Mozilla 可以下載並且執行之。 <p>XPInstall 讓使用者可以毫不費力地從網際網路或是公司主機來安裝新的 XUL 應用程式。要安裝一個新的應用程式,使用者只要在網頁上或是電子郵件訊息中的超連結點一下滑鼠,然後在安裝對話方塊中允許安裝新的應用程式即可。</p> </td> </tr> </tbody>
-</table>
-<h3 id=".E5.80.8B.E6.A1.88.E7.A0.94.E8.A8.8E_A_Mozilla_Calendar_Application" name=".E5.80.8B.E6.A1.88.E7.A0.94.E8.A8.8E:_A_Mozilla_Calendar_Application">個案研討: A Mozilla Calendar Application</h3>
-<p>這個小型的個案研討將敘述 OEone 公司 (<a class=" external" href="http://www.oeone.com" rel="freelink">http://www.oeone.com</a>) 如何將他的 Calendar 應用程式整合成為 Mozilla 的核心產品. Calendar 包含了 XUL 前端使用介面與以 C 寫成的 XPCOM 元件函式庫 libical , 該函式庫主要是供日期運算以及行事曆資料的儲存. 原本 Calendar 只有在 Linux 上開發, 但是都會成功地在一週之內移植到 Macintosh 和 Windows 平台上.</p>
-<p><em>XUL 提供了許多的使用者介面元件.</em> Calendar 的使用者介面完完全全都是用 XUL 所完成的, JavaScript? 還有 CSS, 都可以證明這樣的開發平台所帶來的強大與彈性. 他使用了簡單的 XUL 元件, 例如 boxes, grids, 和 stacks 來構成週, 日, 和月的瀏覽介面. 一開始 Calendar 還沒有利用到 XBL, 因為開發人員還沒完全清楚地掌握這整個開發技術. 但是 Calendar 的未來計畫已經包含了要將這些使用者介面的元件轉換成 XBL widgets 來簡化開發工作.</p>
-<p><em>XPCOM/XPConnect 讓整合現有程式碼成為可能.</em> 一個擁有完整行事曆功能的開放原始碼函式庫, libical (<a class=" external" href="http://www.softwarestudio.org/libical/" rel="freelink">http://www.softwarestudio.org/libical/</a>), 被 Calendar 專案所採用. Libical 以開放原始碼的方式實做了 IETF 的 iCalendar 行事曆與排程協定. (<a class="external" href="http://tools.ietf.org/html/rfc2445" title="http://tools.ietf.org/html/rfc2445">RFC 2445</a>, 2446, 及 2447). 他有 iCal 元件並提供了 C API 來操作這些元件的屬性, 參數以及其子元件. 這個函式庫藉由撰寫一個 XPCOM wrapper 來整合操作其使用介面. 為了增進應用程式的效能, 也將程式從 JavaScript 轉移成 XPCOM 元件.</p>
-<p><em>外觀呈現與程式寫作的分離, 修改起來超有彈性.</em> 原本的使用者介面使用了大量的圖形檔案來呈現月和週的顯示. 而在開發人員學習了更多關於 XUL 的細節之後, 改用一些較為精巧的元件來呈現這個使用介面. 這不僅加快了顯示的速度, 也節省了許多記憶體與磁碟存取的資源. 他們幾乎重寫整個顯示月和週的使用者介面, 但對於主程式方面則絲毫不受影響, 不需要做任何的改變.</p>
-<p><em>轉移 XUL 的應用程式到其他作業平台, 壓根兒不重要.</em> Calendar 原本是個 Linux 上的應用程式, 也沒想過要轉移到其他平台上面去. 但是當原來的開發者 (OEone Corporation) 將原始程式碼貢獻給 Mozilla 專案的時候, Calendar 就必須要想辦法轉移到 Windows 和 Macintosh 的平台上面去. XUL 應用程式的使用者介面不用做任何平台轉移的修改, 因為他可以幾乎不做任何變更就可以在這兩個新的平台上運作. 相類似地, 因為使用者介面是用 JavaScript 寫成的, 互動操作方面的程式也不需要做修改, 不過, 因為 libical 函式庫是由 C 所寫成的, 所以比較需要做修改, 才能轉移到其他平台上面去使用.</p>
-<p>很幸運地, 現有的 libical 函式庫已經有 Macintosh 平台上的版本可以用了, 藉由 XPCOM 這個跨平台的基石, 在 Macintosh 上的行事曆在幾天之內就完成移植了. 可是那時候還沒有 Win32 上面的版本可以直接拿來用, 所以開發人員需要把 libical 移植到 Windows 平台上面來. 不到一個星期, 這項工作也完成了, 因此 Mozilla 可以在這三個平台上使用行事曆了: Linux, Macintosh, 和 Windows.</p>
-<p><em>XPInstall 對於開發者和使用者都很方便.</em> Calendar 沒有被包含在 Mozilla 1.0 裡面一起發行, 因此沒有被當成標準配備而包含在固定的 nightly release builds 裡面. 對於有能力自行編譯 Mozilla 的開發人員而言, 他們可以自己設定相關的環境變數, 並且自己編譯 Calendar 來使用. 但是對於許多想要試看看 Calendar 的 Mozilla 使用者來說, 編譯這件事實在是遙不可及. 但是藉由 XPInstall, 開發者就可以很輕易地包裝各個版本的 Calendar, 然後只要在網路上點擊一個連結就可以直接進行安裝.</p>
-<h3 id=".E7.B5.90.E8.AB.96" name=".E7.B5.90.E8.AB.96">結論</h3>
-<p>Mozilla, 那出色的 XUL, 使用與 desktop 應用程式相同且豐富的使用者介面與使用體驗, 為開發跨平台的應用程式帶來令人讚嘆的全心體驗. 對於使用 W3C 標準來設計 web 應用程式的設計師們, 可以輕鬆地利用以往的經驗直接轉換到 desktop 應用程式.</p>
-<p>在 web 成為散佈應用程式供使用者在不同電腦上使用的標準之前, 這個跨平台的問題需要藉由 客戶端-伺服端 (client-server) 的工具來解決. 但這總是會有版權的問題, 開發人員需要支付一筆可觀的金額來購買執行程式時所需要之函式庫的版權, 也同時被廠商給綁住了. Mozilla 為這些跨平台的工具, 提供了相同價值觀但卻是使用開放原始碼版權的選擇.</p>
-<p>身為快速成長的跨平台技術, XUL 可以填滿一些有趣的技術空缺, 例如那些透過網路存取分散式物件的 Java J2EE 和 Microsoft .Net. 動態的應用程式搭配可以自由變換的使用者介面表達, 這都是依循標準, 具有擴充性, 而且可以很方便的透過網際網路來散播.</p>
-<p>XUL 模糊了 desktop 和 web 應用程式的分界, 因為他在這兩個世界裡面都有良好的根基. 將 web 應用程式轉換成 XUL 將獲得許多好處, 可以有高度的介面彈性, 在各種支援的平台上擁有一致的操作環境, 而且仍然可以存取你原有的資源, 例如共享的函式庫, 以及本地端的檔案系統.</p>
-<p>不論你是需要將現有的網頁應用程式轉移到 desktop 而尋求可以讓你輕鬆移轉到多重平台的技術, 或是將你的勁酷功能整合進瀏覽器, XUL 都會是個很值得的選擇.</p>
-<h3 id="Reference_Material" name="Reference_Material">Reference Material</h3>
-<ol> <li>XUL Planet - Samples, Tutorials and Language-References to XUL and XBL <a class=" external" href="http://www.xulplanet.com/" rel="freelink">http://www.xulplanet.com/</a></li> <li>Introduction to a XUL Document, Dan Matejka &lt;<a class=" link-mailto" href="mailto:danm@netscape.com" rel="freelink">danm@netscape.com</a>&gt; <a class=" external" href="http://www.mozilla.org/xpfe/xptoolkit/xulintro.html" rel="freelink">http://www.mozilla.org/xpfe/xptoolkit/xulintro.html</a></li> <li>XBL - Extensible Binding Language 1.0, David Hyatt &lt;<a class=" link-mailto" href="mailto:hyatt@netscape.com" rel="freelink">hyatt@netscape.com</a>&gt; <a class=" external" href="http://www.mozilla.org/projects/xbl/xbl.html" rel="freelink">http://www.mozilla.org/projects/xbl/xbl.html</a></li> <li>XBL - XML Binding Language (W3C Note), David Hyatt &lt; <a class=" link-mailto" href="mailto:hyatt@netscape.com" rel="freelink">hyatt@netscape.com</a>&gt; <a class=" external" href="http://www.w3.org/TR/xbl/" rel="freelink">http://www.w3.org/TR/xbl/</a></li> <li>XUL Overlays, Ian Oeschger &lt;<a class=" link-mailto" href="mailto:oeschger@netscape.com" rel="freelink">oeschger@netscape.com</a>&gt; and David Hyatt &lt;<a class=" link-mailto" href="mailto:hyatt@netscape.com" rel="freelink">hyatt@netscape.com</a>&gt; <a class=" external" href="http://www.mozilla.org/xpfe/xptoolkit/overlays.html" rel="freelink">http://www.mozilla.org/xpfe/xptoolkit/overlays.html</a></li> <li>XPCOM Part 1: An introduction to XPCOM, Rick Parrish &lt;<a class=" link-mailto" href="mailto:rfmobile@swbell.net" rel="freelink">rfmobile@swbell.net</a>&gt; <a class=" external" href="http://www-106.ibm.com/developerworks/webservices/library/co-xpcom.html" rel="freelink">http://www-106.ibm.com/developerwork.../co-xpcom.html</a></li> <li>XPConnect (Scriptable Components), John Bandhauer &lt;<a class=" link-mailto" href="mailto:jband@netscape.com" rel="freelink">jband@netscape.com</a>&gt; <a class=" external" href="http://www.mozilla.org/scriptable/" rel="freelink">http://www.mozilla.org/scriptable/</a></li> <li>為 Mozilla 建立新的套件(Package), Ian Oeschger &lt;<a class=" link-mailto" href="mailto:oeschger@netscape.com" rel="freelink">oeschger@netscape.com</a>&gt; <a class=" external" href="http://www.mozilla.org/docs/xul/xulnotes/xulnote_packages.html" rel="freelink">http://www.mozilla.org/docs/xul/xuln..._packages.html</a></li> <li>Mozilla Calendar 專案網站, 由 Mike Potter 所維護 &lt;<a class=" link-mailto" href="mailto:mikep@oeone.com" rel="freelink">mikep@oeone.com</a>&gt; <a class=" external" href="http://www.mozilla.org/projects/calendar/" rel="freelink">http://www.mozilla.org/projects/calendar/</a></li>
-</ol>
-<div class="originaldocinfo">
-<h3 id=".E5.8E.9F.E5.A7.8B.E6.96.87.E4.BB.B6.E8.B3.87.E8.A8.8A" name=".E5.8E.9F.E5.A7.8B.E6.96.87.E4.BB.B6.E8.B3.87.E8.A8.8A">原始文件資訊</h3>
-<ul> <li>作者: Peter Bojanic</li>
-</ul>
-<h3 id=".E7.BF.BB.E8.AD.AF.E6.96.87.E4.BB.B6.E8.B3.87.E8.A8.8A" name=".E7.BF.BB.E8.AD.AF.E6.96.87.E4.BB.B6.E8.B3.87.E8.A8.8A">翻譯文件資訊</h3>
-<ul> <li>翻譯 <a href="/User:Dwchiang" title="User:Dwchiang">Ernest Chiang</a></li> <li>修飾 <a href="/User:BobChao" title="User:BobChao">Bob Chao</a></li>
-</ul>
-</div>
-<p><a href="/zh_tw/The_Joy_of_XUL">zh_tw:The Joy of XUL</a></p>
-
-<p>{{ languages( { "en": "en/The_Joy_of_XUL", "fr": "fr/Les_joies_de_XUL", "ja": "ja/The_Joy_of_XUL", "pl": "pl/Zabawa_j\u0119zykiem_XUL" } ) }}</p>
diff --git a/files/zh-tw/archive/mozilla/xul/xul_reference/index.html b/files/zh-tw/archive/mozilla/xul/xul_reference/index.html
deleted file mode 100644
index 337bb2938a..0000000000
--- a/files/zh-tw/archive/mozilla/xul/xul_reference/index.html
+++ /dev/null
@@ -1,344 +0,0 @@
----
-title: XUL 參考文件
-slug: Archive/Mozilla/XUL/XUL_Reference
-tags:
- - XUL
-translation_of: Archive/Mozilla/XUL/XUL_Reference
----
-<p>« <a href="/en-US/docs/XUL" title="en-US/XUL">XUL Reference</a> «</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <th colspan="3">全部 XUL 元件 (按字母排序)</th>
- </tr>
- <tr>
- <td>
- <p><a href="/en/XUL/action" title="en/XUL/action">action</a><br>
- <a href="/en/XUL/arrowscrollbox" title="en/XUL/arrowscrollbox">arrowscrollbox</a><br>
- <a href="/en/XUL/assign" title="en/XUL/assign">assign</a><br>
- <a href="/en/XUL/bbox" title="en/XUL/bbox">bbox</a><br>
- <a href="/en/XUL/binding" title="en/XUL/binding">binding</a><br>
- <a href="/en/XUL/bindings" title="en/XUL/bindings">bindings</a><br>
- <a href="/en/XUL/box" title="en/XUL/box">box</a><br>
- <a href="/en/XUL/broadcaster" title="en/XUL/broadcaster">broadcaster</a><br>
- <a href="/en/XUL/broadcasterset" title="en/XUL/broadcasterset">broadcasterset</a><br>
- <a href="/en/XUL/button" title="en/XUL/button">button</a><br>
- <a href="/en/XUL/browser" title="en/XUL/browser">browser</a><br>
- <a href="/en/XUL/checkbox" title="en/XUL/checkbox">checkbox</a><br>
- <a href="/en/XUL/caption" title="en/XUL/caption">caption</a><br>
- <a href="/en/XUL/colorpicker" title="en/XUL/colorpicker">colorpicker</a><br>
- <a href="/en/XUL/column" title="en/XUL/column">column</a><br>
- <a href="/en/XUL/columns" title="en/XUL/columns">columns</a><br>
- <a href="/en/XUL/commandset" title="en/XUL/commandset">commandset</a><br>
- <a href="/en/XUL/command" title="en/XUL/command">command</a><br>
- <a href="/en/XUL/conditions" title="en/XUL/conditions">conditions</a><br>
- <a href="/en/XUL/content" title="en/XUL/content">content</a><br>
- <a href="/en/XUL/datepicker" title="en/XUL/datepicker">datepicker</a><br>
- <a href="/en/XUL/deck" title="en/XUL/deck">deck</a><br>
- <a href="/en/XUL/description" title="en/XUL/description">description</a><br>
- <a href="/en/XUL/dialog" title="en/XUL/dialog">dialog</a><br>
- <a href="/en/XUL/dialogheader" title="en/XUL/dialogheader">dialogheader</a><br>
- <a href="/en/XUL/dropmarker" title="en/XUL/dropmarker">dropmarker</a><br>
- <a href="/en/XUL/editor" title="en/XUL/editor">editor</a><br>
- <a href="/en/XUL/grid" title="en/XUL/grid">grid</a><br>
- <a href="/en/XUL/grippy" title="en/XUL/grippy">grippy</a><br>
- <a href="/en/XUL/groupbox" title="en/XUL/groupbox">groupbox</a><br>
- <a href="/en/XUL/hbox" title="en/XUL/hbox">hbox</a><br>
- <a href="/en/XUL/iframe" title="en/XUL/iframe">iframe</a><br>
- <a href="/en/XUL/image" title="en/XUL/image">image</a><br>
- <a href="/en/XUL/key" title="en/XUL/key">key</a><br>
- <a href="/en/XUL/keyset" title="en/XUL/keyset">keyset</a><br>
- <a href="/en/XUL/label" title="en/XUL/label">label</a><br>
- <a href="/en/XUL/listbox" title="en/XUL/listbox">listbox</a><br>
- <a href="/en/XUL/listcell" title="en/XUL/listcell">listcell</a><br>
- <a href="/en/XUL/listcol" title="en/XUL/listcol">listcol</a><br>
- <a href="/en/XUL/listcols" title="en/XUL/listcols">listcols</a><br>
- <a href="/en/XUL/listhead" title="en/XUL/listhead">listhead</a><br>
- <a href="/en/XUL/listheader" title="en/XUL/listheader">listheader</a><br>
- <a href="/en/XUL/listitem" title="en/XUL/listitem">listitem</a></p>
- </td>
- <td>
- <p><a href="/en/XUL/member" title="en/XUL/member">member</a><br>
- <a href="/en/XUL/menu" title="en/XUL/menu">menu</a><br>
- <a href="/en/XUL/menubar" title="en/XUL/menubar">menubar</a><br>
- <a href="/en/XUL/menuitem" title="en/XUL/menuitem">menuitem</a><br>
- <a href="/en/XUL/menulist" title="en/XUL/menulist">menulist</a><br>
- <a href="/en/XUL/menupopup" title="en/XUL/menupopup">menupopup</a><br>
- <a href="/en/XUL/menuseparator" title="en/XUL/menuseparator">menuseparator</a><br>
- <a href="/en/XUL/notification" title="en/XUL/notification">notification</a><br>
- <a href="/en/XUL/notificationbox" title="en/XUL/notificationbox">notificationbox</a><br>
- <a href="/en/XUL/observes" title="en/XUL/observes">observes</a><br>
- <a href="/en/XUL/overlay" title="en/XUL/overlay">overlay</a><br>
- <a href="/en/XUL/page" title="en/XUL/page">page</a><br>
- <a href="/en/XUL/panel" title="en/XUL/panel">panel</a><br>
- <a href="/en/XUL/param" title="en/XUL/param">param</a><br>
- <a href="/en/XUL/popupset" title="en/XUL/popupset">popupset</a><br>
- <a href="/en/XUL/preference" title="en/XUL/preference">preference</a><br>
- <a href="/en/XUL/preferences" title="en/XUL/preferences">preferences</a><br>
- <a href="/en/XUL/prefpane" title="en/XUL/prefpane">prefpane</a><br>
- <a href="/en/XUL/prefwindow" title="en/XUL/prefwindow">prefwindow</a><br>
- <a href="/en/XUL/progressmeter" title="en/XUL/progressmeter">progressmeter</a><br>
- <a href="/en/XUL/query" title="en/XUL/query">query</a><br>
- <a href="/en/XUL/queryset" title="en/XUL/queryset">queryset</a><br>
- <a href="/en/XUL/radio" title="en/XUL/radio">radio</a><br>
- <a href="/en/XUL/radiogroup" title="en/XUL/radiogroup">radiogroup</a><br>
- <a href="/en/XUL/resizer" title="en/XUL/resizer">resizer</a><br>
- <a href="/en/XUL/richlistbox" title="en/XUL/richlistbox">richlistbox</a><br>
- <a href="/en/XUL/richlistitem" title="en/XUL/richlistitem">richlistitem</a><br>
- <a href="/en/XUL/row" title="en/XUL/row">row</a><br>
- <a href="/en/XUL/rows" title="en/XUL/rows">rows</a><br>
- <a href="/en/XUL/rule" title="en/XUL/rule">rule</a><br>
- <a href="/en/XUL/scale" title="en/XUL/scale">scale</a><br>
- <a href="/en/XUL/script" title="en/XUL/script">script</a><br>
- <a href="/en/XUL/scrollbar" title="en/XUL/scrollbar">scrollbar</a><br>
- <a href="/en/XUL/scrollbox" title="en/XUL/scrollbox">scrollbox</a><br>
- <a href="/en/XUL/scrollcorner" title="en/XUL/scrollcorner">scrollcorner</a><br>
- <a href="/en/XUL/separator" title="en/XUL/separator">separator</a><br>
- <a href="/en/XUL/spacer" title="en/XUL/spacer">spacer</a><br>
- <a href="/en/XUL/spinbuttons" title="en/XUL/spinbuttons">spinbuttons</a><br>
- <a href="/en/XUL/splitter" title="en/XUL/splitter">splitter</a><br>
- <a href="/en/XUL/stack" title="en/XUL/stack">stack</a><br>
- <a href="/en/XUL/statusbar" title="en/XUL/statusbar">statusbar</a></p>
- </td>
- <td>
- <p><a href="/en/XUL/statusbarpanel" title="en/XUL/statusbarpanel">statusbarpanel</a><br>
- <a href="/en/XUL/stringbundle" title="en/XUL/stringbundle">stringbundle</a><br>
- <a href="/en/XUL/stringbundleset" title="en/XUL/stringbundleset">stringbundleset</a><br>
- <a href="/en/XUL/tab" title="en/XUL/tab">tab</a><br>
- <a href="/en/XUL/tabbrowser" title="en/XUL/tabbrowser">tabbrowser</a> (從 Firefox 3/Gecko 1.9 開始支援)<br>
- <a href="/en/XUL/tabbox" title="en/XUL/tabbox">tabbox</a><br>
- <a href="/en/XUL/tabpanel" title="en/XUL/tabpanel">tabpanel</a><br>
- <a href="/en/XUL/tabpanels" title="en/XUL/tabpanels">tabpanels</a><br>
- <a href="/en/XUL/tabs" title="en/XUL/tabs">tabs</a><br>
- <a href="/en/XUL/template" title="en/XUL/template">template</a><br>
- <a href="/en/XUL/textnode" title="en/XUL/textnode">textnode</a><br>
- <a href="/en/XUL/textbox" title="en/XUL/textbox">textbox</a><br>
- <a href="/En/XUL/Textbox_(Toolkit_autocomplete)" title="en/XUL/textbox_(Firefox_autocomplete)">textbox (Firefox autocomplete)</a><br>
- <a href="/En/XUL/Textbox_(XPFE_autocomplete)" title="en/XUL/textbox_(Mozilla_autocomplete)">textbox (Mozilla autocomplete)</a><br>
- <a href="/en/XUL/timepicker" title="en/XUL/timepicker">timepicker</a><br>
- <a href="/en/XUL/titlebar" title="en/XUL/titlebar">titlebar</a><br>
- <a href="/en/XUL/toolbar" title="en/XUL/toolbar">toolbar</a><br>
- <a href="/en/XUL/toolbarbutton" title="en/XUL/toolbarbutton">toolbarbutton</a><br>
- <a href="/en/XUL/toolbargrippy" title="en/XUL/toolbargrippy">toolbargrippy</a><br>
- <a href="/en/XUL/toolbaritem" title="en/XUL/toolbaritem">toolbaritem</a><br>
- <a href="/en/XUL/toolbarpalette" title="en/XUL/toolbarpalette">toolbarpalette</a><br>
- <a href="/en/XUL/toolbarseparator" title="en/XUL/toolbarseparator">toolbarseparator</a><br>
- <a href="/en/XUL/toolbarset" title="en/XUL/toolbarset">toolbarset</a><br>
- <a href="/en/XUL/toolbarspacer" title="en/XUL/toolbarspacer">toolbarspacer</a><br>
- <a href="/en/XUL/toolbarspring" title="en/XUL/toolbarspring">toolbarspring</a><br>
- <a href="/en/XUL/toolbox" title="en/XUL/toolbox">toolbox</a><br>
- <a href="/en/XUL/tooltip" title="en/XUL/tooltip">tooltip</a><br>
- <a href="/en/XUL/tree" title="en/XUL/tree">tree</a><br>
- <a href="/en/XUL/treecell" title="en/XUL/treecell">treecell</a><br>
- <a href="/en/XUL/treechildren" title="en/XUL/treechildren">treechildren</a><br>
- <a href="/en/XUL/treecol" title="en/XUL/treecol">treecol</a><br>
- <a href="/en/XUL/treecols" title="en/XUL/treecols">treecols</a><br>
- <a href="/en/XUL/treeitem" title="en/XUL/treeitem">treeitem</a><br>
- <a href="/en/XUL/treerow" title="en/XUL/treerow">treerow</a><br>
- <a href="/en/XUL/treeseparator" title="en/XUL/treeseparator">treeseparator</a><br>
- <a href="/en/XUL/triple" title="en/XUL/triple">triple</a><br>
- <a href="/en/XUL/vbox" title="en/XUL/vbox">vbox</a><br>
- <a href="/en/XUL/where" title="en/XUL/where">where</a><br>
- <a href="/en/XUL/window" title="en/XUL/window">window</a><br>
- <a href="/en/XUL/wizard" title="en/XUL/wizard">wizard</a><br>
- <a href="/en/XUL/wizardpage" title="en/XUL/wizardpage">wizardpage</a></p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<h1 id="XUL_參考文件">XUL 參考文件</h1>
-
-<p>« <a href="/en-US/docs/XUL" title="en-US/XUL">XUL Reference</a> «</p>
-
-<table class="fullwidth-table">
- <tbody>
- <tr>
- <th colspan="3">XUL 元件 (按分類)</th>
- </tr>
- <tr>
- <td>
- <p><u><strong>WINDOWS</strong></u></p>
-
- <p><a href="/en/XUL/dialog" title="en/XUL/dialog">dialog</a><br>
- <a href="/en/XUL/overlay" title="en/XUL/overlay">overlay</a><br>
- <a href="/en/XUL/page" title="en/XUL/page">page</a><br>
- <a href="/en/XUL/window" title="en/XUL/window">window</a><br>
- <a href="/en/XUL/wizard" title="en/XUL/wizard">wizard</a><br>
- <a href="/en/XUL/wizardpage" title="en/XUL/wizardpage">wizardpage</a><br>
- <a href="/en/XUL/preference" title="en/XUL/preference">preference</a><br>
- <a href="/en/XUL/preferences" title="en/XUL/preferences">preferences</a><br>
- <a href="/en/XUL/prefpane" title="en/XUL/prefpane">prefpane</a><br>
- <a href="/en/XUL/prefwindow" title="en/XUL/prefwindow">prefwindow</a></p>
-
- <p><u><strong>WINDOW STRUCTURE</strong></u></p>
-
- <p><a href="/en/XUL/browser" title="en/XUL/browser">browser</a><br>
- <a href="/en/XUL/tabbrowser" title="en/XUL/tabbrowser">tabbrowser</a><br>
- <a href="/en/XUL/editor" title="en/XUL/editor">editor</a><br>
- <a href="/en/XUL/iframe" title="en/XUL/iframe">iframe</a><br>
- <a href="/en/XUL/titlebar" title="en/XUL/titlebar">titlebar</a><br>
- <a href="/en/XUL/resizer" title="en/XUL/resizer">resizer</a><br>
- <a href="/en/XUL/statusbar" title="en/XUL/statusbar">statusbar</a><br>
- <a href="/en/XUL/statusbarpanel" title="en/XUL/statusbarpanel">statusbarpanel</a><br>
- <a href="/en/XUL/dialogheader" title="en/XUL/dialogheader">dialogheader</a><br>
- <a href="/en/XUL/notification" title="en/XUL/notification">notification</a><br>
- <a href="/en/XUL/notificationbox" title="en/XUL/notificationbox">notificationbox</a></p>
-
- <p><u><strong>MENUS AND POPUPS</strong></u></p>
-
- <p><a href="/en/XUL/menubar" title="en/XUL/menubar">menubar</a><br>
- <a href="/en/XUL/menu" title="en/XUL/menu">menu</a><br>
- <a href="/en/XUL/menuitem" title="en/XUL/menuitem">menuitem</a><br>
- <a href="/en/XUL/menuseparator" title="en/XUL/menuseparator">menuseparator</a><br>
- <a href="/en/XUL/menupopup" title="en/XUL/menupopup">menupopup</a><br>
- <a href="/en/XUL/panel" title="en/XUL/panel">panel</a><br>
- <a href="/en/XUL/tooltip" title="en/XUL/tooltip">tooltip</a><br>
- <a href="/en/XUL/popupset" title="en/XUL/popupset">popupset</a></p>
-
- <p><u><strong>TOOLBARS</strong></u></p>
-
- <p><a href="/en/XUL/toolbar" title="en/XUL/toolbar">toolbar</a><br>
- <a href="/en/XUL/toolbarbutton" title="en/XUL/toolbarbutton">toolbarbutton</a><br>
- <a href="/en/XUL/toolbargrippy" title="en/XUL/toolbargrippy">toolbargrippy</a><br>
- <a href="/en/XUL/toolbaritem" title="en/XUL/toolbaritem">toolbaritem</a><br>
- <a href="/en/XUL/toolbarpalette" title="en/XUL/toolbarpalette">toolbarpalette</a><br>
- <a href="/en/XUL/toolbarseparator" title="en/XUL/toolbarseparator">toolbarseparator</a><br>
- <a href="/en/XUL/toolbarset" title="en/XUL/toolbarset">toolbarset</a><br>
- <a href="/en/XUL/toolbarspacer" title="en/XUL/toolbarspacer">toolbarspacer</a><br>
- <a href="/en/XUL/toolbarspring" title="en/XUL/toolbarspring">toolbarspring</a><br>
- <a href="/en/XUL/toolbox" title="en/XUL/toolbox">toolbox</a></p>
-
- <p><u><strong>TABS AND GROUPING</strong></u></p>
-
- <p><a href="/en/XUL/tabbox" title="en/XUL/tabbox">tabbox</a><br>
- <a href="/en/XUL/tabs" title="en/XUL/tabs">tabs</a><br>
- <a href="/en/XUL/tab" title="en/XUL/tab">tab</a><br>
- <a href="/en/XUL/tabpanels" title="en/XUL/tabpanels">tabpanels</a><br>
- <a href="/en/XUL/tabpanel" title="en/XUL/tabpanel">tabpanel</a><br>
- <a href="/en/XUL/groupbox" title="en/XUL/groupbox">groupbox</a><br>
- <a href="/en/XUL/caption" title="en/XUL/caption">caption</a><br>
- <a href="/en/XUL/separator" title="en/XUL/separator">separator</a><br>
- <a href="/en/XUL/spacer" title="en/XUL/spacer">spacer</a></p>
- </td>
- <td>
- <p><u><strong>CONTROLS</strong></u></p>
-
- <p><a href="/en/XUL/button" title="en/XUL/button">button</a><br>
- <a href="/en/XUL/checkbox" title="en/XUL/checkbox">checkbox</a><br>
- <a href="/en/XUL/colorpicker" title="en/XUL/colorpicker">colorpicker</a><br>
- <a href="/en/XUL/datepicker" title="en/XUL/datepicker">datepicker</a><br>
- <a href="/en/XUL/menulist" title="en/XUL/menulist">menulist</a><br>
- <a href="/en/XUL/progressmeter" title="en/XUL/progressmeter">progressmeter</a><br>
- <a href="/en/XUL/radio" title="en/XUL/radio">radio</a><br>
- <a href="/en/XUL/radiogroup" title="en/XUL/radiogroup">radiogroup</a><br>
- <a href="/en/XUL/scale" title="en/XUL/scale">scale</a><br>
- <a href="/en/XUL/splitter" title="en/XUL/splitter">splitter</a><br>
- <a href="/en/XUL/textbox" title="en/XUL/textbox">textbox</a><br>
- <a href="/En/XUL/Textbox_(Toolkit_autocomplete)" title="en/XUL/textbox_(Firefox_autocomplete)">textbox (Firefox autocomplete)</a><br>
- <a href="/En/XUL/Textbox_(XPFE_autocomplete)" title="en/XUL/textbox_(Mozilla_autocomplete)">textbox (Mozilla autocomplete)</a><br>
- <a href="/en/XUL/timepicker" title="en/XUL/timepicker">timepicker</a></p>
-
- <p><u><strong>TEXT AND IMAGES</strong></u></p>
-
- <p><a href="/en/XUL/description" title="en/XUL/description">description</a><br>
- <a href="/en/XUL/label" title="en/XUL/label">label</a><br>
- <a href="/en/XUL/image" title="en/XUL/image">image</a></p>
-
- <p><u><strong>LISTS</strong></u></p>
-
- <p><a href="/en/XUL/listbox" title="en/XUL/listbox">listbox</a><br>
- <a href="/en/XUL/listitem" title="en/XUL/listitem">listitem</a><br>
- <a href="/en/XUL/listcell" title="en/XUL/listcell">listcell</a><br>
- <a href="/en/XUL/listcol" title="en/XUL/listcol">listcol</a><br>
- <a href="/en/XUL/listcols" title="en/XUL/listcols">listcols</a><br>
- <a href="/en/XUL/listhead" title="en/XUL/listhead">listhead</a><br>
- <a href="/en/XUL/listheader" title="en/XUL/listheader">listheader</a><br>
- <a href="/en/XUL/richlistbox" title="en/XUL/richlistbox">richlistbox</a><br>
- <a href="/en/XUL/richlistitem" title="en/XUL/richlistitem">richlistitem</a></p>
-
- <p><u><strong>TREES</strong></u></p>
-
- <p><a href="/en/XUL/tree" title="en/XUL/tree">tree</a><br>
- <a href="/en/XUL/treecell" title="en/XUL/treecell">treecell</a><br>
- <a href="/en/XUL/treechildren" title="en/XUL/treechildren">treechildren</a><br>
- <a href="/en/XUL/treecol" title="en/XUL/treecol">treecol</a><br>
- <a href="/en/XUL/treecols" title="en/XUL/treecols">treecols</a><br>
- <a href="/en/XUL/treeitem" title="en/XUL/treeitem">treeitem</a><br>
- <a href="/en/XUL/treerow" title="en/XUL/treerow">treerow</a><br>
- <a href="/en/XUL/treeseparator" title="en/XUL/treeseparator">treeseparator</a></p>
-
- <p> </p>
- </td>
- <td>
- <p><u><strong>LAYOUT</strong></u></p>
-
- <p><a href="/en/XUL/box" title="en/XUL/box">box</a><br>
- <a href="/en/XUL/hbox" title="en/XUL/hbox">hbox</a><br>
- <a href="/en/XUL/vbox" title="en/XUL/vbox">vbox</a><br>
- <a href="/en/XUL/bbox" title="en/XUL/bbox">bbox</a><br>
- <a href="/en/XUL/deck" title="en/XUL/deck">deck</a><br>
- <a href="/en/XUL/stack" title="en/XUL/stack">stack</a><br>
- <a href="/en/XUL/grid" title="en/XUL/grid">grid</a><br>
- <a href="/en/XUL/columns" title="en/XUL/columns">columns</a><br>
- <a href="/en/XUL/column" title="en/XUL/column">column</a><br>
- <a href="/en/XUL/rows" title="en/XUL/rows">rows</a><br>
- <a href="/en/XUL/row" title="en/XUL/row">row</a><br>
- <a href="/en/XUL/scrollbox" title="en/XUL/scrollbox">scrollbox</a></p>
-
- <p><u><strong>TEMPLATES</strong></u></p>
-
- <p><a href="/en/XUL/action" title="en/XUL/action">action</a><br>
- <a href="/en/XUL/assign" title="en/XUL/assign">assign</a><br>
- <a href="/en/XUL/binding" title="en/XUL/binding">binding</a><br>
- <a href="/en/XUL/bindings" title="en/XUL/bindings">bindings</a><br>
- <a href="/en/XUL/conditions" title="en/XUL/conditions">conditions</a><br>
- <a href="/en/XUL/content" title="en/XUL/content">content</a><br>
- <a href="/en/XUL/member" title="en/XUL/member">member</a><br>
- <a href="/en/XUL/param" title="en/XUL/param">param</a><br>
- <a href="/en/XUL/query" title="en/XUL/query">query</a><br>
- <a href="/en/XUL/queryset" title="en/XUL/queryset">queryset</a><br>
- <a href="/en/XUL/rule" title="en/XUL/rule">rule</a><br>
- <a href="/en/XUL/template" title="en/XUL/template">template</a><br>
- <a href="/en/XUL/textnode" title="en/XUL/textnode">textnode</a><br>
- <a href="/en/XUL/triple" title="en/XUL/triple">triple</a><br>
- <a href="/en/XUL/where" title="en/XUL/where">where</a></p>
-
- <p><u><strong>SCRIPTING</strong></u></p>
-
- <p><a href="/en/XUL/script" title="en/XUL/script">script</a><br>
- <a href="/en/XUL/commandset" title="en/XUL/commandset">commandset</a><br>
- <a href="/en/XUL/command" title="en/XUL/command">command</a><br>
- <a href="/en/XUL/broadcaster" title="en/XUL/broadcaster">broadcaster</a><br>
- <a href="/en/XUL/broadcasterset" title="en/XUL/broadcasterset">broadcasterset</a><br>
- <a href="/en/XUL/observes" title="en/XUL/observes">observes</a><br>
- <a href="/en/XUL/key" title="en/XUL/key">key</a><br>
- <a href="/en/XUL/keyset" title="en/XUL/keyset">keyset</a><br>
- <a href="/en/XUL/stringbundle" title="en/XUL/stringbundle">stringbundle</a><br>
- <a href="/en/XUL/stringbundleset" title="en/XUL/stringbundleset">stringbundleset</a></p>
-
- <p><u><strong>HELPER ELEMENTS</strong></u></p>
-
- <p><a href="/en/XUL/scrollbar" title="en/XUL/scrollbar">arrowscrollbox</a><br>
- <a href="/en/XUL/dropmarker" title="en/XUL/dropmarker">dropmarker</a><br>
- <a href="/en/XUL/grippy" title="en/XUL/grippy">grippy</a><br>
- <a href="/en/XUL/scrollbar" title="en/XUL/scrollbar">scrollbar</a><br>
- <a href="/en/XUL/scrollcorner" title="en/XUL/scrollcorner">scrollcorner</a><br>
- <a href="/en/XUL/spinbuttons" title="en/XUL/spinbuttons">spinbuttons</a></p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<h3 id="Other_XUL_lists" name="Other_XUL_lists">其他 XUL 列表</h3>
-
-<ul>
- <li><a href="/en/XUL/Attribute" title="en/XUL/Attribute">全部屬性 (attribute)</a></li>
- <li><a href="/en/XUL/Property" title="en/XUL/Property">全部屬性 (propertie)</a></li>
- <li><a href="/en/XUL/Method" title="en/XUL/Method">全部方法</a></li>
- <li><a href="/en/XUL_element_attributes" title="en/XUL_element_attributes">全部 XUL 元件定義的屬性 (attribute)</a></li>
- <li><a href="/en/XUL/Style" title="en/XUL/Style">樣式類別</a></li>
- <li><a href="/en/XUL/Events" title="en/XUL/Events">事件處理</a></li>
- <li><a href="/en/XUL/Deprecated//Defunct_Markup" title="en/XUL/Deprecated//Defunct_Markup">不推薦或廢棄的標記</a></li>
-</ul>
diff --git a/files/zh-tw/archive/mozilla/xulrunner/index.html b/files/zh-tw/archive/mozilla/xulrunner/index.html
deleted file mode 100644
index f2e5e0b75c..0000000000
--- a/files/zh-tw/archive/mozilla/xulrunner/index.html
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: XULRunner
-slug: Archive/Mozilla/XULRunner
-tags:
- - NeedsTranslation
- - NeedsUpdate
- - TopicStub
- - XUL
- - XULRunner
-translation_of: Archive/Mozilla/XULRunner
----
-<div class="callout-box"><strong><a href="/en-US/docs/Getting_started_with_XULRunner" title="Getting_started_with_XULRunner">Getting Started with XULRunner</a></strong><br>
-A short introduction to XULRunner.</div>
-
-<div><span class="seoSummary"><strong>XULRunner</strong> is a Mozilla runtime package that can be used to bootstrap <a href="/en-US/docs/XUL" title="XUL">XUL</a>+<a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a> applications that are as rich as Firefox and Thunderbird. It provides mechanisms for installing, upgrading, and uninstalling these applications.</span> XULRunner also provides <code>libxul</code>, a solution which allows the embedding of Mozilla technologies in other projects and products.</div>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 id="Releases" name="Releases">Releases</h2>
-
- <div class="note">
- <p>Until version 41, XULRunner could be <a class="external" href="http://ftp.mozilla.org/pub/xulrunner/releases/latest/" title="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/">downloaded from ftp.mozilla.org</a>.</p>
-
- <p>Firefox (from version 3) ships with a private XULRunner package, which can run any compatible XULRunner application using the <code>-app</code> switch: <em><code>firefox -app application.ini</code> is equivalent to <code>xulrunner -app application.ini</code></em></p>
-
- <p><a href="/en-US/docs/XULRunner/Old_Releases" title="XULRunner/Old_Releases">Older builds</a> are also available.</p>
- </div>
-
- <h2 id="Overview" name="Overview">Overview</h2>
-
- <ul>
- <li>{{ interwiki('wikimo', 'XULRunner', 'Development Plan') }}</li>
- <li><a href="/en-US/docs/XULRunner/What_XULRunner_Provides" title="XULRunner/What_XULRunner_Provides">What XULRunner Provides</a></li>
- <li><a href="/en-US/docs/XULRunner_FAQ" title="XULRunner_FAQ">XULRunner FAQ</a></li>
- <li>Nightly builds: <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/">unstable-trunk</a></li>
- </ul>
-
- <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
-
- <dl>
- <dt><a href="/en-US/docs/Getting_started_with_XULRunner" title="Getting_started_with_XULRunner">Getting Started with XULRunner</a></dt>
- <dd>Short tutorial on building desktop applications with XULRunner.</dd>
- <dt><a href="/en-US/docs/XUL_Tutorial" title="XUL Tutorial">XUL Tutorial</a></dt>
- <dd>Once you have a working XULRunner application, use the XUL tutorial to expand it into a fantastic XUL application.</dd>
- <dt><a href="/en-US/docs/XULRunner_tips" title="XULRunner_tips">XULRunner tips</a></dt>
- <dd>A collection of tips for working with XULRunner.</dd>
- <dt><a href="/en-US/docs/XULRunner/Deploying_XULRunner_1.8" title="XULRunner/Deploying_XULRunner_1.8">Deploying XULRunner</a></dt>
- <dd>An introduction on how to package your application with XULRunner.</dd>
- <dt><a href="/en-US/docs/XULRunner_Hall_of_Fame" title="XULRunner_Hall_of_Fame">XULRunner Hall of Fame</a></dt>
- <dd>Tracks all available applications based on XULRunner.</dd>
- <dt><a href="/en-US/docs/Developer_Guide/Build_Instructions" title="Build_Documentation">Build Documentation</a></dt>
- <dd>Learn how to get the source and build it.</dd>
- <dt><a href="/en-US/docs/Debugging_a_XULRunner_Application" title="Debugging_a_XULRunner_Application">Debug Documentation</a></dt>
- <dd>Steps to configure Venkman to debug your App</dd>
- <dt><a class="external" href="http://zenit.senecac.on.ca/wiki/index.php/XULRunner_Guide">XULRunner Guide</a></dt>
- <dd>A fairly complete, but outdated, introduction and tutorial for XULRunner which collates much of the documentation found here.</dd>
- </dl>
-
- <p><span class="alllinks"><a href="/en-US/docs/tag/XULRunner" title="tag/XULRunner">View all...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">Community</h2>
-
- <ul>
- <li>View Mozilla forums... {{ DiscussionList("dev-platform", "mozilla.dev.platform") }}</li>
- <li><a class="link-irc" href="irc://irc.mozilla.org/#xulrunner">#xulrunner on irc.mozilla.org</a></li>
- <li><a href="/en-US/docs/XULRunner/Community" title="XULRunner/Community">Other community links...</a></li>
- </ul>
-
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related topics</h2>
-
- <ul>
- <li><a href="/en-US/docs/XUL" title="XUL">XUL</a></li>
- </ul>
-
- <h2 id="See_also" name="See_also">See also</h2>
-
- <ul>
- <li><a class="external" href="http://www.kodewerx.org/wiki/A_Brief_Introduction_To_XULRunner:_Part_1" title="http://www.kodewerx.org/wiki/A_Brief_Introduction_To_XULRunner:_Part_1">A brief introduction to XULRunner</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/archive/mozilla/xulrunner/xulrunner_tips/index.html b/files/zh-tw/archive/mozilla/xulrunner/xulrunner_tips/index.html
deleted file mode 100644
index c51ae6a0ee..0000000000
--- a/files/zh-tw/archive/mozilla/xulrunner/xulrunner_tips/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
----
-title: XULRunner秘技
-slug: Archive/Mozilla/XULRunner/XULRunner_tips
-translation_of: Archive/Mozilla/XULRunner/Tips
----
-<p>XULRunner Frequently Asked Questions. Work in progress.</p>
-<h2 id="Extension_Manager" name="Extension_Manager">Extension Manager</h2>
-<p>To be able to install any extensions, you first need to enable the Extension Manager in <a href="/en/XUL_Application_Packaging#em" title="en/XUL_Application_Packaging#em">application.ini</a>. XULRunner 1.8.0 does not load extensions from the application directory; only the XULRunner directory and the user profile directory are checked. However, it seems that with XULRunner 1.9 the XULRunner directory is ignored, while the profile and application directories are checked. The following prefs must also be set to make the XPInstall dialog, extension manager, and theme manager work:</p>
-<pre class="eval">pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
-pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");
-pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=extensions");
-pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes");
-pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions");
-pref("extensions.update.enabled", true);
-pref("extensions.update.interval", 86400);
-pref("extensions.dss.enabled", false);
-pref("extensions.dss.switchPending", false);
-pref("extensions.ignoreMTimeChanges", false);
-pref("extensions.logging.enabled", false);
-pref("general.skins.selectedSkin", "classic/1.0");
-// NB these point at AMO
-pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");
-pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");
-pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");
-</pre>
-<p>If your application is based on Gecko 2.0, you need to register a component through the new component registration because the extension manager uses FUEL, namely <code>Application.restart()</code>, to restart your xulrunner-based application after any change (installation, removal, enabling, disabling) in the extensions' list:</p>
-<ol>
- <li>copy files <code>fuelApplication.js</code> and <code>fuelApplication.manifest</code> from <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/browser/fuel/src/" title="http://mxr.mozilla.org/mozilla-central/source/browser/fuel/src/"><code>browser/fuel/src</code></a> for instance into your <code>components/</code> directory</li>
- <li>tweak the line <code>#include ../../../toolkit/components/exthelper/extApplication.js</code> in your copy of <code>fuelApplication.js</code> as needed</li>
- <li>make sure to declare the FUEL module and the two files in your <code>components/Makefile.in</code> as in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/browser/fuel/src/Makefile.in" title="http://mxr.mozilla.org/mozilla-central/source/browser/fuel/src/Makefile.in"><code>browser/fuel/src/Makefile.in</code></a></li>
- <li>rebuild...</li>
-</ol>
-<h2 id="Useful_Chrome_URLs">Useful Chrome URLs</h2>
-<p>Most of these require <a href="#Branding"> branding</a>.</p>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Window</th>
- <th>URL</th>
- <th>Window Type</th>
- </tr>
- <tr>
- <td>Extension Manager</td>
- <td>chrome://mozapps/content/extensions/extensions.xul?type=extensions</td>
- <td>Extension:Manager-extensions</td>
- </tr>
- <tr>
- <td>Theme Manager</td>
- <td>chrome://mozapps/content/extensions/extensions.xul?type=themes</td>
- <td>Extension:Manager-themes</td>
- </tr>
- <tr>
- <td>JavaScript Console</td>
- <td>chrome://global/content/console.xul</td>
- <td>global:console</td>
- </tr>
- <tr>
- <td>about:config</td>
- <td>chrome://global/content/config.xul</td>
- <td>  </td>
- </tr>
- </tbody>
-</table>
-<h2 id="Developer_Extensions" name="Developer_Extensions">Developer Extensions</h2>
-<h3 id="Venkman"><a href="/en/Venkman" title="en/Venkman">Venkman</a></h3>
-<ul>
- <li>Need a custom build or a compatible extension</li>
- <li>Need to edit compatibility in</li>
- <li>Needs a method to start venkman (usually by overlaying the main XUL file, similar to existing code for Firefox, Suite, etc.)</li>
- <li>The function toOpenWindowByType() needs to be defined. There is a <a class="external" href="http://www.rcode.net/blog/tlaurenzo/2006/03/17/getting-dev-tools-working-with-xulrunner/" title="http://www.rcode.net/blog/tlaurenzo/2006/03/17/getting-dev-tools-working-with-xulrunner/">working stub</a>. Any better suggestion?</li>
- <li>Venkman uses "chrome://communicator/skin/" as an alias for "chrome://global/skin/" and this alias was maintained in the XULRunner toolkit until XULRunner 1.9 was released. When using XULRunner 1.9 or greater, you can create your own alias
- <ul>
- <li>in your chrome manifest add a "skin" line:
- <pre>skin communicator classic/1.0 skin/communicator/</pre>
- </li>
- <li>add a skin folder named "communicator" and add a single CSS file named "communicator.css" with this content:
- <pre>@import url("chrome://global/skin");</pre>
- </li>
- </ul>
- </li>
-</ul>
-<h3 id="DOM_Inspector" name="DOM_Inspector"><a href="/en/DOM_Inspector" title="en/DOM_Inspector">DOM Inspector</a></h3>
-<p>To add DOM Inspector 2.0.* to your XULRunner 1.9.0.* application follow these steps:</p>
-<ul>
- <li>Download the <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622" title="https://addons.mozilla.org/en-US/firefox/addon/6622">Dom Inspector</a> (instead of clicking the "Add to..." button, right-click and select "Save Link As...").</li>
- <li>Save the <em>dom_inspector-*.xpi</em> package to a temporary directory</li>
- <li>Unzip the package</li>
- <li>Copy the following files:<br>
- <em>chrome/inspector.jar</em> to the chrome directory of your XULRunner application<br>
- <em>components/inspector-cmdline.js</em> to your components directory<br>
- <em>defaults/preferences/inspector.js</em> to your preferences directory</li>
- <li>Open your chrome.manifest file and add these lines:</li>
-</ul>
-<pre>content inspector jar:inspector.jar!/content/inspector/ xpcnativewrappers=no
-locale inspector en-US jar:inspector.jar!/locale/en-US/inspector/
-skin inspector modern/1.0 jar:inspector.jar!/skin/modern/inspector/
-skin inspector classic/1.0 jar:inspector.jar!/skin/classic/inspector/
-
-overlay chrome://inspector/content/popupOverlay.xul chrome://inspector/content/viewers/dom/popupOverlay.xul
-overlay chrome://inspector/content/commandOverlay.xul chrome://inspector/content/viewers/styleRules/commandOverlay.xul
-overlay chrome://inspector/content/keysetOverlay.xul chrome://inspector/content/viewers/dom/keysetOverlay.xul
-overlay chrome://inspector/content/popupOverlay.xul chrome://inspector/content/viewers/styleRules/popupOverlay.xul
-overlay chrome://inspector/content/commandOverlay.xul chrome://inspector/content/viewers/dom/commandOverlay.xul
-</pre>
-<p>To launch DOM Inspector in your application, you need to open its main window, with a command like this:</p>
-<pre>window.open("chrome://inspector/content/inspector.xul", "", "chrome");
-</pre>
-<p><strong>Alternatively, the DOM Inspector may also be added as an extension:</strong></p>
-<ol>
- <li>(if you already have inspector installed for another application you can skip to the next step)<br>
- Follow the instructions above through "Unzip the package."</li>
- <li>Create a file in the extensions directory of your application with the same name as the DOM Inspector ID (<a class="link-mailto" href="mailto:inspector@mozilla.org" rel="freelink">inspector@mozilla.org</a>) containing one line of text -- the exact path to the root directory of DOM inspector (where the install.rdf is) like this one:
- <pre>/home/username/.mozilla/firefox/numbersandletters/extensions/inspector@mozilla.org/</pre>
- </li>
- <li>Now create a javascript file with the following code and include it in the main window of your application:
- <pre>function startDOMi()
-{
- // Load the Window DataSource so that browser windows opened subsequent to DOM
- // Inspector show up in the DOM Inspector's window list.
- var windowDS = Components.classes["@mozilla.org/rdf/datasource;1?name=window-mediator"]
- .getService(Components.interfaces.nsIWindowDataSource);
- var tmpNameSpace = {};
- var sl = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
- .createInstance(Components.interfaces.mozIJSSubScriptLoader);
- sl.loadSubScript("chrome://inspector/content/hooks.js", tmpNameSpace);
- tmpNameSpace.inspectDOMDocument(document);
-}
-</pre>
- </li>
- <li>Now create a hook in your application window to start DOM Inspector, like this one:
- <pre>&lt;button label="Start Inpector" oncommand="startDOMi()"/&gt;</pre>
- </li>
- <li>Start your application and DOM Inspector will be installed.</li>
-</ol>
-<p>Note: I use this method of installing extensions into all of my Mozilla applications. This way I have one directory where I keep all my Mozilla extensions, and each application (Firefox, Thunderbird) simply contains a few small, one line files pointing to the location of the extensions. (I keep them in source control to be sure I can maintain compatibility)</p>
-<h3 id="Component_Viewer" name="Component_Viewer">Component Viewer</h3>
-<p>Need custom build, first of all. What else?</p>
-<h3 id="Extension_Developer.27s_Extension" name="Extension_Developer.27s_Extension">Extension Developer's Extension</h3>
-<p><a class="external" href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension Developer's Extension</a> is a useful tool, featuring Live XUL Editor and JavaScript Shell. To install the extension into your application you'll need to hack its install.rdf (see above). You'll probably also want to create menuitems that let you open the JS Shell and other tools provided by the extension.</p>
-<h2 id="Branding" name="Branding">Branding</h2>
-<p>Branding is a <a href="/en/Chrome_Registration" title="en/Chrome_Registration">chrome package</a> containing product-specific information (e.g. the product name, vendor, and logo). Some XULRunner components (in particular, the <a href="#Extension_Manager"> Extension Manager</a>) depend on branding, in the sense that they expect to find certain strings in <code><a class="external" rel="freelink">chrome://branding/locale/brand.dtd</a></code> and <code><a class="external" rel="freelink">chrome://branding/locale/brand.properties</a></code>. In order to satisfy these dependencies, you can save Firefox's <code>brand.dtd</code>/<code>brand.properties</code> to <code>chrome/locale/branding</code> folder, modify them appropriately, and <a href="/en/Chrome_Registration#locale" title="en/Chrome_Registration#locale">register a locale provider</a> for <code>branding</code> by adding the following line to your chrome manifest:</p>
-<pre class="eval">locale branding en-US chrome/locale/branding/
-</pre>
-<p>The location you put the branding files in doesn't matter, as long as you register it appropriately in the manifest. In addition, a branding content package <a href="/en/Chrome_Registration#content" title="en/Chrome_Registration#content">must be registered</a> to include the application logos:</p>
-<pre class="eval">content branding chrome/branding/
-</pre>
-<p>3 files should be provided in this folder: <em>about.png</em>, <em>icon48.png</em> and <em>icon64.png</em>. See <a class="external" href="http://mxr.mozilla.org/mozilla/source/other-licenses/branding/firefox/content/">Firefox</a> for example.</p>
-<h3 id="Making_Windows_display_correct_application_name_and_icon_when_buttons_are_grouped" name="Making_Windows_display_correct_application_name_and_icon_when_buttons_are_grouped">Making Windows display correct application name and icon when buttons are grouped</h3>
-<p>By default, the task bar on Windows might group windows belonging to the same process into one button to save space. This button is usually called "xulrunner.exe" and has XULRunner's icon. There are two approaches to display the branding of your application instead:</p>
-<ul>
- <li>When compiling XULRunner yourself: create a file module.ver in the directory mozilla/xulrunner/app with the contents:
- <pre>WIN32_MODULE_DESCRIPTION=MyApplication</pre>
- <p>MyApplication should be replaced by whatever you want to see as title of the button. You can also replace xulrunner.ico in the same directory to change XULRunner's icon to the icon of your application.</p>
- </li>
- <li>With a precompiled XULRunner: use xulrunner-stub.exe to start your application but rename it into MyApplication.exe. With XULRunner 1.9 this will make the desired name appear in the task bar (not with XULRunner 1.8 however). Your application's icon can also be added to this executable with a tool like</li>
- <li><a class="external" href="http://www.angusj.com/resourcehacker/">Resource Hacker</a>. To change icon of specific window, see <a class="internal" href="/en/Window_icons" title="En/Window icons">Window icons</a>.</li>
-</ul>
-<h2 id="Reading_command_line_arguments" name="Reading_command_line_arguments">Reading command line arguments</h2>
-<p>See <a href="/en/Chrome/Command_Line" title="en/Chrome/Command_Line">Chrome: Command Line</a>. Command line arguments are handled via nsICommandLineHandler, as usual.</p>
-<h2 id="Preferences_needed_for_file_download_dialogs" name="Preferences_needed_for_file_download_dialogs">Preferences needed for file download dialogs</h2>
-<p>To use the unknown-content-type and file-downloads dialogs from a &lt;browser&gt; element, you need to add the following prefs:</p>
-<pre class="eval">pref("browser.download.useDownloadDir", true);
-pref("browser.download.folderList", 0);
-pref("browser.download.manager.showAlertOnComplete", true);
-pref("browser.download.manager.showAlertInterval", 2000);
-pref("browser.download.manager.retention", 2);
-pref("browser.download.manager.showWhenStarting", true);
-pref("browser.download.manager.useWindow", true);
-pref("browser.download.manager.closeWhenDone", true);
-pref("browser.download.manager.openDelay", 0);
-pref("browser.download.manager.focusWhenStarting", false);
-pref("browser.download.manager.flashCount", 2);
-//
-pref("alerts.slideIncrement", 1);
-pref("alerts.slideIncrementTime", 10);
-pref("alerts.totalOpenTime", 4000);
-pref("alerts.height", 50);
-</pre>
-<p>If you are missing preferences that a dialog requires, you will get the following errors:</p>
-<pre class="eval">Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getBoolPref]
-
-Error: dialog has no properties
-Source File: <a class="external" rel="freelink">chrome://mozapps/content/downloads/u...ontentType.xul</a>
-Line: 1
-</pre>
-<h2 id="Enabling_Password_Manager" name="Enabling_Password_Manager">Enabling Password Manager</h2>
-<p>These preferences seem to be the default in Firefox, however, they are missing in XULRunner. Without these settings Password Manager will not store login details.</p>
-<pre class="eval">pref("signon.rememberSignons", true);
-pref("signon.expireMasterPassword", false);
-pref("signon.SignonFileName", "signons.txt");
-</pre>
-<p>You also need to get an instance of the login manager service, which internally initializes the system:</p>
-<pre class="eval">Components.classes["@mozilla.org/login-manager;1"].getService(Components.interfaces.nsILoginManager);
-</pre>
-<h2 id="Using_Firefox_3_to_run_XULRunner_applications" name="Using_Firefox_3_to_run_XULRunner_applications">Using Firefox 3 to run XULRunner applications</h2>
-<p>Firefox 3 contains the XULRunner runtime. It has an <code>-app</code> command-line switch to run a specified XUL application instead of starting the browser.</p>
-<p>On Windows:</p>
-<pre class="eval"> firefox.exe -app <em>path\to\</em>application.ini
-</pre>
-<p>On Linux:</p>
-<pre class="eval"> firefox -app <em>path/to/</em>application.ini</pre>
-<p>On the Mac:</p>
-<pre class="eval"> /Applications/Firefox.app/Contents/MacOS/firefox-bin -app <em>/path/to/</em>application.ini
-</pre>
-<p>Note that at least on the Mac, you need to use a full path. Partial paths don't seem to work.</p>
-<h2 id="Troubleshooting" name="Troubleshooting">Troubleshooting</h2>
-<h3 id="Window_title_missing" name="Window_title_missing">Window title missing</h3>
-<p>If the title of your XUL <code>&lt;<a href="/en/XUL/window" title="en/XUL/window">window</a>&gt;</code> is blank, even though you specified a title attribute, make sure the extension on your XUL file is <code>.xul</code> rather than <code>.xml</code></p>
-<h2 id="Default_Theme">Default Theme</h2>
-<p>To create a default theme you need to create a folder in the extensions folder with an <a class="external" href="/en/Install_Manifests" title="http://developer.mozilla.org/editor/fckeditor/core/editor/en/Install_Manifests">install.rdf</a> in it.  As of Oct. 2008, the folder needs to have the same name as the one in Firefox 3.0. </p>
-<p><code>\MyApp\Extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\</code>install.rdf</p>
-<p>It should also have an &lt;em:internalName&gt;classic/1.0&lt;/em:internalName&gt; as that is the default theme in Firefox.</p>
-<p>{{ languages( { "ja": "ja/XULRunner_tips", "fr": "fr/Astuces_XULRunner" } ) }}</p>
diff --git a/files/zh-tw/archive/themes/index.html b/files/zh-tw/archive/themes/index.html
deleted file mode 100644
index a440be2e7a..0000000000
--- a/files/zh-tw/archive/themes/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: Themes
-slug: Archive/Themes
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Themes
----
-<p>Archived theme documentation.</p>
-
-<p>{{Listsubpages("/en-US/docs/Archive/Themes", 10)}}</p>
diff --git a/files/zh-tw/archive/web/e4x/index.html b/files/zh-tw/archive/web/e4x/index.html
deleted file mode 100644
index 7ba42421ff..0000000000
--- a/files/zh-tw/archive/web/e4x/index.html
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: E4X
-slug: Archive/Web/E4X
-translation_of: Archive/Web/E4X
----
-<p>This page was auto-generated because a user created a sub-page to this page.</p>
diff --git a/files/zh-tw/archive/web/e4x/processing_xml_with_e4x/index.html b/files/zh-tw/archive/web/e4x/processing_xml_with_e4x/index.html
deleted file mode 100644
index 3c8b4cb442..0000000000
--- a/files/zh-tw/archive/web/e4x/processing_xml_with_e4x/index.html
+++ /dev/null
@@ -1,229 +0,0 @@
----
-title: 使用 E4X 處理 XML
-slug: Archive/Web/E4X/Processing_XML_with_E4X
-translation_of: Archive/Web/E4X/Processing_XML_with_E4X
----
-<p>{{Warning("E4X 已廢棄不用。 It's been disabled by default for chrome in Firefox 17, and completly removed in Firefox 21. 請使用 DOMParser/DOMSerializer 或 a non-native JXON algorithm 替代。")}}</p>
-<h2 id="使用_E4X_處理_XML" name="使用_E4X_處理_XML">使用 E4X 處理 XML</h2>
-<p>JavaScript 在 1.6 版本中首次引入,<strong><a class="internal" href="/zh_tw/E4X" title="zh tw/E4X">E4X</a></strong> 引入原生的 XML 物件以供 JavaScript 語言使用,並新增用來在 JavaScript 的代碼中嵌入照字面表達的 XML 文件的語法。</p>
-<p>E4X 的完整定義可以在 <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm">Ecma-357 規範</a> 中找到。本章提供實踐中的語言概要;但這並不是全面的參考資料。</p>
-<h3 id="相容性的問題" name="相容性的問題">相容性的問題</h3>
-<p>在主要的瀏覽器支援 <code>&lt;script&gt;</code> 元素以前,對於嵌入到頁面裡的 JavaScript 存有一種常見的做法,就是使用 HTML 的註解標籤將其包夾,避免瀏覽器直接把 <code>&lt;script&gt;</code> 裡的 JavaScript 代碼顯示在使用者眼前。如今已無須這麼做,不過仍殘存在部分遺留下來的代碼中。為了向後相容的需要,E4X 預設會忽略註解和 CDATA 區段。你可以給你的 <code>&lt;script&gt;</code> 標籤加上 <code>e4x=1</code> 參數以解除這項限制︰</p>
-<pre>&lt;script type="text/javascript;e4x=1"&gt;
-...
-&lt;/script&gt;
-</pre>
-<h3 id="XML_物件的建立" name="XML_物件的建立">XML 物件的建立</h3>
-<p>E4X 提供兩種建立 XML 物件的方式。第一種是傳入字串給 <code>XML</code> 建構子︰</p>
-<pre class="eval"> var languages = new XML('&lt;languages type="dynamic"&gt;&lt;lang&gt;JavaScript&lt;/lang&gt;&lt;lang&gt;Python&lt;/lang&gt;&lt;/languages&gt;');
-</pre>
-<p>第二種是直接在你的 Script 中嵌入 XML︰</p>
-<pre class="eval"> var languages = &lt;languages type="dynamic"&gt;
- &lt;lang&gt;JavaScript&lt;/lang&gt;
- &lt;lang&gt;Python&lt;/lang&gt;
- &lt;/languages&gt;;
-</pre>
-<p>在這兩種情況裡,產生都會是 E4X <code>XML</code> 物件,他提供了方便的語法用以存取並更新其內夾藏著的資料。</p>
-<p>XML 物件在外觀上和行為上都和普通的 JavaScript 物件很類似,但有兩件事並不相同。E4X 引入的新語法只能用在 E4X XML 物件上。雖然新語法被設計成對 JavaScript 設計者而言較熟悉的形式,但 E4X 並不提供從 XML 到原生 JavaScript 物件的完整對應;只是看起來很像而已。</p>
-<p>可以把變數加入到 XML 的字面中用來建立元素的名稱(或是內容)。</p>
-<pre>var h = 'html';
-var text = "Here's some text";
-var doc = &lt;{h}&gt;&lt;body&gt;{text}&lt;/body&gt;&lt;/{h}&gt;;
-alert(doc.toXMLString());
-// 產生的是
-&lt;html&gt;
- &lt;body&gt;Here's some text&lt;/body&gt;
-&lt;/html&gt;
-</pre>
-<h3 id="屬性的運用" name="屬性的運用">屬性的運用</h3>
-<p>當你需要動態的建立標記的時候,XML 字面語法明顯更勝 <code>XML</code> 建構子。使用 E4X 可輕易的在標記中嵌入動態值。只需使用花括弧 ({}) 包夾要建立的屬性值,並省略一般會加上的引號標記,變數和表達式即可用於建立屬性值,如同下例所示︰</p>
-<pre class="eval"> var a = 2;
- var b = &lt;foo bar={a}&gt;"hi"&lt;/foo&gt;;
-</pre>
-<p>開始執行時,變數的值會被求出,並自動在適當的位置加上引號。前面的例子產生的 XML 物件看起來就像這樣︰<code>&lt;foo bar="2"&gt;"hi"&lt;/foo&gt;</code>。</p>
-<p>在屬性的替換方面,雙引號會被跳脫成 &amp;quot;,單引號則按平常方式處理。</p>
-<pre class="eval">var b = 'He said "Don\'t go there."';
-var el = &lt;foo a={b}/&gt;;
-alert(el.toXMLString());
-// 產生︰&lt;foo a="He said &amp;quot;Don't go there.&amp;quot;"/&gt;
-</pre>
-<p>小於和 &amp; 符號也會被跳脫成各自的等價實體。由於大於符號不會被跳脫,因此如果包含了 <a class="internal" href="/zh_tw/DOM/CDATASection" title="zh tw/DOM/CDATASection">CDATA</a> 結束序列 (]]&gt;),就有可能產生 XML 錯誤。</p>
-<p>通常不會直接在字面(或變數)的屬性內容之中作修改(例如,<code>bar="a{var1}{var2}"</code>)。如果有必須使用 JavaScript 表達式計算變數來替代的內容的話(例如,<code>bar={'a'+var1+var2}</code>),在元素字面之前先定義新的變數,在變數中包含完整的修改內容,然後在字面中含入這個變數,或在字面之後取回屬性並將其修改(見下)。</p>
-<p>可如同屬性值一般的修改屬性的名稱︰</p>
-<pre>var a = 'att';
-var b = &lt;b {a}='value'/&gt;;
-alert(b);
-// Gives:
-&lt;b att="value"/&gt;
-
-</pre>
-<p>…但之後就不能修改表達式(例如,&lt;b {a}&gt;)。</p>
-<p>執行上面的例子之後,參考 XML 物件的語言變數與 XML 文件中的 <code>&lt;languages&gt;</code> 結點一致。這個結點只有一個屬性︰type,這個屬性可用各種方式來存取並更新︰</p>
-<pre class="eval"> alert(languages.@type); // 警報 "dynamic"
- languages.@type = "agile";
- alert(languages.@type); // 警報 "agile"
-</pre>
-<pre class="eval"> alert(languages.toString());
- /* 警報:
- &lt;languages type="agile"&gt;&lt;lang&gt;JavaScript&lt;/lang&gt;&lt;lang&gt;Python&lt;/lang&gt;&lt;/languages&gt;
- */
-</pre>
-<p>注意,如果想要把取回的屬性與其他的字串作比較,就有必要先把屬性作轉換,即使屬性有可能會在其他地方被轉換成字串(例如插入到文字框中)。</p>
-<pre class="eval">if (<a class="link-mailto" href="mailto:languages.@type.toString()" rel="freelink">languages.@type.toString()</a> === 'agile') {
- ...
-}
-</pre>
-<h3 id="XML_物件的運用" name="XML_物件的運用">XML 物件的運用</h3>
-<p>XML 物件提供一系列的方法用來查閱並更新其中的內容。這類物件亦支援 JavaScript 的點 (.) 和 <code>[]</code> 符號,但不是用來存取物件的屬性,E4X 覆蓋了這些運算子,改用來存取元素的子結點︰</p>
-<pre>var person = &lt;person&gt;
- &lt;name&gt;Bob Smith&lt;/name&gt;
- &lt;likes&gt;
- &lt;os&gt;Linux&lt;/os&gt;
- &lt;browser&gt;Firefox&lt;/browser&gt;
- &lt;language&gt;JavaScript&lt;/language&gt;
- &lt;language&gt;Python&lt;/language&gt;
- &lt;/likes&gt;
-&lt;/person&gt;;
-
-alert(person.name); // Bob Smith
-alert(person['name']); // Bob Smith
-alert(person.likes.browser); // Firefox
-alert(person['likes'].browser); // Firefox
-</pre>
-<p>如果你使用多於一個以上的元素來存取的話,你會得到 <code>XMLList</code>︰</p>
-<pre>alert(person.likes.language.length()); // 2
-</pre>
-<p>和 DOM 一樣,<code>*</code> 可以用來存取所有的子結點︰</p>
-<pre>alert(person.likes.*.length()); // 4
-</pre>
-<p><code>.</code> 運算子會直接存取指定結點的子結點,<code>..</code> 運算子則會存取所有的子結點,不論嵌入的有多深︰</p>
-<pre>alert(person..*.length()); // 11
-</pre>
-<p><code>length()</code> 方法在此返回 11,因為元素結點和文字結點兩者都被包含在 <code>XMLList</code> 的結果中。</p>
-<p>用來表示 XML 元素的物件提供一系列實用的方法,部分方法的解說見下︰<span class="comment">TODO: Add all of the methods to the JavaScript reference, link from here</span></p>
-<pre>alert(person.name.text()) // Bob Smith
-
-var xml = person.name.toXMLString(); // 內含 XML 的字串
-
-var personCopy = person.copy(); // XML 物件的深層複製
-
-var child = person.child(1); // 第二個子結點;目前是 &lt;likes&gt; 元素
-</pre>
-<h3 id="XMLLists_的運用" name="XMLLists_的運用">XMLLists 的運用</h3>
-<p>除了 XML 物件以外,E4X 也引入了 <code>XMLList</code> 物件。<code>XMLList</code> 是用來表示附有編號的 XML 物件的集合;例如,元素的列表。接續上面的例子,我們可以在頁面上存取 <code>XMLList</code> 的 <code>&lt;lang&gt;</code> 元素如下︰</p>
-<pre class="eval"> var langs = languages.lang;
-</pre>
-<p><code>XMLList</code> 提供 <code>length()</code> 方法,可用來查出內含元素的數目︰</p>
-<pre class="eval"> alert(languages.lang.length());
-</pre>
-<p>注意,有別於 JavaScript 陣列的 length 屬性,這個 length 是方法,不是屬性,而且必須使用 <code>length()</code> 來呼叫。</p>
-<p>我們可以迭代所有相配的元素,就像這樣︰</p>
-<pre class="eval"> for (var i = 0; i &lt; languages.lang.length(); i++) {
- alert(languages.lang[i].toString());
- }
-</pre>
-<p>在此我們使用同一個語法存取陣列中的已編號項。雖然這部分很類似普通的陣列,但 <code>XMLList</code> 並不支援 <code>Array</code> 的方法,如 <code>forEach</code>,且陣列的通用功能,如 <code>Array.forEach()</code> 也不相容於 <code>XMLList</code> 物件。</p>
-<p>我們也可以使用在 JavaScript 1.6 中所引入的 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_參考/語法/for_each...in" title="zh tw/Core JavaScript 1.5 參考/語法/for each...in">for each...in 語法</a>,他已支援 E4X 的部分︰</p>
-<pre class="eval"> for each (var lang in languages.lang) {
- alert(lang);
- }
-</pre>
-<p><code>for each...in</code> 也可以用在普通的 JavaScript 物件,迭代出內含在物件中的值(不是鍵)。如同 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_參考/語法/for...in" title="zh tw/Core JavaScript 1.5 參考/語法/for...in">for...in</a>,<a href="/en/Core_JavaScript_1.5_Reference/Statements/for...in#Description" title="en/Core_JavaScript_1.5_Reference/Statements/for...in#Description">非常不建議</a> 和陣列一起使用。</p>
-<p>可以使用下面的 XML 字面語法來建立 <code>XMLList</code>,而無須建立格式正確的 XML 文件︰</p>
-<pre class="eval"> var xmllist = &lt;&gt;
- &lt;lang&gt;JavaScript&lt;/lang&gt;
- &lt;lang&gt;Python&lt;/lang&gt;
- &lt;/&gt;;
-</pre>
-<p><code>+=</code> 運算子可用來把新的元素附加到文件中的 <code>XMLList</code>︰</p>
-<pre class="eval"> languages.lang += &lt;lang&gt;Ruby&lt;/lang&gt;;
-</pre>
-<p>注意,有別於由普通的 DOM 方法所返回的結點列表,<code>XMLList</code> 只是靜態的,而且不會自動更新以反映在 DOM 中的改變。如果你在既有的 <code>XML</code> 物件底下建立 <code>XMLList</code> 作為子集,<code>XMLList</code> 並不會反映 XML 物件的改變;你需要重新建立 XMLList 以取得最近的更新︰</p>
-<pre class="eval"> var languages = &lt;languages&gt;
- &lt;lang&gt;JavaScript&lt;/lang&gt;
- &lt;lang&gt;Python&lt;/lang&gt;
- &lt;/languages&gt;;
-
- var lang = languages.lang;
- alert(lang.length()); // 警報 2
-
- languages.lang += &lt;lang&gt;Ruby&lt;/lang&gt;;
- alert(lang.length()); // 仍舊警報 2
-
- lang = languages.lang; // 重新建立 XMLList
- alert(lang.length()); // 警報 3
-</pre>
-<h3 id="搜尋和過濾" name="搜尋和過濾">搜尋和過濾</h3>
-<p>E4X 提供特殊的運算子用來在通過指定條件的文件內部選取結點。這種過濾動作是由括弧裡面的表達式所指定的︰</p>
-<pre>var html = &lt;html&gt;
- &lt;p id="p1"&gt;First paragraph&lt;/p&gt;
- &lt;p id="p2"&gt;Second paragraph&lt;/p&gt;
-&lt;/html&gt;;
-
-alert(html.p.(@id == "p1")); // 警報 "First paragraph"
-</pre>
-<p>在表達式前面比對路徑的結點(在本例中即 p 元素)會在表達式求值之前先加上作用域的限縮。就如同已經用 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_參考/語法/with" title="zh tw/Core JavaScript 1.5 參考/語法/with">with 語法</a> 指定了一樣。</p>
-<p>因此,過濾器也可以依據在目前元素中內含的單一結點的值來執行︰</p>
-<pre>var people = &lt;people&gt;
- &lt;person&gt;
- &lt;name&gt;Bob&lt;/name&gt;
- &lt;age&gt;32&lt;/age&gt;
- &lt;/person&gt;
- &lt;person&gt;
- &lt;name&gt;Joe&lt;/name&gt;
- &lt;age&gt;46&lt;/age&gt;
- &lt;/person&gt;
-&lt;/people&gt;;
-
-alert(people.person.(name == "Joe").age); // 警報 46
-</pre>
-<p>也可以使用 JavaScript 函數當作過濾器的表達式︰</p>
-<pre>function over40(i) {
- return i &gt; 40;
-}
-
-alert(people.person.(over40(parseInt(age))).name); // 警報 Joe
-</pre>
-<h3 id="命名空間的處理" name="命名空間的處理">命名空間的處理</h3>
-<p>E4X 也全面考慮到命名空間。任何代表結點或屬性的 XML 物件都提供了可返回 <code>QName</code> 物件的 <code>name()</code> 方法,使加上命名空間的元素的查詢更為容易。</p>
-<h4 id="預設" name="預設">預設</h4>
-<pre>default xml namespace = "http://www.w3.org/1999/xhtml";
-// 目前還沒有必要在 HTML 標記裡指定命名空間
-var xhtml = &lt;html&gt;&lt;head&gt;&lt;title&gt;&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
- &lt;p&gt;text&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;;
-alert(xhtml.head); // 目前還沒有必要在此處的子元素中指定命名空間</pre>
-<h4 id="非預設" name="非預設">非預設</h4>
-<pre>var xhtml = &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
- &lt;head&gt;
- &lt;title&gt;Embedded SVG demo&lt;/title&gt;
- &lt;/head&gt;
- &lt;body&gt;
- &lt;h1&gt;Embedded SVG demo&lt;/h1&gt;
- &lt;svg xmlns="http://www.w3.org/2000/svg"
- viewBox="0 0 100 100"&gt;
- &lt;circle cx="50"
- cy="50"
- r="20"
- stroke="orange"
- stroke-width="2px"
- fill="yellow" /&gt;
- &lt;/svg&gt;
- &lt;/body&gt;
-&lt;/html&gt;;
-
-alert(xhtml.name().localName); // 警報 "html"
-alert(xhtml.name().uri); // 警報 "http://www.w3.org/1999/xhtml"
-</pre>
-<p>若要存取非預設命名空間內部的元素,首先建立 <code>Namespace</code> 物件把特定的命名空間的 URI 加以封裝︰</p>
-<pre>var svgns = new Namespace('http://www.w3.org/2000/svg');
-</pre>
-<p>目前可以在 E4X 中使用 <code>namespace::localName</code> 代替一般的元素指定子來作查詢︰</p>
-<pre>var svg = xhtml..svgns::svg;
-alert(svg); // 顯示文件中的 &lt;svg&gt; 部分
-</pre>
-<h2 id="參閱" name="參閱">參閱</h2>
-<ul>
- <li><a class="internal" href="/zh_tw/E4X" title="zh tw/E4X">E4X</a></li>
- <li><a class="internal" href="/zh_tw/E4X_教學" title="zh tw/E4X 教學">E4X 教學</a></li>
-</ul>
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X", "zh-cn": "cn/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X", "fr": "fr/Guide_JavaScript_1.5/Traitement_de_XML_avec_E4X", "ja": "ja/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X" } ) }}</p>
diff --git a/files/zh-tw/archive/web/index.html b/files/zh-tw/archive/web/index.html
deleted file mode 100644
index 6f60d315ff..0000000000
--- a/files/zh-tw/archive/web/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: Archived open Web documentation
-slug: Archive/Web
-tags:
- - Archived
- - NeedsTranslation
- - TopicStub
- - Web
-translation_of: Archive/Web
----
-<p>The documentation listed below is archived, obsolete material about open Web topics.</p>
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/archive/web_standards/index.html b/files/zh-tw/archive/web_standards/index.html
deleted file mode 100644
index 1fed929d5f..0000000000
--- a/files/zh-tw/archive/web_standards/index.html
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: Web Standards
-slug: Archive/Web_Standards
-translation_of: Archive/Web_Standards
----
-<div><strong>In progress. Web standards</strong> are carefully designed to deliver the greatest benefits to the greatest number of web users while ensuring the long-term viability of any document published on the Web. Designing and building with these standards simplifies and lowers the cost of production, while delivering sites that are accessible to more people and more types of Internet devices. Sites developed along these lines will continue to function correctly as traditional desktop browsers evolve, and as new Internet devices come to market. {{ Ref(1) }}</div>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h4 id="Documentation" name="Documentation"><a href="https://developer.mozilla.org/en-US/docs/tag/Web%20Standards" title="https://developer.mozilla.org/en-US/docs/tag/Web%20Standards">Documentation</a></h4>
-
- <dl>
- <dt><a href="/en/Migrate_apps_from_Internet_Explorer_to_Mozilla" title="en/Migrate_apps_from_Internet_Explorer_to_Mozilla">Migrate apps from Internet Explorer to Mozilla</a></dt>
- <dd><small>Ever have trouble getting your Internet Explorer-specific Web applications to work with Mozilla? This article covers common issues associated with migrating applications to the open source Mozilla-based browser.</small></dd>
- <dt><a href="/en/Using_Web_Standards_in_your_Web_Pages" title="en/Using_Web_Standards_in_your_Web_Pages">Using Web Standards in your Web Pages</a></dt>
- <dd><small>This article provides an overview of the process for upgrading the content of your web pages to conform to the W3C web standards.</small></dd>
- <dt><a href="/en/Choosing_Standards_Compliance_Over_Proprietary_Practices" title="en/Choosing_Standards_Compliance_Over_Proprietary_Practices">Choosing Standards Compliance Over Proprietary Practices</a></dt>
- <dd><small>In the development world, there is a need for standards because applications are designed across multiple development groups.</small></dd>
- <dt><a href="/en/The_Business_Benefits_of_Web_Standards" title="en/The_Business_Benefits_of_Web_Standards">The Business Benefits of Web Standards</a></dt>
- <dd><small>This article discusses how adhering to web standards, and leaving behind proprietary markup and technologies, can contribute to a company's business goals.</small></dd>
- </dl>
-
- <p><span class="alllinks"><a href="/Special:Tags?tag=Web_Standards&amp;language=en" title="Special:Tags?tag=Web_Standards&amp;language=en">View All...</a></span></p>
- </td>
- <td>
- <h4 id="Community" name="Community">Community</h4>
-
- <ul>
- <li>View Mozilla forums...</li>
- </ul>
-
- <p>{{ DiscussionList("dev-web-development", "mozilla.dev.web-development") }}</p>
-
- <ul>
- <li><a class="external" href="http://webstandards.org/">The Web Standards Project</a></li>
- <li><a class="external" href="http://webdevfeedhouse.com/">WebDev FeedHouse</a></li>
- <li><a href="/en/Web_Standards/Community" title="en/Web_Standards/Community">Other community links...</a></li>
- </ul>
-
- <h4 id="Tools" name="Tools">Tools</h4>
-
- <ul>
- <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug extension</a></li>
- <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer extension</a></li>
- <li><a class="external" href="http://validator.w3.org/">Markup validation service (W3C)</a></li>
- <li><a class="external" href="http://jigsaw.w3.org/css-validator/">CSS validation service (W3C)</a></li>
- </ul>
-
- <p><span class="alllinks"><a href="/Special:Tags?tag=Web_Standards:Tools&amp;language=en" title="Special:Tags?tag=Web_Standards:Tools&amp;language=en">View All...</a></span></p>
-
- <h4 id="Examples" name="Examples">Examples</h4>
-
- <ul>
- <li><a class="external" href="http://www.mozilla.org/start/1.0/demos.html">Mozilla 1.0 Demos</a> - showing off what can be done with Web standards.</li>
- <li><a class="external" href="http://www.mozilla.org/newlayout/demo/">Gecko Demos</a></li>
- <li><a class="external" href="http://www.csszengarden.com/">css Zen Garden</a></li>
- <li><a class="external" href="http://www.meyerweb.com/eric/css/edge/">Eric Meyers's css/edge</a></li>
- <li><a class="external" href="http://dmoz.org/Computers/Programming/Languages/JavaScript/W3C_DOM/Demos/">W3C DOM Demos</a></li>
- </ul>
-
- <h4 id="Related_Topics" name="Related_Topics">Related Topics</h4>
-
- <dl>
- <dd><a href="/en/CSS" title="en/CSS">CSS</a>, <a href="/en/DHTML" title="en/DHTML">DHTML</a>, <a href="/en/HTML" title="en/HTML">HTML</a>, <a href="/en/Web_Development" title="en/Web_Development">Web Development</a>, <a href="/en/XHTML" title="en/XHTML">XHTML</a>, <a href="/en/XML" title="en/XML">XML</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<hr>
-<p><small>{{ endnote(1) }} - <a class="external" href="http://webstandards.org/">The Web Standards Project</a></small></p>
-
-<p>{{ languages( { "ca": "ca/Est\u00e0ndards_web", "de": "de/Web-Standards", "es": "es/Est\u00e1ndares_Web", "fr": "fr/Standards_du_Web", "ja": "ja/Web_Standards", "ko": "ko/Web_Standards", "pl": "pl/Standardy_WWW", "pt": "pt/Normas_Web" } ) }}</p>
diff --git a/files/zh-tw/archive/web_standards/rdf_in_fifty_words_or_less/index.html b/files/zh-tw/archive/web_standards/rdf_in_fifty_words_or_less/index.html
deleted file mode 100644
index c9d003f911..0000000000
--- a/files/zh-tw/archive/web_standards/rdf_in_fifty_words_or_less/index.html
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: 50 字解說 RDF
-slug: Archive/Web_Standards/RDF_in_Fifty_Words_or_Less
-translation_of: Archive/Web_Standards/RDF_in_Fifty_Words_or_Less
----
-<p> </p>
-
-<p>好吧,可能比 50 字還要多一點,但重點十分簡單(並且已經幫諸位只想看重點的成功人士標為<strong>粗體</strong>)。<a href="/en/RDF" title="en/RDF">資源描述架構</a>,或稱為「RDF」(Resource Description Framework),其實是指兩件事。</p>
-
-<blockquote><strong>首先,RDF 是種圖像式模型,用以描述網路上的<em>資源</em>(如網頁內容、電子郵件訊息等),以及這些資源之間的關係。</strong></blockquote>
-
-<p>不過這到底是什麼意思?對 Mozilla 開發者來說,這代表 RDF 資料模型(就是那個「圖像」)可以用來組織、整合網路上的資源。</p>
-
-<p>舉「書籤」為例。目前大部分的網頁瀏覽器讓你將書籤歸入資料夾的樹狀結構,每個書籤則指向一個網頁的 <strong>URI</strong>(通用資源定義符,<strong>U</strong>niform <strong>R</strong>esource <strong>I</strong>dentifier)。</p>
-
-<p>但網頁只是眾多網路資源的其中一項,其他還有如電子郵件內容、新聞群組的訊息(或整個新聞群組)、搜尋引擎的探索結果... 等等。基本上,若說這些其他資源不能存入書籤、與其他書籤擺在一起以資料夾整理,也沒什麼道理。甚至還應該可以建立一個「智慧型」資料夾,點選後就動態找出符合某些條件的內容。</p>
-
-<p>一個「書籤」尚且應有眾多相關的屬性:您可能想自己定義一些書籤的「分類規則」、依據麥金塔的「hot」、「warm」、「cool」色彩標準上色;又或許,您想標示某個書籤與另一個書籤有關,還可能想將其同時放入多個不同的資料夾。</p>
-
-<p>RDF 圖像提供絕佳資料模型,可以建立上述的「通用」書籤服務:這種圖像可以指向任意資源、亦能以幾乎任何想得到的方式組織。</p>
-
-<p>別那麼快下結論,還有...</p>
-
-<blockquote><strong>第二,RDF 是種串接式的語法。這種語法讓圖像式的資料模型可以透過「代理人」溝通。</strong></blockquote>
-
-<p>這又是什麼意思?基本上,這代表 RDF 資料模型可以跨越網路來交流,其圖像內容還可以在收到遠端服務的資訊時動態變更。</p>
-
-<p>我們再回到書籤的例子。就說我有個書籤的「資料夾」,其實指向我的電子郵件收件匣:一旦點選這個資料夾,哇喔,所有昨晚收下來的郵件都列出來了!</p>
-
-<p>不過這是怎麼辦到的?其實這個「收件資料夾」指向一個網路資源,此資源內含更多的 RDF 來拓展資源版圖。此「網路資源」為一個指向 CGI 的 URI(像是 <code><span class="nowiki">http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&amp;folder=inbox</span></code>),此 CGI 會建立串接 RDF、就像是把一張圖片以 <a href="/en/XML" title="en/XML">XML</a> 方式表達一樣:</p>
-
-<pre> &lt;rdf:RDF
- xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#"
- xmlns:sm="http://www.mozilla.org/smart-mail/schema#"&gt;
- &lt;rdf:Description
- about="http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&amp;folder=inbox"&gt;
- &lt;sm:message id="4025293"&gt;
- &lt;sm:recipient&gt;
- Chris Waterson "waterson@netscape.com"
- &lt;/sm:recipient&gt;
- &lt;sm:sender&gt;
- Aunt Helga "helga@netcenter.net"
- &lt;/sm:sender&gt;
- &lt;sm:received-by&gt;x-wing.mcom.com&lt;/sm:received-by&gt;
- &lt;sm:subject&gt;Great recipe for Yam Soup!&lt;/sm:subject&gt;
- &lt;sm:body&gt;
- http://www.mozilla.org/smart-mail/get-body.cgi?id=4025293
- &lt;/sm:body&gt;
- &lt;/sm:message&gt;
- &lt;sm:message id="4025294"&gt;
- &lt;sm:recipient&gt;
- Chris Waterson "waterson@netscape.com"
- &lt;/sm:recipient&gt;
- &lt;sm:sender&gt;
- Sarah Waterson "waterson.2@postbox.acs.ohio-state.edu"
- &lt;/sm:sender&gt;
- &lt;sm:received-by&gt;x-wing.mcom.com&lt;/sm:received-by&gt;
- &lt;sm:subject&gt;We won our ultimate game&lt;/sm:subject&gt;
- &lt;sm:body&gt;
- http://www.mozilla.org/smart-mail/get-body.cgi?id=4025294
- &lt;/sm:body&gt;
- &lt;/sm:message&gt;
- &lt;/rdf:Description&gt;
- &lt;/rdf:RDF&gt;
-</pre>
-
-<p>收到上面這堆怪物之後,RDF 引擎會將 RDF 資料放在圖像中的適當位置。負責實際繪出書籤介面的 Tree 控制項此時將收到通知,知道應該繪出 Aunt Helga 關於 Yam Soup 之信件的一些圖示。</p>
-
-<p>其實,這正是 <a class="external" href="http://www.mozilla.org/mailnews/">SmartMail</a> 運作的原理。</p>
-
-<p>聯絡: <a class="link-mailto" href="mailto:waterson@netscape.com">Chris Waterson</a> (<a class="link-mailto" href="mailto:waterson@netscape.com" rel="freelink">waterson@netscape.com</a>)</p>
-
-<div class="originaldocinfo">
-<h2 id="Original_Document_Information" name="Original_Document_Information">原始文件資訊</h2>
-
-<ul>
- <li>作者: <a class="link-mailto" href="mailto:waterson@netscape.com">Chris Waterson</a></li>
- <li>最後更新: November 19, 1998</li>
- <li>著作權資訊: Copyright (C) <a class="link-mailto" href="mailto:waterson@netscape.com">Chris Waterson</a></li>
-</ul>
-</div>
-
-<p><span class="comment">Interwiki Language Links</span></p>
-
-<p>{{ languages( { "fr": "fr/RDF_en_cinquante_mots", "it": "it/RDF_in_cinquanta_parole_o_meno", "ja": "ja/RDF_in_Fifty_Words_or_Less", "ko": "ko/RDF_in_Fifty_Words_or_Less", "zh-TW": "zh_tw/50_字解說_RDF" } ) }}</p>
diff --git a/files/zh-tw/code_snippets/index.html b/files/zh-tw/code_snippets/index.html
deleted file mode 100644
index 095e91dae2..0000000000
--- a/files/zh-tw/code_snippets/index.html
+++ /dev/null
@@ -1,190 +0,0 @@
----
-title: Code snippets
-slug: Code_snippets
-tags:
- - Add-ons
- - Code snippets
- - Extensions
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Add-ons/Code_snippets
----
-<p>This is a quick list of useful code snippets (small code samples) available for developers of extensions for the various Mozilla applications. Many of these samples can also be used in XULRunner applications, as well as in actual Mozilla code itself.</p>
-<p>These examples demonstrate how to accomplish basic tasks that might not be immediately obvious.</p>
-<h2 id="General" name="General">General</h2>
-<dl>
- <dt>
- <a href="/en-US/docs/Code_snippets/From_articles" title="/en-US/docs/Code_snippets/From_articles">Examples and demos from MDN articles</a></dt>
- <dd>
- A collection of examples and demos from articles.</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Windows" title="/en-US/docs/Code_snippets/Windows">Windows code</a></dt>
- <dd>
- Opening and manipulating windows</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Toolbar" title="/en-US/docs/Code_snippets/Toolbar">Toolbar</a></dt>
- <dd>
- Toolbar related code</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Sidebar" title="/en-US/docs/Code_snippets/Sidebar">Sidebar</a></dt>
- <dd>
- Sidebar related code</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/XML" title="/en-US/docs/Code_snippets/XML">XML</a></dt>
- <dd>
- Code used to parse, write, manipulate, etc. XML</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/File_I_O" title="/en-US/docs/Code_snippets/File_I/O">File I/O</a></dt>
- <dd>
- Code used to read, write and process files</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Drag_&amp;_Drop" title="/en-US/docs/Code_snippets/Drag_&amp;_Drop">Drag &amp; Drop</a></dt>
- <dd>
- Code used to setup and handle drag and drop events</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Dialogs_and_Prompts" title="/en-US/docs/Code_snippets/Dialogs_and_Prompts">Dialogs</a></dt>
- <dd>
- Code used to display and process dialog boxes</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Alerts_and_Notifications" title="/en-US/docs/Code snippets/Alerts and Notifications">Alerts and Notifications </a></dt>
- <dd>
- Modal and non-modal ways to notify users</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Preferences" title="/en-US/docs/Code_snippets/Preferences">Preferences</a></dt>
- <dd>
- Code used to read, write, and modify preferences</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/JS_XPCOM" title="/en-US/docs/Code_snippets/JS_XPCOM">JS XPCOM</a></dt>
- <dd>
- Code used to define and call XPCOM components in JavaScript</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Running_applications" title="/en-US/docs/Code_snippets/Running_applications">Running applications</a></dt>
- <dd>
- Code used to run other applications</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Canvas" title="/en-US/docs/Code_snippets/Canvas"><code>&lt;canvas&gt;</code> related</a></dt>
- <dd>
- <a href="/en-US/docs/HTML/Canvas" title="/en-US/docs/HTML/Canvas">WHAT WG Canvas</a>-related code</dd>
- <dt>
- <a href="/en-US/docs/Signing_a_XPI" title="/en-US/docs/Signing_a_XPI">Signing a XPI</a></dt>
- <dd>
- How to sign an XPI with PKI</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Threads" title="/en-US/docs/Code_snippets/Threads">Threads</a></dt>
- <dd>
- Performing background operations and delaying execution while background operations complete</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Miscellaneous" title="/en-US/docs/Code_snippets/Miscellaneous">Miscellaneous</a></dt>
- <dd>
- Miscellaneous useful code fragments</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/HTML_to_DOM" title="/en-US/docs/Code_snippets/HTML_to_DOM">HTML to DOM</a></dt>
- <dd>
- Using a hidden browser element to parse HTML to a window's DOM</dd>
-</dl>
-<h2 id="Browser-oriented_code" name="Browser-oriented_code">JavaScript libraries</h2>
-<p>Here are some JavaScript libraries that may come in handy.</p>
-<dl>
- <dt>
- <a href="/en-US/docs/Code_snippets/StringView" title="/en-US/docs/Code_snippets/StringView">StringView</a></dt>
- <dd>
- A library that implements a <code>StringView</code> view for <a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a>. This lets you access data in typed arrays using C-like string functions.</dd>
-</dl>
-<h2 id="Browser-oriented_code" name="Browser-oriented_code">Browser-oriented code</h2>
-<dl>
- <dt>
- <a href="/en-US/docs/Code_snippets/Tabbed_browser" title="/en-US/docs/Code_snippets/Tabbed_browser">Tabbed browser code</a> (Firefox/SeaMonkey)</dt>
- <dd>
- Basic operations, such as page loading, with the tabbed browser, which is the heart of Mozilla's browser applications</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Cookies" title="/en-US/docs/Code_snippets/Cookies">Cookies</a></dt>
- <dd>
- Reading, writing, modifying, and removing cookies</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Page_Loading" title="/en-US/docs/Code_snippets/Page_Loading">Page Loading</a></dt>
- <dd>
- Code used to load pages, reload pages, and listen for page loads</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" title="/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages">Interaction between privileged and non-privileged code</a></dt>
- <dd>
- How to communicate from extensions to websites and vice-versa.</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Downloading_Files" title="/en-US/docs/Code_snippets/Downloading_Files">Downloading Files</a></dt>
- <dd>
- Code to download files, images, and to monitor download progress</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Password_Manager" title="/en-US/docs/Code_snippets/Password_Manager">Password Manager</a></dt>
- <dd>
- Code used to read and write passwords to/from the integrated password manager</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Bookmarks" title="/en-US/docs/Code_snippets/Bookmarks">Bookmarks</a></dt>
- <dd>
- Code used to read and write bookmarks</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/JavaScript_Debugger_Service" title="/en-US/docs/Code_snippets/JavaScript_Debugger_Service">JavaScript Debugger Service</a></dt>
- <dd>
- Code used to interact with the JavaScript Debugger Service</dd>
-</dl>
-<h2 id="SVG" name="SVG">SVG</h2>
-<dl>
- <dt>
- <a href="/en-US/docs/Code_snippets/SVG_General" title="/en-US/docs/Code_snippets/SVG_General">General</a></dt>
- <dd>
- General information and utilities</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/SVG_Animation" title="/en-US/docs/Code_snippets/SVG_Animation">SVG Animation</a></dt>
- <dd>
- Animate SVG using JavaScript and SMIL</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/SVG_Interacting_with_script" title="/en-US/docs/Code_snippets/SVG_Interacting_with_script">SVG Interacting with Script</a></dt>
- <dd>
- Using JavaScript and DOM events to create interactive SVG</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Embedding_SVG" title="/en-US/docs/Code_snippets/Embedding_SVG">Embedding SVG in HTML and XUL</a></dt>
- <dd>
- Using SVG to enhance HTML or XUL based markup</dd>
-</dl>
-<h2 id="XUL_Widgets" name="XUL_Widgets">XUL Widgets</h2>
-<dl>
- <dt>
- <a href="/en-US/docs/Code_snippets/HTML_in_XUL_for_rich_tooltips" title="/en-US/docs/Code_snippets/HTML_in_XUL_for_rich_tooltips">HTML in XUL for Rich Tooltips</a></dt>
- <dd>
- Dynamically embed HTML into a XUL element to attain markup in a tooltip</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Label_and_description" title="/en-US/docs/Code_snippets/Label_and_description">Label and description</a></dt>
- <dd>
- Special uses and line breaking examples</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Tree" title="/en-US/docs/Code_snippets/Tree">Tree</a></dt>
- <dd>
- Setup and manipulation of trees using XUL and JS</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Scrollbar" title="/en-US/docs/Code_snippets/Scrollbar">Scrollbar</a></dt>
- <dd>
- Changing style of scrollbars. Applies to scrollbars in browser and iframe as well.</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Autocomplete" title="/en-US/docs/Code_snippets/Autocomplete">Autocomplete</a></dt>
- <dd>
- Code used to enable form autocomplete in a browser</dd>
- <dt>
- <a href="/en-US/docs/Code_snippets/Boxes" title="/en-US/docs/Code_snippets/Boxes">Boxes</a></dt>
- <dd>
- Tips and tricks when using boxes as containers</dd>
- <dt>
- <a class="internal" href="/en-US/docs/Code_snippets/Tabbox" title="/en-US/docs/Code snippets/Tabbox">Tabbox</a></dt>
- <dd>
- Removing and manipulating tabs in a tabbox</dd>
-</dl>
-<h2 id="Windows-specific" name="Windows-specific">Windows-specific</h2>
-<dl>
- <dt>
- <a href="/en-US/docs/Code_snippets/Finding_Window_Handles" title="/en-US/docs/Code_snippets/Finding_Window_Handles">Finding Window Handles (HWND)</a> (Firefox)</dt>
- <dd>
- How to use Windows API calls to find various kinds of Mozilla window handles. Window handles can be used for IPC and Accessibility purposes.</dd>
- <dt>
- <a href="/en-US/docs/Accessing_the_Windows_Registry_Using_XPCOM" title="/en-US/docs/Accessing_the_Windows_Registry_Using_XPCOM">Using the Windows Registry with XPCOM</a></dt>
- <dd>
- How to read, write, modify, delete, enumerate, and watch registry keys and values.</dd>
-</dl>
-<h2 id="External_links" name="External_links">External links</h2>
-<p>The content at <a class="external" href="http://kb.mozillazine.org/Category:Example_code">MozillaZine Example Code</a> is slowly being moved here, but you can still find useful examples there for now.</p>
diff --git a/files/zh-tw/code_snippets/tabbed_browser/index.html b/files/zh-tw/code_snippets/tabbed_browser/index.html
deleted file mode 100644
index b8a3b14fff..0000000000
--- a/files/zh-tw/code_snippets/tabbed_browser/index.html
+++ /dev/null
@@ -1,398 +0,0 @@
----
-title: Tabbed browser
-slug: Code_snippets/Tabbed_browser
-translation_of: Archive/Add-ons/Tabbed_browser
----
-<p>您將在此尋獲協助您運用Firefox的多頁籤瀏覽器的一些程式碼片段,註解將提示您應該在什麼地方插入您自己的程式碼。</p>
-<p> </p>
-<p>一般來說這些片段會包含其初始化的程式碼。基本假設是這些程式碼片段將於瀏覽器視窗內容中執行,最佳做法是以<a href="/en/Extension_Frequently_Asked_Questions#Why_doesn.27t_my_script_run_properly.3F" title="en/Extension_Frequently_Asked_Questions#Why_doesn.27t_my_script_run_properly.3F"> load listener </a>來運行。若您要從瀏覽器視窗以外的地方來操作頁籤,您必須先取得任意一個瀏覽器視窗,詳見: <a href="/en/Working_with_windows_in_chrome_code" title="en/Working_with_windows_in_chrome_code">Working with windows in chrome code</a> 。</p>
-<h3 id="Getting_access_to_the_browser" name="Getting_access_to_the_browser">多世界詮釋算什麼,多 browser 詮釋才夠暈</h3>
-<p>"browser" 有很多意思。把整個 Firefox 稱為 browser 再為理所當然不過,但是 Firefox 有頁籤,每個頁籤本身也都是 browser。無論是一般所指的 web page browser,還是 XUL 裡的 {{ XULElem("browser") }} element,通通叫做 browser。在本文件和其它某些 Firefox 文件裡, browser 還有另一個意思,就是 Firefox XUL window 裡的 <a href="/en-US/docs/XUL/tabbrowser" title="/en-US/docs/XUL/tabbrowser">tabbrowser</a> element。</p>
-<h3 id="Getting_access_to_the_browser" name="Getting_access_to_the_browser">如何存取 browser</h3>
-<h4 id="從主視窗">從主視窗</h4>
-<p>從 global ChromeWindow 中運行的程式碼,例如套疊 (overlay) 於 <code>browser.xul 的 </code>extension,可以用全域變數 <code>gBrowser 來存取</code> {{ XULElem("tabbrowser") }} element <code>。</code></p>
-<pre class="eval">// gBrowser 只存在於 browser window (browser.xul)
-gBrowser.addTab(...);
-</pre>
-<p>如果 <code>gBrowser</code> 未定義,代表您的程式碼要不是太早運行,就是並非從 browser window 中運行。在 browser window 還沒完全載入之前 <code>gBrowser</code> 根本還不存在。若要在視窗一打開時存取 <code>gBrowser</code> ,請在 event listener 中使用它,並 <a href="/en/DOM/element.addEventListener" title="en/DOM/element.addEventListener">listen</a> '<code>load'</code> 事件。</p>
-<p>若您的程式是 sidebar 或 dialog 而無法存取主視窗,那就要先獲取主視窗才能使用 <code>gBrowser ,詳見:</code> <a href="/en/Working_with_windows_in_chrome_code" title="en/Working_with_windows_in_chrome_code">Working with windows in chrome code</a>.</p>
-<h4 id="從腮巴_(sidebar)_存取_browser">從腮巴 (sidebar) 存取 browser</h4>
-<p>若您的附加元件基本上是一坨屎 (sidebar) ,那就:</p>
-<pre class="brush: js">var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIWebNavigation)
- .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
- .rootTreeItem
- .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIDOMWindow);
-
-mainWindow.gBrowser.addTab(...);
-</pre>
-<h4 id="從呆鴨肉_(dialog)_存取_browser">從呆鴨肉 (dialog) 存取 browser</h4>
-<p>若您的程式基本上運行於某種呆鴨肉 (dialog) ,而且是從 browser window 直接甩出來的精選優質肥美呆鴨肉,那就:</p>
-<pre class="brush: js">window.opener.gBrowser.addTab(...);
-</pre>
-<p>如果 <code>window.opener</code> 搞不定,那就用以下的程式碼先取得最近打開的 browser window :</p>
-<pre class="brush: js">var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
-
-var mainWindow = wm.getMostRecentWindow("navigator:browser");
-mainWindow.gBrowser.addTab(...);</pre>
-<h3 id="Opening_a_URL_in_a_new_tab" name="Opening_a_URL_in_a_new_tab">如何以 URL 開啟新 tab</h3>
-<pre class="brush: js">// Add tab
-gBrowser.addTab("http://www.google.com/");
-
-// Add tab, then make active
-gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/");
-</pre>
-<h4 id="Manipulating_content_of_a_new_tab" name="Manipulating_content_of_a_new_tab">操作新頁籤的內容</h4>
-<p>若要操作新開啟頁籤的內容,就要等它載入完。</p>
-<pre class="brush: js">// 醬子不行啊 .. 人家還沒準備好
-var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
-alert(newTabBrowser.contentDocument.body.innerHTML);
-
-// BETTER WAY
-var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
-newTabBrowser.addEventListener("load", function () {
- newTabBrowser.contentDocument.body.innerHTML = "&lt;div&gt;hello world&lt;/div&gt;";
-}, true);
-</pre>
-<p>onLoad handler 中的 event target 是個 'tab' XUL element。 關於 getBrowserForTab(),參見: <a href="/en/XUL/tabbrowser#m-getBrowserForTab" title="en/XUL/tabbrowser#m-getBrowserForTab">tabbrowser</a> 。</p>
-<h4 id="Opening_a_URL_in_the_correct_window.2Ftab" name="Opening_a_URL_in_the_correct_window.2Ftab">如何精準地在 window 或 tab 開啟 URL</h4>
-<p><code><a class="external" href="http://mxr.mozilla.org/mozilla-central/source/browser/base/content/utilityOverlay.js" rel="external nofollow" title="http://mxr.mozilla.org/mozilla-central/source/browser/base/content/utilityOverlay.js">chrome://browser/content/utilityOverlay.js</a></code> 中有許多方法例如 <code>openUILinkIn</code> 和 <code>openUILink,</code> 讓 tab 開啟 URL 變簡單。</p>
-<dl>
- <dt>
- <code>openUILinkIn( url, where, allowThirdPartyFixup, postData, referrerUrl ) </code></dt>
- <dd>
- where 可以是:
- <ul>
- <li>"current" 目前 tab (要是 browser window 連個鬼都沒的話就開新視窗)</li>
- <li>"tab" 新的 tab (一樣,鬼都沒有就開新視窗)</li>
- <li>"tabshifted" 也是新 tab,但若預設選定新 tab 則會在背景開啟,若預設相反則行為相反 (這就是為什麼叫 shifted)</li>
- <li>"window" 新視窗</li>
- <li>"save" 直接存檔 (不會提示檔名喔!)</li>
- </ul>
- </dd>
- <dt>
- <code>openUILink( url, e, ignoreButton, ignoreAlt, allowKeywordFixup, postData, referrerUrl ) </code></dt>
- <dd>
-  </dd>
-</dl>
-<p>下列程式碼將開啟 URL 並依照什麼鬼滑鼠鍵和什麼鬼熱鍵(例:Ctrl)被按下來開新視窗、開新 tab 或是開在現有的 tab 。這是用於 {{ XULElem("menuitem") }} 的程式碼,而在其它的 XUL elements 上也沒什麼兩樣,但只限 browser.xul 的 overlay 。</p>
-<p>XUL:</p>
-<pre class="eval">&lt;menuitem oncommand="myExtension.foo(event)" onclick="checkForMiddleClick(this, event)" label="Click me"/&gt;
-</pre>
-<p>JS:</p>
-<pre class="brush: js">var myExtension = {
- foo: function(event) {
- openUILink("http://www.example.com", event, false, true);
- }
-}</pre>
-<h4 id="如何優柔寡斷地開啟_URL">如何優柔寡斷地開啟 URL</h4>
-<pre class="brush: js">var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
-
-// 生一個新 tab 但是沒載入內容
-var url = "https://developer.mozilla.org";
-var tab = gBrowser.addTab(null);
-gSessionStore.setTabState(tab,
- '{\
-  "entries":[\
-    {\
-      "url":"' + url + '",\
-        "title":"' + url + '"\
-      }\
-    ],\
-    "lastAccessed":0,\
-    "index":1,\
-    "hidden":false,\
-    "attributes":{},\
-    "image":null\
-  }'
-);
-</pre>
-<h4 id="Reusing_tabs" name="Reusing_tabs">tab 再利用</h4>
-<p>與其每次需要就再開新的 tab,若已有 tab 開啟了欲前往的 URL,最佳做法就是試著重用它。遵循這個做法可使您的附加元件開啟最少的 tab。</p>
-<h5 id="Reusing_by_URL.2FURI" name="Reusing_by_URL.2FURI">依 URL/URI 來重用</h5>
-<p>附加元件常見的一項功能是,當 user 按下某個按鈕或連結就從browser window 中將 user 導向至某個 <code>chrome://</code> 開頭的 URI (像是 help 或 about 這種) 或者一個外部的 HTML (on-line <code>http(s)://</code>) 。接下來的程式碼展示如何重用已顯示所欲前往 URL/URI 的頁籤,如果沒有現存的,則會開個新的。</p>
-<pre class="brush: js">function openAndReuseOneTabPerURL(url) {
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var browserEnumerator = wm.getEnumerator("navigator:browser");
-
- // Check each browser instance for our URL
- var found = false;
- while (!found &amp;&amp; browserEnumerator.hasMoreElements()) {
- var browserWin = browserEnumerator.getNext();
- var tabbrowser = browserWin.gBrowser;
-
- // Check each tab of this browser instance
- var numTabs = tabbrowser.browsers.length;
- for (var index = 0; index &lt; numTabs; index++) {
- var currentBrowser = tabbrowser.getBrowserAtIndex(index);
- if (url == currentBrowser.currentURI.spec) {
-
- // The URL is already opened. Select this tab.
- tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index];
-
- // Focus *this* browser-window
- browserWin.focus();
-
- found = true;
- break;
- }
- }
- }
-
- // Our URL isn't open. Open it now.
- if (!found) {
- var recentWindow = wm.getMostRecentWindow("navigator:browser");
- if (recentWindow) {
- // Use an existing browser window
- recentWindow.delayedOpenTab(url, null, null, null, null);
- }
- else {
- // No browser windows are open, so open a new one.
- window.open(url);
- }
- }
-}
-</pre>
-<h5 id="Reusing_by_other_criteria" name="Reusing_by_other_criteria">依其它準則來重用</h5>
-<p>有時候您可能想重用某個先前已由您的附加元件開啟的頁籤,管它目前 URL/URI 是什麼,只要不是其他的元件開啟的。您的確可以為所欲為,只要在第一次開啟時給它一個自訂屬性。之後要重用它的時候,就從所有已開啟的頁籤找出這個有自訂屬性的頁籤,變更其 URL/URI 並 focus 或 select 該頁籤。要是連個屁都沒有 (可能被 user 關了或是根本沒開過),那就開個新的然後給它這個自訂屬性。</p>
-<pre class="brush: js">function openAndReuseOneTabPerAttribute(attrName, url) {
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- for (var found = false, index = 0, tabbrowser = wm.getEnumerator('navigator:browser').getNext().gBrowser;
- index &lt; tabbrowser.tabContainer.childNodes.length &amp;&amp; !found;
- index++) {
-
- // Get the next tab
- var currentTab = tabbrowser.tabContainer.childNodes[index];
-
- // Does this tab contain our custom attribute?
- if (currentTab.hasAttribute(attrName)) {
-
- // Yes--select and focus it.
- tabbrowser.selectedTab = currentTab;
-
- // Focus *this* browser window in case another one is currently focused
- tabbrowser.ownerDocument.defaultView.focus();
- found = true;
- }
- }
-
- if (!found) {
- // Our tab isn't open. Open it now.
- var browserEnumerator = wm.getEnumerator("navigator:browser");
- var tabbrowser = browserEnumerator.getNext().gBrowser;
-
- // Create tab
- var newTab = tabbrowser.addTab(url);
- newTab.setAttribute(attrName, "xyz");
-
- // Focus tab
- tabbrowser.selectedTab = newTab;
-
- // Focus *this* browser window in case another one is currently focused
- tabbrowser.ownerDocument.defaultView.focus();
- }
-}
-</pre>
-<p>該函式應如此這般調用:</p>
-<pre class="eval"><span class="nowiki">openAndReuseOneTabPerAttribute("myextension-myattribute", "http://developer.mozilla.org/")</span>.
-</pre>
-<h3 id="Closing_a_tab" name="Closing_a_tab">如何砍掉 tab</h3>
-<p>下列程式碼將砍掉目前選擇的 tab。</p>
-<pre class="eval">gBrowser.removeCurrentTab();
-</pre>
-<p>另有一個更廣用的 <code>removeTab</code> 方法,以 XUL {{ XULElem("tab") }} element 為唯一的參數。</p>
-<h3 id="Changing_active_tab" name="Changing_active_tab">如何改變 active tab</h3>
-<p>左三圈 .. ok,並沒有三圈 .. 選定向左一個 tab:</p>
-<pre>gBrowser.tabContainer.advanceSelectedTab(-1, true);
-</pre>
-<p>右三圈 (喔 .. 抱歉)</p>
-<pre>gBrowser.tabContainer.advanceSelectedTab(1, true);
-</pre>
-<h3 id="Changing_active_tab" name="Changing_active_tab">如何偵測 page load</h3>
-<p>另見: <a href="/en/Code_snippets/On_page_load" title="en/Code_snippets/On_page_load">Code snippets:On page load</a></p>
-<pre class="brush: js">function examplePageLoad(event) {
- if (event.originalTarget instanceof HTMLDocument) {
- var win = event.originalTarget.defaultView;
- if (win.frameElement) {
- // Frame within a tab was loaded. win should be the top window of
- // the frameset. If you don't want do anything when frames/iframes
- // are loaded in this web page, uncomment the following line:
- // return;
- // Find the root document:
- win = win.top;
- }
- }
-}
-
-// do not try to add a callback until the browser window has
-// been initialised. We add a callback to the tabbed browser
-// when the browser's window gets loaded.
-window.addEventListener("load", function () {
- // Add a callback to be run every time a document loads.
- // note that this includes frames/iframes within the document
- gBrowser.addEventListener("load", examplePageLoad, true);
-}, false);
-
-...
-// When no longer needed
-gBrowser.removeEventListener("load", examplePageLoad, true);
-...
-</pre>
-<h3 id="Notification_when_a_tab_is_added_or_removed" name="Notification_when_a_tab_is_added_or_removed">tab 增減通知</h3>
-<pre class="brush: js">function exampleTabAdded(event) {
- var browser = gBrowser.getBrowserForTab(event.target);
- // browser is the XUL element of the browser that's been added
-}
-
-function exampleTabMoved(event) {
- var browser = gBrowser.getBrowserForTab(event.target);
- // browser is the XUL element of the browser that's been moved
-}
-
-function exampleTabRemoved(event) {
- var browser = gBrowser.getBrowserForTab(event.target);
- // browser is the XUL element of the browser that's been removed
-}
-
-// During initialization
-var container = gBrowser.tabContainer;
-container.addEventListener("TabOpen", exampleTabAdded, false);
-container.addEventListener("TabMove", exampleTabMoved, false);
-container.addEventListener("TabClose", exampleTabRemoved, false);
-
-// When no longer needed
-container.removeEventListener("TabOpen", exampleTabAdded, false);
-container.removeEventListener("TabMove", exampleTabMoved, false);
-container.removeEventListener("TabClose", exampleTabRemoved, false);
-</pre>
-<div class="geckoVersionNote">
- <p>{{ gecko_callout_heading("1.9.1") }}</p>
- <p>Starting in Gecko 1.9.1 {{ geckoRelease("1.9.1") }}, there's an easy way to <a href="/En/Listening_to_events_on_all_tabs" title="https://developer.mozilla.org/en/Listening_to_events_on_all_tabs">listen on progress events on all tabs</a>.</p>
-</div>
-<p>{{ h2_gecko_minversion("Notification when a tab's attributes change", "2.0") }}</p>
-<p>自 Gecko 2.0 起,您可以 listen <code>TabAttrModified</code> event 來得知 tab 之 attribute 異動。event listener 可能收到 tab 異動的 attribute 如下:</p>
-<ul>
- <li>{{ xulattr("label") }}</li>
- <li>{{ xulattr("crop") }}</li>
- <li>{{ xulattr("busy") }}</li>
- <li>{{ xulattr("image") }}</li>
- <li>{{ xulattr("selected") }}</li>
-</ul>
-<pre class="brush: js">function exampleTabAttrModified(event) {
- var tab = event.target;
- // Now you can check what's changed on the tab
-}
-
-// During initialization
-var container = gBrowser.tabContainer;
-container.addEventListener("TabAttrModified", exampleTabAttrModified, false);
-
-// When no longer needed
-container.removeEventListener("TabAttrModified", exampleTabAttrModified, false);
-</pre>
-<p>{{ h2_gecko_minversion("Notification when a tab is pinned or unpinned", "2.0") }}</p>
-<p>自 Gecko 2.0 起,tab 可以被 "釘選";也就是說這類 tab 變成一種特殊的 application tabs ("app tabs"),可以被釘在 tab 列的開頭而且只顯示為 favicon。透過 <code>TabPinned</code> 和 <code>TabUnpinned</code> 事件可以得知 tab 被釘了或被拔了。</p>
-<pre class="brush: js">function exampleTabPinned(event) {
- var browser = gBrowser.getBrowserForTab(event.target);
- // browser is the XUL element of the browser that's been pinned
-}
-
-function exampleTabUnpinned(event) {
- var browser = gBrowser.getBrowserForTab(event.target);
- // browser is the XUL element of the browser that's been pinned
-}
-
-// Initialization
-
-var container = gBrowser.tabContainer;
-container.addEventListener("TabPinned", exampleTabPinned, false);
-container.addEventListener("TabUnpinned", exampleTabUnpinned, false);
-
-// When no longer needed
-
-container.removeEventListener("TabPinned", exampleTabPinned, false);
-container.removeEventListener("TabUnpinned", exampleTabUnpinned, false);
-</pre>
-<h3 id="Detecting_tab_selection" name="Detecting_tab_selection">如何偵測 tab 選定</h3>
-<p>下列程式碼用來得知 browser 中的 tab 被選定:</p>
-<pre class="brush: js">function exampleTabSelected(event) {
- var browser = gBrowser.selectedBrowser;
- // browser is the XUL element of the browser that's just been selected
-}
-
-// During initialisation
-var container = gBrowser.tabContainer;
-container.addEventListener("TabSelect", exampleTabSelected, false);
-
-// When no longer needed
-container.removeEventListener("TabSelect", exampleTabSelected, false);
-</pre>
-<h3 id="Getting_document_of_currently_selected_tab" name="Getting_document_of_currently_selected_tab">如何取得已選定 tab 裡的內文(document)</h3>
-<p>下列程式碼用來獲取選定 tab 中的內文(document),於 browser window scope 中運作,例如從 browser window 的 overlay 。</p>
-<pre class="eval">gBrowser.contentDocument;
-</pre>
-<p>或</p>
-<pre class="eval">content.document
-</pre>
-<p>若程式碼是從由 browser window 所開啟的 window 或 dialog,可用以下程式碼獲取已選定 tab 裡所顯示的內文:</p>
-<pre class="eval">window.opener.content.document
-</pre>
-<p>若程式從並非自 browser window 所開啟的 window 或 dialog 中運行,則可用 {{ interface("nsIWindowMediator") }} 獲取最近所使用的 browser window 中已選定 tab 裡的內文。</p>
-<pre class="brush: js">var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
-var recentWindow = wm.getMostRecentWindow("navigator:browser");
-return recentWindow ? recentWindow.content.document.location : null;
-</pre>
-<p>另見: <a href="/en/Working_with_windows_in_chrome_code#Content_windows" title="en/Working_with_windows_in_chrome_code#Content_windows">Working with windows in chrome code</a>.</p>
-<h3 id="Enumerating_tabs" name="Enumerating_tabs">如何遍歷 browser</h3>
-<p>要遍歷 tabbrowser 中所有的 browser,要先取得任意一個 browser 的 window。如果程式碼是從 <code>browser.xul</code> overlay 執行 (譬如 toolbar button 或者 menu <em>click</em> handler),可以用預定義的 <code>window </code>變數。但若是從獨自的 window 執行 (例如 settings/options dialog) 則要用 {{ interface("nsIWindowMediator") }} 來取得任意一個 browser 的window。</p>
-<p>有了一個 window 後再用 <code>win.gBrowser </code>取得其 <code>&lt;tabbrowser/&gt;</code> element,其中 <code>win</code> 就是上個步驟中所得到的 browser window 。 如果程式是從 <code>browser.xul</code> overlay 執行的話,可以不必寫 window.<code>gBrowser </code>直接用 <code>gBrowser</code> 就好。很奇怪沒錯,在所有的 IDE 當中也沒有 <code>gBrowser 這個東西</code>,但是別忘了您是在開發 Firefox 的 extension , 這是它本身的 object model 。</p>
-<p>最後一步,利用 <code>gBrowser.browsers.length</code> 得知 browser 的數量,並用 <code>gBrowser.getBrowserAtIndex()</code> 取得 <code>&lt;browser/&gt;</code> element。範例:</p>
-<pre class="brush: js">var num = gBrowser.browsers.length;
-for (var i = 0; i &lt; num; i++) {
- var b = gBrowser.getBrowserAtIndex(i);
- try {
- dump(b.currentURI.spec); // dump URLs of all open tabs to console
- } catch(e) {
- Components.utils.reportError(e);
- }
-}</pre>
-<p>透過 <a href="/en/DOM_Inspector" title="en/DOM_Inspector">DOM Inspector</a> 或參見 {{ source("toolkit/content/widgets/browser.xml","browser.xml") }} 得知對應的 XBL bindings ( 不然參見 {{ XULElem("browser") }} 及 {{ XULElem("tabbrowser") }} 也行),您將可了解 <code>&lt;browser/&gt;</code> 和 <code>&lt;tabbrowser/&gt;</code> elements 有哪些方法可用。</p>
-<h3 id="如何取得觸發_http-on-modify-request_notification_的_browser">如何取得觸發 http-on-modify-request notification 的 browser</h3>
-<p>關於http-on-* notification 請參見 <a href="/en/Observer_Notifications#HTTP_requests" title="en/Observer_Notifications#HTTP_requests">Observer notifications</a> 。</p>
-<p>請注意,部份 HTTP requests 與 tab 無關;例如 RSS feed updates、extension manager requests 以及 XPCOM components 所發出的 XHR requests 等。在這些情況中,下列程式碼將返回 null 。</p>
-<div class="warning">
- <strong>注意:</strong>該程式碼使用之 <code>getInterface(Components.interfaces.nsIDOMWindow)</code> 應更新為 {{interface("nsILoadContext")}} ,<a href="/en-US/docs/Updating_extensions_for_Firefox_3.5#Getting_a_load_context_from_a_request" title="/en-US/docs/Updating_extensions_for_Firefox_3.5#Getting_a_load_context_from_a_request">參見範例</a>。</div>
-<pre class="brush: js">observe: function (subject, topic, data) {
- if (topic == "http-on-modify-request") {
- subject.QueryInterface(Components.interfaces.nsIHttpChannel);
- var url = subject.URI.spec; /* url being requested. you might want this for something else */
- var browser = this.getBrowserFromChannel(subject);
- if (browser != null) {
- /* do something */
- }
- }
-},
-
-getBrowserFromChannel: function (aChannel) {
- try {
- var notificationCallbacks =
- aChannel.notificationCallbacks ? aChannel.notificationCallbacks : aChannel.loadGroup.notificationCallbacks;
-
- if (!notificationCallbacks)
- return null;
-
- var domWin = notificationCallbacks.getInterface(Components.interfaces.nsIDOMWindow);
- return gBrowser.getBrowserForDocument(domWin.top.document);
- }
- catch (e) {
- dump(e + "\n");
- return null;
- }
-}
-</pre>
-<p>{{ languages( { "fr": "fr/Extraits_de_code/Onglets_de_navigation", "ja": "ja/Code_snippets/Tabbed_browser", "pl": "pl/Fragmenty_kodu/Przegl\u0105danie_w_kartach" } ) }}</p>
diff --git a/files/zh-tw/extensions/index.html b/files/zh-tw/extensions/index.html
deleted file mode 100644
index 63a7457aaa..0000000000
--- a/files/zh-tw/extensions/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Extensions
-slug: Extensions
----
-<p> </p>
-
-<p>This page was auto-generated because a user created a sub-page to this page.</p>
-
-<p> </p>
diff --git a/files/zh-tw/extensions/using_the_dom_file_api_in_chrome_code/index.html b/files/zh-tw/extensions/using_the_dom_file_api_in_chrome_code/index.html
deleted file mode 100644
index e4bd4f169c..0000000000
--- a/files/zh-tw/extensions/using_the_dom_file_api_in_chrome_code/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: 使用 DOM 檔案 API 再FireFox外觀代碼上
-slug: Extensions/Using_the_DOM_File_API_in_chrome_code
-translation_of: Extensions/Using_the_DOM_File_API_in_chrome_code
----
-<p>{{ gecko_minversion_header("6.0") }}</p>
-
-<p>如果你想使用如果你想使用 <a href="/en/Using_files_from_web_applications" title="en/Using files from web applications">DOM 檔案 API</a> 在FireFox外觀代碼上面,你可以沒有任何限制的這樣做。事實上你得到了一個特別的功能。你可以建立你可以建立 {{ domxref("File") }} 物件 specifying the path of the file on the user's computer. This only works from privileged code, so web content can't do it. This protects users from the inherent security risks associated with allowing web content free access to the contents of their disks. If you pass a path to the {{ domxref("File") }} constructor from unprivileged code (such as web content), an exception will be thrown.</p>
-
-<h2 id="Accessing_a_file_by_hard-coded_pathname">Accessing a file by hard-coded pathname</h2>
-
-<p>To reference a file by its path, you can simply use a string literal:</p>
-
-<pre>var file = File("path/to/some/file");
-</pre>
-
-<h2 id="Accessing_files_in_a_special_directory">Accessing files in a special directory</h2>
-
-<p>You can also use the directory service to obtain and build the path to a file to access. For example, let's say your add-on needs to access a file in the user's profile. You can do so like this:</p>
-
-<pre class="brush: js">var dsFile = Components.classes["@mozilla.org/file/directory_service;1"]
- .getService(Components.interfaces.nsIProperties)
- .get("ProfD", Components.interfaces.nsIFile);
-
-dsFile.append("myfilename.txt");
-
-var file = File(dsFile.path);
-</pre>
-
-<p>This uses the directory service to locate the profile directory ("ProfD"), then appends the name of the file we want to work with by calling {{ ifmethod("nsIFile", "append") }}. Finally, we instantiate the {{ domxref("File") }} object by passing the string returned by {{ ifmethod("nsIFile", "path") }} to the {{ domxref("File") }} constructor.</p>
-
-<p>You can even simplify this further! You can actually pass the {{ interface("nsIFile") }} object itself directly to the <code>File</code> constructor, resulting in the following code:</p>
-
-<pre class="brush: js">var dsFile = Components.classes["@mozilla.org/file/directory_service;1"]
- .getService(Components.interfaces.nsIProperties)
- .get("ProfD", Components.interfaces.nsIFile);
-
-dsFile.append("myfilename.txt");
-
-var file = File(dsFile);</pre>
-
-<h2 id="See_also">See also</h2>
-
-<ul>
- <li><a href="/en/Using_files_from_web_applications" title="en/Using files from web applications">Using files from web applications</a></li>
- <li>{{ domxref("File") }}</li>
- <li>{{ interface("nsIDirectoryService") }}</li>
- <li>{{ interface("nsIFile") }}</li>
-</ul>
diff --git a/files/zh-tw/firefox_2_佈景主題之更動/index.html b/files/zh-tw/firefox_2_佈景主題之更動/index.html
deleted file mode 100644
index 2bf1c7150c..0000000000
--- a/files/zh-tw/firefox_2_佈景主題之更動/index.html
+++ /dev/null
@@ -1,884 +0,0 @@
----
-title: Firefox 2 佈景主題之更動
-slug: Firefox_2_佈景主題之更動
-tags:
- - 佈景主題
- - 待翻譯
-translation_of: Archive/Themes/Theme_changes_in_Firefox_2
----
-<p>本文涵括使佈景主題相容 <a href="zh_tw/Firefox_2">Firefox 2</a> 的各種修改須知。</p>
-
-<p> </p>
-
-<h2 id=".E8.88.87.E7.80.8F.E8.A6.BD.E5.99.A8.E6.9B.B4.E5.8B.95.E7.9B.B8.E9.97.9C" name=".E8.88.87.E7.80.8F.E8.A6.BD.E5.99.A8.E6.9B.B4.E5.8B.95.E7.9B.B8.E9.97.9C">與瀏覽器更動相關</h2>
-
-<p>瀏覽器中有許多更動甚至刪除的檔案,所以佈景主題可能需要修改才能正確套用。此表格列出 XUL 及相對應的 CSS 檔案更動處,供您編修查照。</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header">檔案名稱</td>
- <td class="header">CSS 檔</td>
- <td class="header">細節</td>
- </tr>
- <tr>
- <td>feeds/addFeedReader.xul</td>
- <td>feeds/addFeedReader.css</td>
- <td>新檔案,提供添加新消息來源閱讀工具的使用介面。</td>
- </tr>
- <tr>
- <td>feeds/subscribe.xhtml</td>
- <td>feeds/subscribe.css</td>
- <td>新檔案,提供訂閱消息來源(RSS)的介面。</td>
- </tr>
- <tr>
- <td>preferences/downloads.xul</td>
- <td>-</td>
- <td>自 Firefox 2 起移除。</td>
- </tr>
- <tr>
- <td>preferences/general.xul</td>
- <td>-</td>
- <td>自 Firefox 2 起移除。</td>
- </tr>
- <tr>
- <td>safebrowsing/warning-overlay.xul</td>
- <td>safebrowsing/browser-protection.css</td>
- <td>新檔案,為使用者瀏覽疑似詐騙網站時覆蓋瀏覽器的警告介面。</td>
- </tr>
- <tr>
- <td>search/engineManager.xul</td>
- <td>engineManager.css</td>
- <td>新檔案,為搜尋引擎管理員視窗的介面。</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id=".E9.A0.90.E8.A8.AD.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C.E7.9A.84.E6.9B.B4.E5.8B.95" name=".E9.A0.90.E8.A8.AD.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C.E7.9A.84.E6.9B.B4.E5.8B.95">預設佈景主題的更動</h2>
-
-<p>以下列出 Firefox 2 預設佈景主題的變動之處,您可依循本表找出該修改的地方。</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header">檔案</td>
- <td class="header">變動描述</td>
- </tr>
- <tr>
- <td>browser/bookmarks/addBookmark.css</td>
- <td>加入與即時摘要相關的 CSS 更動部份。</td>
- </tr>
- <tr>
- <td>browser/bookmarks/bookmarksProperties.css</td>
- <td>新檔案,內含與即時摘要相關的 CSS。</td>
- </tr>
- <tr>
- <td>browser/browser.css</td>
- <td>需為即時摘要、搜尋欄、書籤選單項目圖示及其他部分修改之。</td>
- </tr>
- <tr>
- <td>browser/dropmark-nav-small.png</td>
- <td>新檔案,為使用小圖示時上下一頁旁的下拉選單圖示。</td>
- </tr>
- <tr>
- <td>browser/dropmark-nav.png</td>
- <td>新檔案,為上下一頁旁的下拉選單圖示。</td>
- </tr>
- <tr>
- <td>browser/engineManager.css</td>
- <td>新檔案,搜尋引擎管理員所用的 CSS。</td>
- </tr>
- <tr>
- <td>browser/feeds/addFeedReader.css</td>
- <td>新檔案,新增消息來源閱讀工具的視窗所用之 CSS。</td>
- </tr>
- <tr>
- <td>browser/feeds/feedIcon.png</td>
- <td>新檔案,RSS 圖示。</td>
- </tr>
- <tr>
- <td>browser/feeds/feedIcon16.png</td>
- <td>新檔案,RSS 圖示的 16x16 像素版。</td>
- </tr>
- <tr>
- <td>browser/feeds/subscribe.css</td>
- <td>新檔案,訂閱消息來源時視窗的 CSS。</td>
- </tr>
- <tr>
- <td>browser/Go-rtl.png</td>
- <td>新檔案,網址列尾端的「Go」三角箭頭圖示。</td>
- </tr>
- <tr>
- <td>browser/preferences/preferences.css</td>
- <td>選項視窗的樣式檔。</td>
- </tr>
- <tr>
- <td>browser/safebrowsing/browser-protection.css</td>
- <td>新檔案,控制瀏覽疑似詐騙網站時出現的警告訊息及網址列圖示樣式。</td>
- </tr>
- <tr>
- <td>browser/safebrowsing/close16x16.png</td>
- <td>新檔案,詐騙網站警告視窗的關閉鈕。</td>
- </tr>
- <tr>
- <td>browser/safebrowsing/dim.png</td>
- <td>新檔案,瀏覽疑似詐騙網站時,會覆蓋在整個頁面上使頁面內容變暗的檔案,應為半透明圖以便使用者辨識頁面的內容。</td>
- </tr>
- <tr>
- <td>browser/safebrowsing/tail.png</td>
- <td>新檔案,詐騙網站警告視窗的「尾巴」,藉以製成談話泡泡的樣子。</td>
- </tr>
- <tr>
- <td>browser/safebrowsing/warning16x16.png</td>
- <td>新檔案,網址列詐騙網站警告圖示的 16x16 像素版。.</td>
- </tr>
- <tr>
- <td>browser/safebrowsing/warning24x24.png</td>
- <td>新檔案,此為顯示於詐騙網站警告視窗中的圖示。</td>
- </tr>
- <tr>
- <td>browser/search-bar-background-mid.png</td>
- <td>新檔案,搜尋欄中間的背景。搜尋欄本身及尾端的圖已經拆開分別繪製。</td>
- </tr>
- <tr>
- <td>browser/search-bar-background.png</td>
- <td>已移除。</td>
- </tr>
- <tr>
- <td>browser/Search-bar.png</td>
- <td>已移除。</td>
- </tr>
- <tr>
- <td>browser/Search-go-rtl.png</td>
- <td>新檔案,搜尋欄的搜尋圖示,此為顯示於左側的版本。</td>
- </tr>
- <tr>
- <td>browser/Search-go.png</td>
- <td>新檔案,搜尋欄右側的搜尋圖示。</td>
- </tr>
- <tr>
- <td>browser/Search-provider-bkgnd-rtl.png</td>
- <td>New file; the background drawn behind the search provider icon when it's located at the left end of the search bar.</td>
- </tr>
- <tr>
- <td>browser/Search-provider-bkgnd.png</td>
- <td>New file; the background drawn behind the search provider icon when it's located at the right end of the search bar.</td>
- </tr>
- <tr>
- <td>global/about.css</td>
- <td>New file; CSS used in the application's about box.</td>
- </tr>
- <tr>
- <td>global/alltabs-box-bkgnd.png</td>
- <td>New file; the background for the "all tabs" drop-down menu at the right side of the tab bar.</td>
- </tr>
- <tr>
- <td>global/alltabs-box-overflow-bkgnd.png</td>
- <td>New file; the background for the "all tabs" drop-down menu when there are enough tabs to activate tab bar scrolling.</td>
- </tr>
- <tr>
- <td>global/browser.css</td>
- <td>Revised to support new styles for the main browser window.</td>
- </tr>
- <tr>
- <td>global/globalBindings.xml</td>
- <td>Updated to support changes to the tab bar, including per-tab close buttons.</td>
- </tr>
- <tr>
- <td>global/icons/alltabs.png</td>
- <td>Not actually used; left over from earlier drafts of the theme.</td>
- </tr>
- <tr>
- <td>global/inactivetab-left.png</td>
- <td>已移除。</td>
- </tr>
- <tr>
- <td>global/inactivetab-right.png</td>
- <td>已移除。</td>
- </tr>
- <tr>
- <td>global/menu.css</td>
- <td>Updated to include new styles.</td>
- </tr>
- <tr>
- <td>global/notification.css</td>
- <td>New file; defines styles used by the notification strip that appears at the top of browser windows to present notices such as "a popup was blocked."</td>
- </tr>
- <tr>
- <td>global/scrollbox/autorepeat-arrow-dn-dis.gif</td>
- <td>New file; icon displayed for a disabled autorepeat down arrow in a scroll box.</td>
- </tr>
- <tr>
- <td>global/scrollbox/autorepeat-arrow-dn.gif</td>
- <td>New file; icon displayed for an autorepeat down arrow in a scroll box.</td>
- </tr>
- <tr>
- <td>global/scrollbox/autorepeat-arrow-up-dis.gif</td>
- <td>New file; icon displayed for a disabled autorepeat up arrow in a scroll box.</td>
- </tr>
- <tr>
- <td>global/scrollbox/autorepeat-arrow-up.gif</td>
- <td>New file; icon displayed for an autorepeat up arrow in a scroll box.</td>
- </tr>
- <tr>
- <td>global/scrollbox.css</td>
- <td>Needs to be updated to include new styles.</td>
- </tr>
- <tr>
- <td>global/tab-arrow-end-bkgnd.png</td>
- <td>New file; the background for the scrolling tab bar arrow at the right side of the tab bar.</td>
- </tr>
- <tr>
- <td>global/tab-arrow-end.png</td>
- <td>New file; the arrow drawn in the scrolling tab bar box at the right end of the tab bar.</td>
- </tr>
- <tr>
- <td>global/tab-arrow-start-bkgnd.png</td>
- <td>New file; the background for the scrolling tab bar arrow at the left side of the tab bar.</td>
- </tr>
- <tr>
- <td>global/tab-arrow-start.png</td>
- <td>New file; the arrow drawn in the scrolling tab bar box at the left end of the tab bar.</td>
- </tr>
- <tr>
- <td>global/tab-left.png</td>
- <td>新檔案,為分頁標籤的左緣。</td>
- </tr>
- <tr>
- <td>global/tab-middle.png</td>
- <td>新檔案,為分頁標籤中間部分。</td>
- </tr>
- <tr>
- <td>global/tab-right.png</td>
- <td>新檔案,為分頁標籤的右緣。</td>
- </tr>
- <tr>
- <td>global/tabbrowser-tabs-bkgnd.png</td>
- <td>新檔案,為分頁列上標籤後方的背景圖。</td>
- </tr>
- <tr>
- <td>global/toolbar.css</td>
- <td>需更新,將新的樣式資訊加入。</td>
- </tr>
- <tr>
- <td>mozapps/extensions/about.css</td>
- <td>Updated with a simplified set of style names, since several styles were identical.</td>
- </tr>
- <tr>
- <td>mozapps/extensions/extensions.css</td>
- <td>CSS for the add-ons manager window. Updated to support the new features of the Firefox 2 add-ons manager.</td>
- </tr>
- <tr>
- <td>mozapps/extensions/itemDisabledFader.png</td>
- <td>New file; a translucent PNG used as an overlay on top of items that are disabled in the add-ons manager.</td>
- </tr>
- <tr>
- <td>mozapps/extensions/itemEnabledFader.png</td>
- <td>New file; a translucent PNG used as an overlay on top of items that are enabled in the add-ons manager.</td>
- </tr>
- <tr>
- <td>mozapps/extensions/notifyBadges.png</td>
- <td>New file; contains the icons used ito badge the icons for add-ons in the add-on manager window to indicate their status. These look like this in the default theme:
- <p><img alt="Image:notifyBadges.png"></p>
-
- <ul>
- <li>The first icon (green here) indicates that an add-on has an update available.</li>
- <li>The second icon (yellow here)<em>appears to be used for blocklisted items; trying to confirm</em>.</li>
- <li>The third icon (red here) indicates that an add-on is disabled, either by the user or because it's incompatible with the application.</li>
- <li>The fourth icon (blue here)<em>(not sure what this one means)</em>.</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>mozapps/extensions/question.png</td>
- <td>New file; used in the Add-ons Manager when you check for updates. If no updates are found, this icon is displayed at the left side of the message strip that appears across the top of the window.</td>
- </tr>
- <tr>
- <td>mozapps/extensions/update.css</td>
- <td>本檔案為更新精靈的樣式,其中的樣式資訊因應重新設計的更新精靈而較之前少。</td>
- </tr>
- <tr>
- <td>mozapps/extensions/viewButtons.png</td>
- <td>New file; contains icons for each of the views that may be available in the add-ons manager. In the default theme, these look something like this:
- <p><img alt="Image:viewButtons.png"><br>
- The top row contains dimmed versions of the icons below them. The first icon is for the extensions view. The second is for themes. The third is for locales, the fourth is for plugins, the fifth is for updates, and the sixth is for installs.</p>
- </td>
- </tr>
- <tr>
- <td>mozapps/pref</td>
- <td>Firefox 2 已經用不到這個目錄了,應予移除。</td>
- </tr>
- </tbody>
-</table>
-
-<h3 id="Changes_in_browser" name="Changes_in_browser">Changes in browser</h3>
-
-<h4 id="bookmarks.2FaddBookmark.css" name="bookmarks.2FaddBookmark.css">bookmarks/addBookmark.css</h4>
-
-<p>addBookmarks.css 檔的最開頭應該加上下列幾行:</p>
-
-<pre>@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-@namespace html url("http://www.w3.org/1999/xhtml");
-</pre>
-
-<p>還有些與<a href="zh_tw/%e5%8d%b3%e6%99%82%e6%91%98%e8%a6%81">即時摘要</a>相關的 CSS 也要加上,以便調整即時摘要選取工具的樣式。這個選取工具僅在頁面有即時摘要時才以可編輯式下拉選單呈現,否則就長得跟一般文字輸入區相同。</p>
-
-<ul>
- <li><code>menulist#name{{ mediawiki.external('droppable=\"false\"') }}</code></li>
- <li><code>menulist#name{{ mediawiki.external('droppable=\"false\"') }} &gt; .menulist-editable-box</code></li>
- <li><code>menulist#name{{ mediawiki.external('droppable=\"false\"') }} &gt; .menulist-editable-box &gt; html|*.textbox-input</code></li>
- <li><code>menulist#name{{ mediawiki.external('droppable=\"false\"') }} &gt; .menulist-dropmarker</code></li>
- <li><code>menulist#name{{ mediawiki.external('droppable=\"false\"') }} &gt; menupopup</code></li>
-</ul>
-
-<p>此檔案將為 addBookmark2.xul 調整樣式。</p>
-
-<h4 id="bookmarks.2FbookmarksProperties.css" name="bookmarks.2FbookmarksProperties.css">bookmarks/bookmarksProperties.css</h4>
-
-<p>這是 Firefox 2 新增的檔案,其 CSS 碼應該跟你剛才加到 addBookmark.css 裡的一樣。此檔案為 bookmarksProperties.xul 調整樣式。</p>
-
-<div class="note"><strong>註:</strong> 這個 CSS 應該會另外開一篇檔案展示範例內容,以便往後其他相關文件參照。</div>
-
-<h4 id="browser.css" name="browser.css">browser.css</h4>
-
-<p>以下是 Firefox 2 之後不再使用的樣式,應予移除:</p>
-
-<ul>
- <li><code>#bookmarks-button:active</code></li>
- <li><code>#copy-button:active</code></li>
- <li><code>#cut-button:active</code></li>
- <li><code>#downloads-button:active</code></li>
- <li><code>#forward-button{{ mediawiki.external('buttondown=\"true\"') }}</code></li>
- <li><code>#history-button:active</code></li>
- <li><code>#home-button:active</code></li>
- <li><code>#mail-button</code></li>
- <li><code>#mail-button:active</code></li>
- <li><code>#mail-button{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>#mail-button{{ mediawiki.external('open=\"true\"') }}</code></li>
- <li><code>#new-tab-button:active</code></li>
- <li><code>#new-tab-button{{ mediawiki.external('checked=\"true\"') }}</code></li>
- <li><code>#new-window-button:active</code></li>
- <li><code>#new-window-button{{ mediawiki.external('checked=\"true\"') }}</code></li>
- <li><code>#paste-button:active</code></li>
- <li><code>#print-button:active</code></li>
- <li><code>#reload-button:active</code></li>
- <li><code>#stop-button:active</code></li>
- <li><code>.messageButton</code></li>
- <li><code>.messageImage</code></li>
- <li><code>.messageText</code></li>
- <li><code>browsermessage</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #bookmarks-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #copy-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #cut-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #downloads-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #history-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #home-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #mail-button</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #mail-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #mail-button{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #mail-button{{ mediawiki.external('open=\"true\"') }}</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #new-tab-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #new-window-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #paste-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #print-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #reload-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #stop-button:active</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"icons\"') }} .toolbarbutton-text</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"text\"') }} .toolbarbutton-1 &gt; .toolbarbutton-text</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"text\"') }} .toolbarbutton-1 &gt; stack &gt; toolbarbutton &gt; .toolbarbutton-text</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"text\"') }} .toolbarbutton-icon</code></li>
-</ul>
-
-<p>而以下是 Firefox 2 佈景主題應加上的樣式:</p>
-
-<ul>
- <li><code>#back-button .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#back-button:hover</code></li>
- <li><code>#back-button:hover .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#back-button:hover:active</code></li>
- <li><code>#back-button:hover:active .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#back-button{{ mediawiki.external('buttondown=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#back-button{{ mediawiki.external('buttonover=\"true\"') }}</code></li>
- <li><code>#back-button{{ mediawiki.external('buttonover=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#back-button{{ mediawiki.external('disabled=\"true\"') }} .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#back-button{{ mediawiki.external('open=\"true\"') }}</code></li>
- <li><code>#bookmarks-button:hover</code></li>
- <li><code>#bookmarks-button:hover:active</code></li>
- <li><code>#bookmarks-button{{ mediawiki.external('checked=\"true\"') }}</code></li>
- <li><code>#copy-button:hover</code></li>
- <li><code>#copy-button:hover:active</code></li>
- <li><code>#cut-button:hover</code></li>
- <li><code>#cut-button:hover:active</code></li>
- <li><code>#downloads-button:hover</code></li>
- <li><code>#downloads-button:hover:active</code></li>
- <li><code>#feed-button{{ mediawiki.external('chromedir=\"rtl\"') }}{{ mediawiki.external('feeds') }}:active</code></li>
- <li><code>#feed-button{{ mediawiki.external('chromedir=\"rtl\"') }}{{ mediawiki.external('feeds') }}:hover</code></li>
- <li><code>#feed-button{{ mediawiki.external('feeds') }}:active</code></li>
- <li><code>#feed-button{{ mediawiki.external('feeds') }}:hover</code></li>
- <li><code>#forward-button .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#forward-button:hover</code></li>
- <li><code>#forward-button:hover .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#forward-button:hover:active</code></li>
- <li><code>#forward-button:hover:active .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#forward-button{{ mediawiki.external('buttondown=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#forward-button{{ mediawiki.external('buttonover=\"true\"') }}</code></li>
- <li><code>#forward-button{{ mediawiki.external('buttonover=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#forward-button{{ mediawiki.external('disabled=\"true\"') }} .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>#go-button:hover</code></li>
- <li><code>#go-button{{ mediawiki.external('chromedir=\"rtl\"') }}</code></li>
- <li><code>#history-button:hover:active</code></li>
- <li><code>#history-button:hover:active</code></li>
- <li><code>#history-button{{ mediawiki.external('checked=\"true\"') }}</code></li>
- <li><code>#home-button:hover</code></li>
- <li><code>#home-button:hover:active</code></li>
- <li><code>#new-tab-button:hover</code></li>
- <li><code>#new-tab-button:hover:active</code></li>
- <li><code>#new-window-button:hover</code></li>
- <li><code>#new-window-button:hover:active</code></li>
- <li><code>#paste-button:hover</code></li>
- <li><code>#paste-button:hover:active</code></li>
- <li><code>#print-button:hover</code></li>
- <li><code>#print-button:hover:active</code></li>
- <li><code>#reload-button:hover</code></li>
- <li><code>#reload-button:hover:active</code></li>
- <li><code>#searchbar{{ mediawiki.external('empty=\"true\"') }} .searchbar-textbox</code></li>
- <li><code>#stop-button:hover</code></li>
- <li><code>#stop-button:hover:active</code></li>
- <li><code>#urlbar-icons-spacer</code></li>
- <li><code>#urlbar-spacer</code></li>
- <li><code>#urlbar{{ mediawiki.external('level=\"high\"') }} #lock-icon:active</code></li>
- <li><code>#urlbar{{ mediawiki.external('level=\"high\"') }} #lock-icon:hover</code></li>
- <li><code>#urlbar{{ mediawiki.external('level=\"low\"') }} #lock-icon:active</code></li>
- <li><code>#urlbar{{ mediawiki.external('level=\"low\"') }} #lock-icon:hover</code></li>
- <li><code>.autocomplete-treebody::-moz-tree-cell(suggesthint)</code></li>
- <li><code>.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)</code></li>
- <li><code>.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment)</code></li>
- <li><code>.bookmark-item{{ mediawiki.external('livemark') }}</code></li>
- <li><code>.openintabs-menuitem</code></li>
- <li><code>.toolbarbutton-icon</code></li>
- <li><code>.toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button:hover .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button:hover:active .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button{{ mediawiki.external('buttondown=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button{{ mediawiki.external('buttonover=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #back-button{{ mediawiki.external('disabled=\"true\"') }} .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #bookmarks-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #bookmarks-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #copy-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #copy-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #cut-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #cut-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #downloads-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #downloads-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button:hover .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button:hover:active .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button{{ mediawiki.external('buttondown=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button{{ mediawiki.external('buttonover=\"true\"') }} &gt; .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #forward-button{{ mediawiki.external('disabled=\"true\"') }} .toolbarbutton-menubutton-dropmarker</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #history-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #history-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #home-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #home-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #home-button{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #new-tab-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #new-tab-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #new-window-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #new-window-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #paste-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #paste-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #print-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #print-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #reload-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #reload-button:hover:active</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #stop-button:hover</code></li>
- <li><code>toolbar{{ mediawiki.external('iconsize=\"small\"') }} #stop-button:hover:active</code></li>
- <li><code>toolbarbutton.bookmark-item-microsummarized</code></li>
-</ul>
-
-<p>可能還有其他的樣式也要一併修改一下。</p>
-
-<h4 id="searchbar.css" name="searchbar.css">searchbar.css</h4>
-
-<p>以下是 Firefox 2 不再使用的樣式,應予移除:</p>
-
-<ul>
- <li><code>.searchbar-dropmarker</code></li>
-</ul>
-
-<p>以下是 Firefox 2 應加上的樣式:</p>
-
-<ul>
- <li><code>#search-container{{ mediawiki.external('chromedir=\"rtl\"') }} .search-go-button</code></li>
- <li><code>#search-container{{ mediawiki.external('chromedir=\"rtl\"') }} .searchbar-engine-button</code></li>
- <li><code>.search-go-button</code></li>
- <li><code>.search-go-button:hover</code></li>
- <li><code>.search-go-button:hover:active</code></li>
- <li><code>.search-go-button{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.searchbar-engine-button</code></li>
- <li><code>.searchbar-engine-button:hover</code></li>
- <li><code>.searchbar-engine-button{{ mediawiki.external('addengines=\"true\"') }}</code></li>
- <li><code>.searchbar-engine-button{{ mediawiki.external('open=\"true\"') }}</code></li>
- <li><code>.searchbar-engine-menuitem{{ mediawiki.external('selected=\"true\"') }} &gt; .menu-iconic-text</code></li>
- <li><code>.searchbar-left</code></li>
-</ul>
-
-<p>同樣的,你可能也需要更動其他部分。</p>
-
-<h4 id="preferences.2Fpreferences.css" name="preferences.2Fpreferences.css">preferences/preferences.css</h4>
-
-<p>以下是 Firefox 2 不再使用的樣式,應予移除:</p>
-
-<ul>
- <li><code>#browserStartupHomepage</code></li>
- <li><code>#browserStartupHomepage</code></li>
- <li><code>#paneDownloads description</code></li>
- <li><code>#paneGeneral description</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneDownloads') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneDownloads') }}:active</code></li>
-</ul>
-
-<p>以下是 Firefox 2 佈景主題應加上的樣式:</p>
-
-<ul>
- <li><code>#paneContent description</code></li>
- <li><code>#paneMain description</code></li>
- <li><code>#paneSecurity description</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneAdvanced') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneAdvanced') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneContent') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneContent') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneFeeds') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneFeeds') }}:active</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneFeeds') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneFeeds') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneGeneral') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneGeneral') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneMain') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneMain') }}:active</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneMain') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneMain') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=panePrivacy') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=panePrivacy') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneSecurity') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneSecurity') }}:active</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneSecurity') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneSecurity') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneTabs') }}:hover</code></li>
- <li><code>radio{{ mediawiki.external('pane=paneTabs') }}{{ mediawiki.external('selected=\"true\"') }}</code></li>
-</ul>
-
-<p>你依然可能得修改其他部分。</p>
-
-<h4 id="feeds.2FaddFeedReader.css" name="feeds.2FaddFeedReader.css">feeds/addFeedReader.css</h4>
-
-<p>這是 Firefox 2 中的新檔案,用於調整新增消息來源閱讀工具視窗樣式,即 browser/feeds/addFeedReader.xul。</p>
-
-<ul>
- <li><code>#imageBox</code>
-
- <ul>
- <li>顯示消息來源圖示的區塊。</li>
- </ul>
- </li>
- <li><code>#content</code>
- <ul>
- <li>視窗內容的樣式資訊。</li>
- </ul>
- </li>
- <li><code>#siteLabel</code>
- <ul>
- <li>網站文字的樣式。</li>
- </ul>
- </li>
-</ul>
-
-<h4 id="feeds.2Fsubscribe.css" name="feeds.2Fsubscribe.css">feeds/subscribe.css</h4>
-
-<p>這是 Firefox 2 的新檔案,用以調整訂閱消息來源視窗的樣式,即 browser/feeds/subscribe.xhtml。</p>
-
-<ul>
- <li><code>#application</code></li>
- <li><code>#feedBody</code></li>
- <li><code>#feedChangeSubscribeOptions</code></li>
- <li><code>#feedError</code></li>
- <li><code>#feedHeader</code></li>
- <li><code>#feedHeader{{ mediawiki.external('firstrun=\"true\"') }}</code></li>
- <li><code>#feedHeader{{ mediawiki.external('firstrun=\"true\"') }} #feedIntroText</code></li>
- <li><code>#feedHeader{{ mediawiki.external('firstrun=\"true\"') }} #feedSubscribeLine</code></li>
- <li><code>#feedIntroText</code></li>
- <li><code>#feedSubscribeDoneChangingOptions</code></li>
- <li><code>#feedSubscribeHandleText</code></li>
- <li><code>#feedSubscribeHandler</code></li>
- <li><code>#feedSubscribeLine</code></li>
- <li><code>#feedSubscribeOptions</code></li>
- <li><code>#feedSubscribeOptionsGroup</code></li>
- <li><code>#feedSubscribeOptionsGroupTitle</code></li>
- <li><code>#feedTitleContainer</code></li>
- <li><code>#feedTitleImage</code></li>
- <li><code>#feedTitleLink</code></li>
- <li><code>#readerContainer</code></li>
- <li><code>#readerGroup</code></li>
- <li><code>#readers</code></li>
- <li><code>#readers &gt; listitem</code></li>
- <li><code>.feedEntryContent</code></li>
- <li><code>.feedSubscribeButton</code></li>
- <li><code>.feedSubscribeButton .button-icon</code></li>
- <li><code>.feedSubscribeLink</code></li>
- <li><code>.feedSubscribeLinkBox</code></li>
- <li><code>.field</code></li>
- <li><code>.link</code></li>
- <li><code>.link:hover:active</code></li>
- <li><code>.plain</code></li>
- <li><code>.plain &gt; .button-box</code></li>
- <li><code>.plain:focus &gt; .button-box</code></li>
- <li><code>.styleLessBorderLess</code></li>
-</ul>
-
-<p>預設佈景主題中也含有 <code>a{{ mediawiki.external('href') }} img</code>、<code>body</code>、<code>h1</code>、<code>h2</code> 及 <code>html</code> 等樣式規則。</p>
-
-<h4 id="safebrowser.2Fbrowser-protection.css" name="safebrowser.2Fbrowser-protection.css">safebrowser/browser-protection.css</h4>
-
-<p>這個 Firefox 2 的新檔案用以調整偵測詐騙網站功能的樣式。下列樣式一定要設定好、在使用者碰上疑似詐騙網站時提醒他們:</p>
-
-<ul>
- <li><code>#safebrowsing-dim-area-canvas</code></li>
- <li><code>#safebrowsing-page-canvas</code></li>
- <li><code>#safebrowsing-palm-close</code></li>
- <li><code>#safebrowsing-palm-close-container</code></li>
- <li><code>#safebrowsing-palm-google-logo</code></li>
- <li><code>#safebrowsing-palm-message</code></li>
- <li><code>#safebrowsing-palm-message-actionbox</code></li>
- <li><code>#safebrowsing-palm-message-content</code></li>
- <li><code>#safebrowsing-palm-message-tail</code></li>
- <li><code>#safebrowsing-palm-message-tail-container</code></li>
- <li><code>#safebrowsing-palm-message-titlebox</code></li>
- <li><code>.safebrowsing-palm-bigtext</code></li>
- <li><code>.safebrowsing-palm-fixed-width</code></li>
- <li><code>.safebrowsing-palm-paragraph</code></li>
- <li><code>.safebrowsing-palm-smalltext</code></li>
-</ul>
-
-<p>而以下樣式則調整碰上疑似詐騙網站時網址列的小圖示,安全跟警告各有不同:</p>
-
-<ul>
- <li><code>#safebrowsing-urlbar-icon</code></li>
- <li><code>#safebrowsing-urlbar-icon{{ mediawiki.external('level=\"safe\"') }}</code></li>
- <li><code>#safebrowsing-urlbar-icon{{ mediawiki.external('level=\"warn\"') }}</code></li>
-</ul>
-
-<h4 id="engineManager.css" name="engineManager.css">engineManager.css</h4>
-
-<p>此檔案為 Firefox 2 新增,要調整的樣式如下:</p>
-
-<ul>
- <li><code>#engineList treechildren::-moz-tree-image(engineName)</code></li>
-</ul>
-
-<h3 id="Changes_in_global" name="Changes_in_global">Changes in global</h3>
-
-<h4 id="about.css" name="about.css">about.css</h4>
-
-<p>此檔案為 Firefox 2 新增、用以調整「關於 Mozilla Firefox」視窗的樣式。檔案中至少要有下列樣式資訊:</p>
-
-<ul>
- <li><code>#aboutLogoContainer</code></li>
- <li><code>#aboutPageContainer</code></li>
- <li><code>#version</code></li>
-</ul>
-
-<p>預設的佈景主題則額外調整了 <code>body</code>、<code>html</code>、<code>img</code>、<code>ul</code> 及 <code>ul &gt; li</code>。</p>
-
-<h4 id="browser.css_2" name="browser.css_2">browser.css</h4>
-
-<p>Firefox 2 已不使用下列樣式,應予移除:</p>
-
-<ul>
- <li><code>tab:focus</code></li>
- <li><code>tab{{ mediawiki.external('beforeselected=\"true\"') }} &gt; .tab-image-right</code></li>
- <li><code>tab{{ mediawiki.external('selected=\"true\"') }} &gt; .tab-image-left</code></li>
- <li><code>tab{{ mediawiki.external('selected=\"true\"') }} &gt; .tab-image-middle</code></li>
- <li><code>tab{{ mediawiki.external('selected=\"true\"') }} &gt; .tab-image-right</code></li>
-</ul>
-
-<p>而以下則是 Firefox 2 佈景主題該新增的樣式:</p>
-
-<ul>
- <li><code>.alltabs-item &gt; .menu-iconic-left &gt; .menu-iconic-icon</code></li>
- <li><code>.alltabs-item{{ mediawiki.external('busy') }} &gt; .menu-iconic-left &gt; .menu-iconic-icon</code></li>
- <li><code>.alltabs-item{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>.tab-close-button</code></li>
- <li><code>.tab-close-button &gt; .toolbarbutton-icon</code></li>
- <li><code>.tab-close-button-placeholder</code></li>
- <li><code>.tab-close-button:hover</code></li>
- <li><code>.tab-close-button:hover:active</code></li>
- <li><code>.tabbrowser-arrowscrollbox &gt; .scrollbutton-down</code></li>
- <li><code>.tabbrowser-arrowscrollbox &gt; .scrollbutton-down:hover</code></li>
- <li><code>.tabbrowser-arrowscrollbox &gt; .scrollbutton-up</code></li>
- <li><code>.tabbrowser-arrowscrollbox &gt; .scrollbutton-up:hover</code></li>
- <li><code>.tabbrowser-tab &gt; .tab-close-button</code></li>
- <li><code>.tabbrowser-tab:not({{ mediawiki.external('selected=\"true\"') }}) &gt; .tab-close-button</code></li>
- <li><code>.tabbrowser-tab:not({{ mediawiki.external('selected=\"true\"') }}):hover &gt; .tab-close-button</code></li>
- <li><code>.tabbrowser-tab{{ mediawiki.external('selected=\"true\"') }} &gt; .tab-close-button</code></li>
- <li><code>.tabbrowser-tab{{ mediawiki.external('selected=\"true\"') }} &gt; .tab-close-button:hover</code></li>
- <li><code>.tabbrowser-tab{{ mediawiki.external('selected=\"true\"') }} &gt; .tab-close-button:hover:active</code></li>
- <li><code>.tabbrowser-tabs{{ mediawiki.external('overflow=\"true\"') }} .tabs-alltabs-box</code></li>
- <li><code>.tabs-alltabs-box</code></li>
- <li><code>.tabs-alltabs-box:hover</code></li>
- <li><code>.tabs-alltabs-box{{ mediawiki.external('flash=\"true\"') }}</code></li>
- <li><code>tab &gt; .tab-image-left</code></li>
- <li><code>tab &gt; .tab-image-middle</code></li>
- <li><code>tab &gt; .tab-image-middle &gt; .tab-text</code></li>
- <li><code>tab &gt; .tab-image-right</code></li>
- <li><code>tab:focus &gt; .tab-image-middle &gt; .tab-text</code></li>
- <li><code>tab:hover:not({{ mediawiki.external('selected=\"true\"') }}) &gt; .tab-image-left</code></li>
- <li><code>tab:hover:not({{ mediawiki.external('selected=\"true\"') }}) &gt; .tab-image-middle</code></li>
- <li><code>tab:hover:not({{ mediawiki.external('selected=\"true\"') }}) &gt; .tab-image-right</code></li>
- <li><code>tab:not({{ mediawiki.external('selected=\"true\"') }}) &gt; .tab-image-left</code></li>
- <li><code>tab:not({{ mediawiki.external('selected=\"true\"') }}) &gt; .tab-image-middle</code></li>
- <li><code>tab{{ mediawiki.external('selected=\"true\"') }} .tab-image-middle &gt; .tab-text</code></li>
-</ul>
-
-<p>除此之外,依然可能要調整相關的樣式。</p>
-
-<h4 id="menu.css" name="menu.css">menu.css</h4>
-
-<p>這是 Firefox 2 用不上的樣式,應予刪除:</p>
-
-<ul>
- <li><code>menulist &gt; menupopup &gt; menuitem{{ mediawiki.external('_moz-menuactive=\"true\"') }}</code></li>
-</ul>
-
-<p>而 Firefox 2 佈景主題還應該加上下列樣式:</p>
-
-<ul>
- <li><code>.menu-iconic-icon</code></li>
- <li><code>menubar &gt; menu</code></li>
- <li><code>menubar &gt; menu{{ mediawiki.external('_moz-menuactive=\"true\"') }}{{ mediawiki.external('open=\"true\"') }}</code></li>
- <li><code>menuitem{{ mediawiki.external('type=\"checkbox\"') }} &gt; .menu-iconic-left</code></li>
- <li><code>menuitem{{ mediawiki.external('type=\"radio\"') }} &gt; .menu-iconic-left</code></li>
-</ul>
-
-<p>若有相關樣式,可能得另外調整。</p>
-
-<h4 id="notification.css" name="notification.css">notification.css</h4>
-
-<p>此外 Firefox 2 新增的檔案,用以調整阻擋彈出視窗、提示安裝 plugin 等的訊息列樣式。至少應定義下列樣式:</p>
-
-<ul>
- <li><code>.messageButton</code></li>
- <li><code>.messageCloseButton</code></li>
- <li><code>.messageImage</code></li>
- <li><code>.messageText</code></li>
- <li><code>.notification-inner</code></li>
- <li><code>notification</code></li>
- <li><code>notification{{ mediawiki.external('type=\"info\"') }}</code></li>
- <li><code>notification{{ mediawiki.external('type=\"warning\"') }}</code></li>
- <li><code>notification{{ mediawiki.external('type=\"critical\"') }}</code></li>
-</ul>
-
-<h4 id="scrollbox.css" name="scrollbox.css">scrollbox.css</h4>
-
-<p>請為 Firefox 2 佈景主題的這個檔案加上下列樣式:</p>
-
-<ul>
- <li><code>.autorepeatbutton-down{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.autorepeatbutton-down{{ mediawiki.external('orient=\"horizontal\"') }}</code></li>
- <li><code>.autorepeatbutton-down{{ mediawiki.external('orient=\"horizontal\"') }}{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.autorepeatbutton-up{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.autorepeatbutton-up{{ mediawiki.external('orient=\"horizontal\"') }}</code></li>
- <li><code>.autorepeatbutton-up{{ mediawiki.external('orient=\"horizontal\"') }}{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.scrollbutton-down</code></li>
- <li><code>.scrollbutton-down &gt; .toolbarbutton-text</code></li>
- <li><code>.scrollbutton-down{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.scrollbutton-down{{ mediawiki.external('orient=\"horizontal\"') }}</code></li>
- <li><code>.scrollbutton-down{{ mediawiki.external('orient=\"horizontal\"') }}{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.scrollbutton-up</code></li>
- <li><code>.scrollbutton-up &gt; .toolbarbutton-text</code></li>
- <li><code>.scrollbutton-up{{ mediawiki.external('disabled=\"true\"') }}</code></li>
- <li><code>.scrollbutton-up{{ mediawiki.external('orient=\"horizontal\"') }}</code></li>
- <li><code>.scrollbutton-up{{ mediawiki.external('orient=\"horizontal\"') }}{{ mediawiki.external('disabled=\"true\"') }}</code></li>
-</ul>
-
-<p>You may wish to make changes to other styles as well.</p>
-
-<ul>
- <li><code>toolbar{{ mediawiki.external('mode=\"icons\"') }} .toolbarbutton-text</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"text\"') }} .toolbarbutton-1 &gt; .toolbarbutton-text</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"text\"') }} .toolbarbutton-1 &gt; stack &gt; toolbarbutton &gt; .toolbarbutton-text</code></li>
- <li><code>toolbar{{ mediawiki.external('mode=\"text\"') }} .toolbarbutton-icon</code></li>
-</ul>
-
-<p>或許也要更動其他相關的部分。</p>
-
-<h3 id="mozapps_.E6.9B.B4.E5.8B.95.E8.99.95" name="mozapps_.E6.9B.B4.E5.8B.95.E8.99.95">mozapps 更動處</h3>
-
-<h4 id="extensions.2Fabout.css" name="extensions.2Fabout.css">extensions/about.css</h4>
-
-<p>Firefox 2 已經用不著以下樣式了,應予刪除:</p>
-
-<ul>
- <li><code>#contributorsBox</code></li>
- <li><code>#creatorBox</code></li>
- <li><code>#extensionContributors</code></li>
- <li><code>#extensionContributors</code></li>
- <li><code>#extensionCreatorLabel</code></li>
-</ul>
-
-<p>此外應新增下列樣式:</p>
-
-<ul>
- <li><code>.indent</code></li>
- <li><code>.sectionTitle</code></li>
-</ul>
-
-<p>其他關聯的樣式也可能需要變動。</p>
-
-<h4 id="extensions.2Fupdate.css" name="extensions.2Fupdate.css">extensions/update.css</h4>
-
-<p>Firefox 2 已經用不著以下樣式了,應予刪除:</p>
-
-<ul>
- <li><code>#foundList</code></li>
- <li><code>#statusbar-updates</code></li>
- <li><code>.updateCategoryBox</code></li>
- <li><code>.updateCategoryContent</code></li>
- <li><code>.updateCategoryIcon</code></li>
- <li><code>.updateCategoryLabel{{ mediawiki.external('selected=\"true\"') }}</code></li>
- <li><code>.updateIcon</code></li>
- <li><code>.updateIcon{{ mediawiki.external('severity=\"0\"') }}</code></li>
- <li><code>.updateIcon{{ mediawiki.external('severity=\"1\"') }}</code></li>
- <li><code>.updateIcon{{ mediawiki.external('severity=\"2\"') }}</code></li>
- <li><code>.updateIndicator &gt; label</code></li>
- <li><code>.updateIndicator{{ mediawiki.external('updateCount=\"0\"') }}</code></li>
- <li><code>.updateItemChecked</code></li>
- <li><code>.updateItemChecked .checkbox-label-box</code></li>
- <li><code>.updateItemFromLabel</code></li>
- <li><code>.updateItemIcon</code></li>
- <li><code>.updateItemIcon</code></li>
- <li><code>.updateItemName</code></li>
- <li><code>.updateItemNameRow</code></li>
- <li><code>.updateItemURL</code></li>
- <li><code>.warning</code></li>
- <li><code>radio{{ mediawiki.external('type=\"update-type\"') }}</code></li>
- <li><code>radiogroup{{ mediawiki.external('type=\"update-types\"') }}</code></li>
- <li><code>toolbarbutton{{ mediawiki.external('type=\"updates\"') }}</code></li>
- <li><code>toolbarbutton{{ mediawiki.external('type=\"updates\"') }} &gt; .toolbarbutton-icon</code></li>
- <li><code>toolbarbutton{{ mediawiki.external('type=\"updates\"') }}{{ mediawiki.external('severity=\"0\"') }} &gt; .toolbarbutton-icon</code></li>
- <li><code>toolbarbutton{{ mediawiki.external('type=\"updates\"') }}{{ mediawiki.external('severity=\"1\"') }} &gt; .toolbarbutton-icon</code></li>
- <li><code>toolbarbutton{{ mediawiki.external('type=\"updates\"') }}{{ mediawiki.external('severity=\"2\"') }} &gt; .toolbarbutton-icon</code></li>
- <li><code>toolbarbutton{{ mediawiki.external('type=\"updates\"') }}{{ mediawiki.external('updateCount=\"0\"') }}</code></li>
- <li><code>updateitem</code></li>
-</ul>
-
-<p>此外應新增下列樣式:</p>
-
-<ul>
- <li><code>.alertBox</code></li>
- <li><code>.throbber</code></li>
-</ul>
diff --git a/files/zh-tw/firefox_3_animated_png_support/index.html b/files/zh-tw/firefox_3_animated_png_support/index.html
deleted file mode 100644
index 8ed0584144..0000000000
--- a/files/zh-tw/firefox_3_animated_png_support/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Firefox 3 Animated PNG support
-slug: Firefox_3_Animated_PNG_support
-translation_of: Mozilla/Tech/APNG
----
-<h3 id="Firefox_3_.E6.94.AF.E6.8F.B4_Animated_PNG" name="Firefox_3_.E6.94.AF.E6.8F.B4_Animated_PNG">Firefox 3 支援 Animated PNG</h3>
-<ul>
- <li>Animated PNG Specification 的發展
- <ul>
- <li>2004 年,Mozilla Corporation 的 Stuart Parmenter 與 Vladimir Vukicevic,依據 Portable Network Graphic (PNG) 而設計了 APNG 延伸規格 (extension),加入了對動畫的支援。</li>
- <li>2006 年,Google Summer of Code 替目前被廣泛使用的 libpng 加入了 APNG 的支援。</li>
- <li>2007 年 5 月 23 日,Firefox 3 trunk build 加入 APNG 支援。</li>
- </ul>
- </li>
- <li>APNG 與 GIF 的比較
- <ul>
- <li>以往網路上的動畫圖片多用 GIF 格式,但因 GIF 每個像素僅支援 8 bit 的色彩深度,所以不適合用於色彩豐富或有漸層的圖片;APNG 支援 24 bit 的色彩深度。</li>
- <li>GIF 僅支援完全透明、完全不透明;APNG 支援 8 bit 的透明度。</li>
- <li>GIF 相容性高,目前常見瀏覽器都可以讀取;APNG 設計時即考慮到相容性的問題,所以 APNG 圖片的第一個 frame 是一張靜態的 PNG 圖片,只要瀏覽器支援 PNG,即使無法正確解讀 APNG,仍可顯示這張 APNG 圖片的第一個 frame 內的 PNG 圖片。</li>
- </ul>
- </li>
- <li>講了這麼多 APNG 的好處,要怎麼產生 APNG 圖片呢?<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5519">APNG Edit</a>、<a class="external" href="http://www.treebuilder.de/default.asp?file=660000.xml">SVG2PNG</a>。</li>
- <li>不幸的是,PNG Group 於 2007 年 4 月 20 日正式拒絕將 APNG 納入正式的延伸規格。</li>
-</ul>
-<h3 id=".E5.8F.83.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.83.E8.80.83.E8.B3.87.E6.96.99">參考資料</h3>
-<ul>
- <li><a class="external" href="http://people.mozilla.com/~dolske/apng/demo.html">APNG Demo</a></li>
- <li><a class="external" href="http://labs.mozilla.com/2007/08/better-animations-in-firefox-3/">Better Animation in Firefox 3</a></li>
- <li><a class="external" href="http://en.wikipedia.org/wiki/Animated_Portable_Network_Graphics">Animated PNG -- Wikipedia</a></li>
- <li><a class="external" href="http://developer.mozilla.org/en/docs/Animated_PNG_graphics">APNG Specification</a></li>
- <li><a class="external" href="http://sourceforge.net/mailarchive/message.php?msg_name=3.0.6.32.20070420132821.012dd8e8%40mail.comcast.net">VOTE FAILED: APNG 20070405a</a></li>
-</ul>
-<h3 id=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80" name=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80">延伸閱讀</h3>
-<ul>
- <li><a class="external" href="http://developer.mozilla.org/zh_tw/docs/Firefox_3_for_developers">Firefox 3 開發人員須知</a></li>
- <li><a class="external" href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">Graphics Interchange Format (GIF) Specification (Version 89a)</a></li>
- <li><a class="external" href="http://pmt.sourceforge.net/specs/png-1.2-pdg.html">Portable Network Graphics (PNG) Specification (Version 1.2)</a></li>
- <li><a class="external" href="http://www.w3.org/TR/PNG/">Portable Network Graphics (PNG) Specification (Second Edition)</a></li>
-</ul>
diff --git a/files/zh-tw/firefox_3_drag_and_drop_events/index.html b/files/zh-tw/firefox_3_drag_and_drop_events/index.html
deleted file mode 100644
index 03cca49700..0000000000
--- a/files/zh-tw/firefox_3_drag_and_drop_events/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Firefox 3 Drag and Drop Events
-slug: Firefox_3_Drag_and_Drop_Events
-translation_of: Archive/Mozilla/Drag_and_drop/Drag_and_drop_events
----
-<p>Firefox 3 加入了兩個新的 events 讓你可以決定 drag 什麼時候開始、什麼時候結束。這些 events 是 HTML 5 規格書的草稿中新加入的。</p>
-<p> </p>
-<dl>
- <dt>
- drag</dt>
- <dd>
- drag operation 開始時送出。</dd>
- <dt>
- dragend</dt>
- <dd>
- drag operation 結束時送出。</dd>
-</dl>
-<p>如想知道更多,請看 [<a class="external" href="http://developer.mozilla.org/en/docs/Drag_and_Drop">Drag and Drop.</a>]</p>
-<p>這裡有個例子可以參考:</p>
-<ul>
- <li>[<a class="external" href="http://developer.mozilla.org/samples/dragdrop/dragevents.txt">原始碼</a>]</li>
- <li>[<a class="external" href="http://developer.mozilla.org/samples/dragdrop/dragevents.html">網頁</a>]</li>
-</ul>
-<h3 id=".E5.8F.83.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.83.E8.80.83.E8.B3.87.E6.96.99">參考資料</h3>
-<ol>
- <li><a class="external" href="http://developer.mozilla.org/en/docs/Drag_and_drop_events">Drag and Drop events 原始網頁</a></li>
-</ol>
-<h3 id=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80" name=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80">延伸閱讀</h3>
-<ol>
- <li><a class="external" href="http://www.whatwg.org/specs/web-apps/current-work/#dnd">WHATWG HTML 5 Working Draft</a></li>
- <li><a class="external" href="http://developer.mozilla.org/en/docs/Drag_and_Drop">Drag and Drop</a></li>
- <li><a class="external" href="http://developer.mozilla.org/en/docs/nsIDragService">nsIDragService</a></li>
-</ol>
diff --git a/files/zh-tw/gecko_dom_參考/tcpsocket/index.html b/files/zh-tw/gecko_dom_參考/tcpsocket/index.html
deleted file mode 100644
index a8ed5411b5..0000000000
--- a/files/zh-tw/gecko_dom_參考/tcpsocket/index.html
+++ /dev/null
@@ -1,140 +0,0 @@
----
-title: TCPSocket API
-slug: Gecko_DOM_參考/TCPSocket
-translation_of: Archive/B2G_OS/API/TCPSocket
----
-<p>此處將以 JavaScript 格式存取原始的 TCP socket API。此 API 目前僅可用於 FirefoxOS 許可/認證的 App。</p>
-<h2 id="進入點_(Entry_point)">進入點 (Entry point)</h2>
-<pre class="brush: js">var TCPSocket = navigator.mozTCPSocket;
-if(TCPSocket){
- // ...
-}</pre>
-<h2 id="API">API</h2>
-<pre>interface TCPSocket{
- readonly attribute DOMString host;
- readonly attribute unsigned short port;
- readonly attribute boolean ssl;
- readonly attribute unsigned long bufferedAmount;
- readonly attribute DOMString binaryType;
-
- readonly attribute DOMString readyState;
- readonly attribute DOMString CONNECTING;
- readonly attribute DOMString OPEN;
- readonly attribute DOMString CLOSING;
- readonly attribute DOMString CLOSED;
-
- TCPSocket open(DOMString host, unsigned short port, [object options]);
- void suspend();
- void resume();
- void close();
- boolean send(in jsval data);
-
- attribute onopen;
- attribute ondrain;
- attribute ondata;
- attribute onerror;
- attribute onclose;
-};</pre>
-<h3 id="屬性_(Attributes)">屬性 (Attributes)</h3>
-<dl>
- <dt>
- host</dt>
- <dd>
- Socket 所要連接的 Host。</dd>
- <dt>
- port</dt>
- <dd>
- Socket 所要連接的 Port。</dd>
- <dt>
- ssl</dt>
- <dd>
- Socket 是否經過 SSL 加密。</dd>
- <dt>
- bufferedAmount</dt>
- <dd>
- 位於 Socket 緩衝區內,尚未傳送資料的位元數。</dd>
- <dt>
- readyState</dt>
- <dd>
- Socket 狀態。可能為 {<code>CONNECTING</code>, <code>OPEN</code>, <code>CLOSING</code>, <code>CLOSED</code>}。</dd>
-</dl>
-<h3 id="常數_(Constants)">常數 (Constants)</h3>
-<dl>
- <dt>
- CONNECTING</dt>
- <dd>
- 該數值表示 Socket 的連結狀態。尚未無法傳送資料。</dd>
- <dt>
- OPEN</dt>
- <dd>
- 該數值表示 Socket 的開啟狀態。已可傳送資料。</dd>
- <dt>
- CLOSING</dt>
- <dd>
- 該數值表示 Socket 的關閉中狀態。</dd>
- <dt>
- CLOSED</dt>
- <dd>
- 該數值表示 Socket 的已關閉狀態。</dd>
-</dl>
-<h3 id="函式_(Method)">函式 (Method)</h3>
-<dl>
- <dt>
- open(host, port [, options])</dt>
- <dd>
- 所回傳的新 TCP Socket,均已於指定的 <code>port</code> 連上指定的 <code>host</code>。<code>Options</code> 將作為正規物件。以下為可用選項:</dd>
-</dl>
-<ul>
- <li><code>useSSL</code> (此為 Boolean 值;預設為 <code>false</code>):將不論 TCP 連結是否使用 SSL。</li>
- <li><code>binaryType</code> (此為字串;預設為「string」):將以資料事件的格式接收 TCP 資料型態,再以 <code>send</code> 的方式傳送資料。可為「<code>string」或「</code><code>arraybuffer」</code>(<a href="/en-US/docs/JavaScript/Typed_arrays/Uint8Array" title="/en-US/docs/JavaScript/Typed_arrays/Uint8Array">UInt8Array</a>)</li>
-</ul>
-<dl>
- <dt>
- send(data)</dt>
- <dd>
- 將緩衝所要傳送至網路的資料。若可安全緩衝更多資料,則將回傳 <code>true。</code>若是回傳 <code>false,</code>即代表將緩衝更多資料。但若要達到較佳效能 (保持較小緩衝),則應等待下個 <code>drain</code> 事件以緩衝更多資料。</dd>
- <dt>
- suspend()</dt>
- <dd>
- 暫停 <code>data</code> 事件。</dd>
- <dt>
- resume()</dt>
- <dd>
- 繼續 <code>data</code> 事件。若於 Socket 並未暫停的情況下而呼叫此方式,隨即將丟出錯誤。</dd>
- <dt>
- close()</dt>
- <dd>
- 關閉 TCP Socket。</dd>
-</dl>
-<h3 id="事件_(Events)">事件 (Events)</h3>
-<p>透過 on* 屬性,可將 Event Listener 附加至 Socket。</p>
-<dl>
- <dt>
- open</dt>
- <dd>
- 在此事件之後,Socket 即準備好傳送/接收資料。</dd>
- <dt>
- drain</dt>
- <dd>
- Socket 中可緩衝更多資料。</dd>
- <dt>
- error</dt>
- <dd>
- 發生錯誤。在 <code>open</code> 事件之前,將拒絕連結作業 (不會發生 <code>close</code> 事件)。在 <code>open</code> 事件之後,就會遺失連結作業 (事件之後隨即觸發 <code>close</code> 事件)</dd>
- <dt>
- data</dt>
- <dd>
- 已接受到某些資料。事件的物件將包含 <code>data</code> 屬性,以利檢索資料。在建立 Socket 時,即已設定資料型態。</dd>
- <dt>
- close</dt>
- <dd>
- 已關閉 Socket。</dd>
-</dl>
-<h2 id="敘述_(Description)">敘述 (Description)</h2>
-<p>此 API 僅可用於 FirefoxOS 許可/認證過的 App。而其指涉的 Host 與 Port 均必須由 <a href="/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">app manifest</a> 所提及。</p>
-<p>僅限認證過的 App 可用 1024 以下的 Port。</p>
-<h2 id="另請參閱">另請參閱</h2>
-<ul>
- <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=733573" title="https://bugzilla.mozilla.org/show_bug.cgi?id=733573">Bug</a></li>
- <li><a href="https://hg.mozilla.org/mozilla-central/rev/3764a9891e74" title="https://hg.mozilla.org/mozilla-central/rev/3764a9891e74">Mercurial initial commit</a></li>
-</ul>
diff --git a/files/zh-tw/introducing_the_audio_api_extension/index.html b/files/zh-tw/introducing_the_audio_api_extension/index.html
deleted file mode 100644
index cc33296a5d..0000000000
--- a/files/zh-tw/introducing_the_audio_api_extension/index.html
+++ /dev/null
@@ -1,181 +0,0 @@
----
-title: 介紹音效 API
-slug: Introducing_the_Audio_API_Extension
-translation_of: Archive/Mozilla/Introducing_the_Audio_API_Extension
----
-<p>音效 API 是 HTML5 規範中的媒體元素 {{ HTMLElement("audio") }} 與 {{ HTMLElement("video") }} 的補充功能,它讓開發者可以存取音效的後設資料跟音頻本身的生資料。開發者可以具象化這些音效資料,分析這些資料,甚至是創造出新的音效資料。</p>
-<h2 id="讀取音頻串流">讀取音頻串流</h2>
-<h3 id="loadedmetadata_事件"><strong>loadedmetadata</strong> 事件</h3>
-<p>當一個媒體的後設資料傳至使用者電腦的時候,一個 <strong>loadedmetadata</strong> 事件會被觸發。這個事件有以下這些屬性:</p>
-<ul> <li><strong>mozChannels</strong>: 頻道的數量</li> <li><strong>mozSampleRate</strong>: 取樣頻率(次/秒)</li> <li><strong>mozFrameBufferLength</strong>: 在每次事件所有頻道的總樣本數</li>
-</ul>
-<p>這些資料在解碼音頻資料串流的的時候會用到。下面是一個從一個音頻元素取出這些資料的例子:</p>
-<pre class="brush: js">&lt;!DOCTYPE html&gt;
-&lt;html&gt;
- &lt;head&gt;
- &lt;title&gt;JavaScript 後設資料範例&lt;/title&gt;
- &lt;/head&gt;
- &lt;body&gt;
- &lt;audio id="audio-element"
- src="song.ogg"
- controls="true"
- style="width: 512px;"&gt;
- &lt;/audio&gt;
-    &lt;script&gt;
- function loadedMetadata() {
- channels = audio.mozChannels;
- rate = audio.mozSampleRate;
- frameBufferLength = audio.mozFrameBufferLength;
-      }
- var audio = document.getElementById('audio-element');
-      audio.addEventListener('loadedmetadata', loadedMetadata, false);
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-<h3 id="MozAudioAvailable_事件"><strong>MozAudioAvailable</strong> 事件</h3>
-<p>當播放一個音頻源的時候,樣本資料會被傳播至音頻處理層級而這些樣本也會被輸入進音頻緩衝(大小取決於<strong>mozFrameBufferLength</strong>)。當緩衝被填滿的時候,一個 <strong>MozAudioAvailable</strong> 事件會被觸發,而這個事件就含有一段時間內的樣本。這些樣本不一定在事件被觸發的時候已經被播放過,也不一定馬上反應媒體元素上的靜音設定或是音量調整。音頻的播放、暫停、跳躍都會影響生音頻資料串流。</p>
-<p><strong>MozAudioAvailable</strong> 事件有兩個屬性:</p>
-<ul> <li><strong>frameBuffer</strong>: 含有解碼後的音頻資料(浮點數)的frame緩衝(一個陣列)</li> <li><strong>time</strong>: 這些樣本的時間戳記。從開始時間計(秒)。</li>
-</ul>
-<p>frame緩衝含有一個音頻樣本的陣列。請注意樣本不會照對應的頻道分隔,而是混在一起。舉例來說,一個二頻道訊號:頻道1-樣本1 頻道2-樣本1 頻道1-樣本2 頻道2-樣本2 頻道3-樣本1 頻道3-樣本2。</p>
-<p>讓我們擴充之前的範例,在一個 {{ HTMLElement("div") }} 元素裡顯示時間戳記跟首兩個樣本:</p>
-<pre class="brush: js">&lt;!DOCTYPE html&gt;
-&lt;html&gt;
- &lt;head&gt;
- &lt;title&gt;JavaScript 具象化範例&lt;/title&gt;
- &lt;body&gt;
- &lt;audio id="audio-element"
- src="revolve.ogg"
- controls="true"
- style="width: 512px;"&gt;
- &lt;/audio&gt;
- &lt;pre id="raw"&gt;hello&lt;/pre&gt;
- &lt;script&gt;
- function loadedMetadata() {
- channels = audio.mozChannels;
- rate = audio.mozSampleRate;
- frameBufferLength = audio.mozFrameBufferLength;
- }
-
- function audioAvailable(event) {
-        var frameBuffer = event.frameBuffer;
- var t = event.time;
-
-        var text = "Samples at: " + t + "\n"
-        text += frameBuffer[0] + " " + frameBuffer[1]
-        raw.innerHTML = text;
- }
-
-      var raw = document.getElementById('raw')
- var audio = document.getElementById('audio-element');
- audio.addEventListener('MozAudioAvailable', audioAvailable, false);
-      audio.addEventListener('loadedmetadata', loadedMetadata, false);
-
- &lt;/script&gt;
- &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-<h2 id="產生一個音頻串流">產生一個音頻串流</h2>
-<p>產生並裝置一個由腳本撰寫的 {{ HTMLElement("audio") }} 元素(也就是沒有 <em>src</em> 屬性)也是可以的。你可以用腳本設定音頻串流,然後寫入音頻樣本。網頁製作者必須產生一個音頻物件然後使用 <code>mozSetup()</code> 函式來設定頻道的數量跟頻率(赫茲)。舉例來說:</p>
-<pre class="brush: js">// 產生一個新的音頻元素
-var audioOutput = new Audio();
-// 設定此音頻元素的串流為「雙聲道,44.1千赫」
-audioOutput.mozSetup(2, 44100);
-</pre>
-<p>再來就需要做樣本。這些樣本和 <strong>mozAudioAvailable</strong> 事件的樣本用的格式是一樣的。這些樣本可以用 <code>mozWriteAudio()</code> 函式來寫入音頻串流。請注意並不是所有的樣本都會被寫入串流。函示會回傳被寫入串流的樣本數,這對於下一次要寫入資料的時候的很好用。請看下面的例子:</p>
-<pre class="brush: js">// 用JS陣列來寫樣本
-var samples = [0.242, 0.127, 0.0, -0.058, -0.242, ...];
-var numberSamplesWritten = audioOutput.mozWriteAudio(samples);
-
-// 用參數化陣列來寫樣本
-var samples = new Float32Array([0.242, 0.127, 0.0, -0.058, -0.242, ...]);
-var numberSamplesWritten = audioOutput.mozWriteAudio(samples);
-</pre>
-<p>我們在下一個範例做一個脈動:</p>
-<pre class="brush: js">&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-     &lt;title&gt;及時產生音頻&lt;/title&gt;
-   &lt;script type="text/javascript"&gt;
-     function playTone() {
-       var output = new Audio();
-      output.mozSetup(1, 44100);
-       var samples = new Float32Array(22050);
-       var len = samples.length;
-
-       for (var i = 0; i &lt; samples.length ; i++) {
-         samples[i] = Math.sin( i / 20 );
-       }
-             output.mozWriteAudio(samples);
-     }
-   &lt;/script&gt;
- &lt;/head&gt;
- &lt;body&gt;
-   &lt;p&gt;當你按下以下的按鈕之後,這個demo會撥一秒鐘的音調。&lt;/p&gt;
-   &lt;button onclick="playTone();"&gt;播放&lt;/button&gt;
- &lt;/body&gt;
- &lt;/html&gt;</pre>
-<p><code>mozCurrentSampleOffset()</code> 方法回傳音頻串流的「可聽位置」,也就是最後一次被播放的樣本的位置。</p>
-<pre class="brush: js">// 取得當時後端音頻串流的可聽位置(以樣本數計算)。
-var currentSampleOffset = audioOutput.mozCurrentSampleOffset();
-</pre>
-<p>對於正在被播放的樣本(正在被硬體播放的樣本位置可以由 <code>mozCurrentSampleOffset()</code> 取得),為了保持一點點的領先(「一點點」一般大約是500 ms),你應該定期地用 <code>mozWriteAudio()</code> 寫入固定額度的音頻資料。舉例來說,假如我們設此音頻為雙聲道與每秒44100個樣本、間隔時間為100 ms、pre-buffer為500 ms,則我們每次需要寫 (2 * 44100 / 10) = 8820 個樣本,總計的樣本數是 (currentSampleOffset + 2 * 44100 / 2)。(譯注:個人覺得這段寫得很怪,直接看<a href="/zh_tw/Creating_a_Web_based_tone_generator" title="zh_tw/Creating a Web based tone generator">例子</a>可能會比較好懂。)</p>
-<p>為了讓聲音的播放不間斷但是在寫入音頻資料資料與播放的時間差為最小,自動偵測最小的pre-buffer也是可能的。為了達到這個目的,你可以在一開始的時候寫入很小部份的資料,當看到 <code>mozCurrentSampleOffset()</code> 的回傳值大於 0 的時候測量其時間差。</p>
-<pre class="brush: js">var prebufferSize = sampleRate * 0.020; // 初使緩衝為 20 ms
-var autoLatency = true, started = new Date().valueOf();
-...
-// 延遲(Latency)的自動偵測
-if (autoLatency) {
- prebufferSize = Math.floor(sampleRate * (new Date().valueOf() - started) / 1000);
- if (audio.mozCurrentSampleOffset()) { // 開始播放了嗎?
- autoLatency = false;
-}
-</pre>
-<h2 id="處理音頻串流">處理音頻串流</h2>
-<p>由於 <strong>MozAudioAvailable</strong> 事件與 <code>mozWriteAudio()</code> 方法都是使用 <code>Float32Array</code> 為傳值,把一個音頻串流的輸出直接接上(或是處理過後接上)另一個是可以做到的。你應該將第一個音頻串流設為靜音使得只有第二音頻元素能被聽到。</p>
-<pre class="brush: js">&lt;audio id="a1"
- src="song.ogg"
- controls&gt;
-&lt;/audio&gt;
-&lt;script&gt;
-var a1 = document.getElementById('a1'),
- a2 = new Audio(),
- buffers = [];
-
-function loadedMetadata() {
- // 將音頻 a1 設為靜音
- a1.volume = 0;
- // 講 a2 的設定弄成與 a1 相等,然後由這個播放。
- a2.mozSetup(a1.mozChannels, a1.mozSampleRate);
-}
-
-function audioAvailable(event) {
- // 寫入當下的 framebuffer
- var frameBuffer = event.frameBuffer;
- writeAudio(frameBuffer);
-}
-
-a1.addEventListener('MozAudioAvailable', audioAvailable, false);
-a1.addEventListener('loadedmetadata', loadedMetadata, false);
-
-function writeAudio(audio) {
- buffers.push(audio);
-
- // 有在緩衝裡的資料的話,寫入該資料
- while(buffers.length &gt; 0) {
- var buffer = buffers.shift();
- var written = a2.mozWriteAudio(buffer);
- // 如果非所有資料都被寫進去的話,將之留在緩衝裡:
- if(written &lt; buffer.length) {
- buffers.unshift(buffer.slice(written));
- return;
- }
- }
-}
-&lt;/script&gt;
-</pre>
-<h2 id="參見">參見</h2>
-<ul> <li><a href="/zh_tw/Creating_a_Web_based_tone_generator" title="zh_tw/Creating a Web based tone generator">製作一個 Web 上的音調產生器</a></li> <li><a href="/en/Visualizing_Audio_Spectrum" title="en/Visualizing Audio Spectrum"><span>Visualizing an audio spectrum</span></a></li> <li><a href="/en/Displaying_the_Mozilla_logo_with_the_Audio_Samples" title="en/Displaying the Mozilla logo with the Audio Samples"><span>Displaying a graphic with audio samples</span></a></li> <li><a href="/en/Creating_a_simple_synth" title="https://developer.mozilla.org/en/Creating_a_simple_synth">Creating a simple synth (using existing libraries)</a></li> <li><a class=" external" href="http://en.wikipedia.org/wiki/Digital_audio" title="http://en.wikipedia.org/wiki/Digital_audio">Wikipedia article on digital audio</a><span><br> </span></li>
-</ul>
-<p>{{ languages( { "en": "en/Introducing_the_Audio_API_Extension"} ) }}</p>
diff --git a/files/zh-tw/localization_quick_start_guide/index.html b/files/zh-tw/localization_quick_start_guide/index.html
deleted file mode 100644
index 51fb9d4f8e..0000000000
--- a/files/zh-tw/localization_quick_start_guide/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Localization quick start guide
-slug: Localization_Quick_Start_Guide
-tags:
- - Localization
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Localization/Quick_start_guide
----
-<p>Welcome to Mozilla localization (l10n for short)!</p>
-<p>Whether you're here to start up your own localization in the Mozilla project or to join the efforts of an existing localization, you've come to the right place. This guide is filled with all of the basic, technical information you need to get involved in the Mozilla l10n program. We will take you through the steps to get started, from the initial environment setup to testing and releasing your own localization. Along the way, you'll learn about the variety of projects you can contribute to and the tools used to localize them.</p>
-<p>When we get to specific examples, we'll take them from the Firefox project, as it is the most widely localized project within Mozilla. As you near the end of this guide, you should be able to make a change to Firefox in your local setting and then see that change in the Firefox interface. In closing, when you finish this guide, you will have all the tools necessary to start contributing!</p>
-<p>Remember, this guide will instruct you on the technical aspects of Mozilla l10n only. Visit the <a class="link-https" href="https://wiki.mozilla.org/L10n:Localization_Process" title="https://wiki.mozilla.org/L10n:Overview">L10n Process</a> page to learn about the whole process.</p>
-<div style="width: 25%; background-color: #4AA02C; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
- <h2 id="Initial_setup"><a href="/en/Localization_Quick_Start_Guide/Initial_setup" title="en/Localization_Quick_Start_Guide/Initial_setup">Initial setup</a></h2>
- Tech prep work before localizing.</div>
-<div style="width: 25%; background-color: #A2BFF4; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
- <h2 id="Translation_phase"><a href="/en/Localization_Quick_Start_Guide/Translation_phase" title="en/Localization_Quick_Start_Guide/Translation_phase">Translation phase</a></h2>
- L10n tools tutorials for translation.</div>
-<div style="width: 25%; background-color: orange; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
- <h2 id="QA_phase"><a href="/en/Localization_Quick_Start_Guide/QA_phase" title="en/Localization_Quick_Start_Guide/QA_phase">QA phase</a></h2>
- L10n testing tutorials.</div>
-<div style="width: 92%; background-color: #C0C0C0; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
- <h2 id="Release_phase"><a href="/en/Localization_Quick_Start_Guide/Release_phase" title="en/Localization_Quick_Start_Guide/Release_phase">Release phase</a></h2>
- Steps to shipping your localization work.</div>
-<div style="background-color: white; border: 3px solid; display: block; padding: 20px; margin-top: 20px;">
- These four stages make up tech side of the l10n program. To learn more about any of these, click on any of the links above. To get the big picture, we suggest you start with the green bubble and move from stage to stage.</div>
-<p> </p>
-<div class="note">
- <strong>Note</strong>: This guide is written for two types of contributors: those starting a new localization and those joining an existing localization. It is important to know which information applies to which type of contributor. To help you filter through to the most applicable information, note that all information that is unique to those starting a new localization will be in <span style="color: #daa520;">orange font</span>. All information that is unique to those joining an existing localization will be in <span style="color: #0000ff;">blue font</span>.</div>
-<p class="note"> </p>
-<p>{{ Next("Localization_Quick_Start_Guide/Initial_setup") }}</p>
diff --git a/files/zh-tw/localization_quick_start_guide/initial_setup/index.html b/files/zh-tw/localization_quick_start_guide/initial_setup/index.html
deleted file mode 100644
index 00400f6dac..0000000000
--- a/files/zh-tw/localization_quick_start_guide/initial_setup/index.html
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Initial setup
-slug: Localization_Quick_Start_Guide/Initial_setup
-translation_of: Mozilla/Localization/Quick_start_guide/Initial_setup
----
-<p>在你参与到本地化项目之前,你要做几件事情:获取源码、获取相关工具、配置好本地环境(你的电脑)。同时你也要看一下项目里面是不是已经有你母语的本地化工作已经在进行。下面就来谈谈上面说的这几个事情。</p>
-<h3 id="新项目还是正在进行的项目">新项目还是正在进行的项目</h3>
-<p>首先你要确定你参与的项目是新项目还是正在进行的项目。只有知道了项目的类型,你才能明白在接下来的教程里面哪些信息是针对你的。</p>
-<p>你可以这么做:</p>
-<p>浏览 <a class="link-https" href="https://wiki.mozilla.org/L10n:Teams" title="https://wiki.mozilla.org/L10n:Teams">localization community directory</a> to see if one already exists for your locale.</p>
-<ol start="1" style="list-style-type: lower-alpha;">
- <li><span style="color: #0000cd;">If a community already exists, reach out to them and ask how you can help.</span></li>
- <li><span style="color: #ff8c00;">If a community doesn't exist, send an <a class="link-https" href="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales" title="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales">email to the new-locales newsgroup</a> for additional guidance</span><span style="color: #ff8c00;">.</span></li>
-</ol>
-<h3 id="Accounts">Accounts</h3>
-<p>There are a handful of accounts that you need to be aware as you begin. They're not required for you to begin contributing, but will be required when you are preparing to produce an official release. For now, simply be aware that these will become important as your efforts progress. These accounts will store your code, contributions, and help you produce an official localization.</p>
-<dl>
- <dt style="margin-left: 40px;">
- hg (Mercurial)</dt>
- <dd style="">
- Mercurial is the revision control environment that houses the main Mozilla source code as well as localized code for each official Mozilla localization. You will need this for localizing Mozilla applications. For anyone to gain access to hg repos, you must visit the <a class="external" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">Mozilla Commiter page</a> and follow the process outlined there. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741305" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741305">Here is an example bug</a> that illustrates the process well. Use <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&amp;component=Repository%20Account%20Requests&amp;rep_platform=All&amp;op_sys=All&amp;cc=l10n%40mozilla.com&amp;short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&amp;component=Repository%20Account%20Requests&amp;rep_platform=All&amp;op_sys=All&amp;cc=l10n%40mozilla.com&amp;short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)">this bug template</a> when filing your hg account registration bug. <span style="">Add a request about creating your locale's repository to the <a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">new locales newsgroup</a>.</span></dd>
- <dt style="margin-left: 40px;">
- SVN</dt>
- <dd style="margin-left: 40px;">
- SVN is a revision control environment that Mozilla uses to house Mozilla source websites and their localizations for each official Mozilla localization. See <a class="link-https" href="https://wiki.mozilla.org/SVN#SVN_account_for_localizers" title="https://wiki.mozilla.org/SVN#SVN_account_for_localizers">this wiki page</a> about how to gain access to SVN. <span style="">Add a request about creating your locale's repository to the <a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">new locales newsgroup</a>.</span></dd>
-</dl>
-<dl>
- <dt style="margin-left: 40px;">
- Web-based L10n tools</dt>
- <dd style="margin-left: 40px;">
- We'll talk about these in a little bit. For now, just be aware that should you choose to use them, you may need to create a personal account.</dd>
- <dt style="margin-left: 40px;">
- Mozilla LDAP</dt>
- <dd style="margin-left: 40px;">
- You will need a Mozilla LDAP account once you're ready to have your localization registered on the main Mozilla repositories. Add a request about creating your LDAP account to the<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics"> new locales newsgroup</a>.</dd>
- <dt style="margin-left: 40px;">
- <span style="">Locale-specific Bugzilla component</span></dt>
- <dd style="margin-left: 40px;">
- <span style="">Having a Bugzilla component specific to your locale will help us to track your localization's progress from first steps to official release. It will also notify us when you're having problems unique to your localization team's work. Add a request about creating your locale's Bugzilla component to the </span><a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics"><span style="">new locales newsgroup</span></a><span style="">.</span></dd>
-</dl>
-<h3 id="Local_environment_tools">Local environment tools</h3>
-<p>Similar to accounts, there is a number of environment tools that you should install on your personal computer. These tools will help you to store your contributions, build Mozilla applications and language packs, and test your work.</p>
-<dl>
- <dt style="margin-left: 40px;">
- Hg (Mercurial)</dt>
- <dd style="margin-left: 40px;">
- As noted above, we use Mercurial for maintaining Mozilla source code and localized code. Not only will you need a localization repository to store your localizations, but you need to have it installed and configured on your personal computer as well. You can find everything you need to know about installing and configuring Mercurial for your localization work <a href="/en/Localizing_with_Mercurial#Install_Mercurial" title="https://developer.mozilla.org/en/L10n_on_Mercurial#Install_Mercurial">here</a>.</dd>
-</dl>
-<dl>
- <dt style="margin-left: 40px;">
- compare-locales</dt>
- <dd style="margin-left: 40px;">
- compare-locales is a Python script that helps you check your work without needing to run Firefox or another application. Install intructions are located <a href="/en/Compare-locales" title="https://developer.mozilla.org/en/Compare-locales">here</a>.</dd>
- <dt style="margin-left: 40px;">
- L10n checks</dt>
- <dd style="margin-left: 40px;">
- L10n checks is another Python script that helps you check your work without running an application. Install instructions are located <a href="/en/L10n_Checks" title="https://developer.mozilla.org/en/L10n_Checks">here</a>.</dd>
- <dt style="margin-left: 40px;">
- autoconf 2.13</dt>
- <dd style="margin-left: 40px;">
- autoconf is a utility that is vital to manually creating Mozilla application builds and language packs. We use version 2.13 and higher for these builds. You can find the source files and install instructions <a class="external" href="http://www.gnu.org/software/autoconf/" title="http://www.gnu.org/software/autoconf/">here</a>.</dd>
- <dt style="margin-left: 40px;">
- wget</dt>
- <dd style="margin-left: 40px;">
- wget is a command-line utility that allows you to retrieve files using internet protocols. We use it for retrieving files from repositories. You can find the source files and install instructions <a class="external" href="http://www.gnu.org/s/wget/" title="http://www.gnu.org/s/wget/">here</a>.</dd>
- <dt style="margin-left: 40px;">
- Perl</dt>
- <dd style="margin-left: 40px;">
- Perl is a programming language that will help you create Mozilla application builds and language packs. You can find the source files and install instructions <a class="external" href="http://www.perl.org/" title="http://www.perl.org/">here</a>.</dd>
- <dt style="margin-left: 40px;">
- Python</dt>
- <dd style="margin-left: 40px;">
- Python is a programming language in which many of our L10n testing scripts are written. You can find the source files and install instructions <a class="external" href="http://python.org/" title="http://python.org/">here</a>.</dd>
- <dt style="margin-left: 40px;">
- Locale Switcher or Quick Locale Switcher</dt>
- <dd style="margin-left: 40px;">
- Both Locale Switcher and Quick Locale Switcher are add-ons for Mozilla applications. Either one is necessary to enable you to see your work within a Mozilla application. You can install either by searching for them in Firefox's add-ons manager or following <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/">these</a> <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/">links</a>.</dd>
- <dt style="margin-left: 40px;">
- A solid, Unicode-based, text editor</dt>
- <dd style="margin-left: 40px;">
- Here are some suggestions:
- <ul>
- <li style="margin-left: 40px;">Windows: <a class="external" href="http://notepad-plus.sourceforge.net/uk/site.htm" rel="external nofollow" title="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> or <a class="external" href="http://www.flos-freeware.ch/notepad2.html" rel="external nofollow" title="http://www.flos-freeware.ch/notepad2.html">Notepad2</a></li>
- <li style="margin-left: 40px;">GNU/Linux: <a class="external" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29" rel="external nofollow" title="http://en.wikipedia.org/wiki/Vim_(text_editor)">vim</a>, <a class="external" href="http://projects.gnome.org/gedit/" rel="external nofollow" title="http://projects.gnome.org/gedit/">gedit</a> or <a class="external" href="http://www.kate-editor.org/kate" rel="external nofollow" title="http://www.kate-editor.org/kate">Kate</a></li>
- <li style="margin-left: 40px;">Mac OS X: <a class="external" href="http://www.barebones.com/products/TextWrangler/" rel="external nofollow" title="http://www.barebones.com/products/TextWrangler/">TextWrangler</a></li>
- </ul>
- </dd>
- <dt style="margin-left: 40px;">
- GNU make</dt>
- <dd style="margin-left: 40px;">
- <span class="external">Make is a tool which controls the generation of executables. You can find version</span> 3.79.1 or higher <a class="external" href="http://www.gnu.org/software/make/" title="http://www.gnu.org/software/make/">here</a>. Unfortunately, other varieties of <code>make</code> won't do.</dd>
-</dl>
-<h2 id="End_of_initial_setup">End of initial setup</h2>
-<p>Now that you've finished your initial setup, it's time for the best part: translating!</p>
-<p>{{ PreviousNext("Localization_Quick_Start_Guide", "Localization_Quick_Start_Guide/Translation_phase") }}</p>
diff --git a/files/zh-tw/mercurial/index.html b/files/zh-tw/mercurial/index.html
deleted file mode 100644
index 1a375a0643..0000000000
--- a/files/zh-tw/mercurial/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Mercurial
-slug: Mercurial
-translation_of: Mozilla/Mercurial
----
-<p><a class="external" href="http://www.selenic.com/mercurial/wiki/"><strong>Mercurial</strong></a> (also known as "hg"), is the <a class="external" href="http://blog.ianbicking.org/distributed-vs-centralized-scm.html">distributed version control software</a> used for the development of Firefox, Thunderbird, and the shared Gecko core. It replaced <a href="/En/Developer_Guide/Source_Code/CVS" title="En/Developer_Guide/Source_Code/CVS">CVS</a> after Mozilla 1.9 was branched.</p>
-<p><strong><code>hg</code></strong> is the Mercurial command-line tool, Hg being the chemical symbol for the element mercury.</p>
-<h2 id="Learning_to_use_Mercurial" name="Learning_to_use_Mercurial">Learning to use Mercurial</h2>
-<p>First, read every word of <a href="/en/Mercurial_basics" title="en/Mercurial_basics">Mercurial basics</a>, before you do anything else.</p>
-<p>Then, the <a href="/en/Mercurial_FAQ" title="en/Mercurial_FAQ">Mercurial FAQ</a> is a decent place to start.</p>
-<p>See <a href="/En/Developer_Guide/Source_Code/Mercurial" title="https://developer.mozilla.org/En/Developer_Guide/Source_Code/Mercurial">Getting Mozilla Source Code Using Mercurial</a><a href="/En/Developer_Guide/Source_Code/Mercurial" title="En/Developer_Guide/Source_Code/Mercurial"> </a>for getting a tree to build.</p>
-<p>See <a class="internal" href="/en/Mercurial_Queues" title="en/Mercurial Queues">Mercurial Queues</a> for managing queues of patches, and how to integrate Mercurial with Bugzilla.</p>
-<h2 id="Further_reading" name="Further_reading">Further reading</h2>
-<p>The <a class="external" href="http://hgbook.red-bean.com/hgbook.html">hg book</a> is the definitive Mercurial user guide.</p>
-<p>The <a href="/Special:Tags?tag=Mercurial&amp;language=en" title="https://developer.mozilla.org/Special:Tags?tag=Mercurial&amp;language=en">Mercurial tag</a> lists the Mercurial-related articles on MDC.</p>
-<p>And on wiki.mozilla.org, these helpful pages:</p>
-<ul>
- <li>{{ interwiki('wikimo', 'Using_Mercurial_locally_with_CVS', 'Using Mercurial locally with CVS') }}, a how-to. (Note that this is only useful for code that's still exclusively in CVS.)</li>
- <li>{{ interwiki('wikimo', 'Mercurial_on_Windows', 'Mercurial on Windows') }}</li>
- <li><a class="internal" href="/en/Creating_Mercurial_User_Repositories" title="en/Publishing Mercurial Clones">Publishing Mercurial Clones</a> - If you have a LDAP account that allows you to push to hg.mozilla.org you can also create your own user repositories on the server to share work.</li>
-</ul>
-<p>{{ languages( { "es": "es/Mercurial", "fr": "fr/Mercurial", "ja": "ja/Mercurial" } ) }}</p>
diff --git a/files/zh-tw/mozilla/add-ons/add-on_debugger/index.html b/files/zh-tw/mozilla/add-ons/add-on_debugger/index.html
deleted file mode 100644
index 2b3106d6af..0000000000
--- a/files/zh-tw/mozilla/add-ons/add-on_debugger/index.html
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: 附加元件除錯工具箱
-slug: Mozilla/Add-ons/Add-on_Debugger
-translation_of: 'https://extensionworkshop.com/documentation/develop/debugging/'
----
-<p>{{AddonSidebar}}</p>
-
-<p>附加元件除錯工具箱提供 Firefox 工具箱中的部分工具,能在附加元件的作用範圍中除錯:</p>
-
-<ul>
- <li><a href="/en-US/docs/Tools/Debugger">JavaScript 除錯器</a>,可用以設定中斷點,或測試程式執行內部的各種狀態。</li>
- <li><a href="/en-US/docs/Tools/Web_Console">主控台</a>,可用以查閱 log 訊息,或者在附加元件的作用範圍中執行 JavaScript</li>
- <li><a href="/en-US/docs/Tools/Scratchpad">程式碼速記本</a>,可以在附加元件的作用範圍中執行 JavaScript,並另存為新檔</li>
-</ul>
-
-<p>需要重新啟動瀏覽器的 XUL overlay 附加元件無法使用附加元件除錯工具箱,這類的元件請使用<a href="/en-US/docs/Tools/Browser_Toolbox">瀏覽器工具箱</a>。</p>
-
-<p>請看這段影片,快速認識附加元件除錯工具箱:</p>
-
-<p>{{EmbedYouTube("KU3Xsck7qy0")}}</p>
-
-<h2 id="啟用附加元件除錯工具箱" style="line-height: 30px; font-size: 2.14285714285714rem;">啟用附加元件除錯工具箱</h2>
-
-<div>
-<p>如欲啟用附加元件除錯工具箱,您必須啟用 Firefox 裡的「啟用瀏覽器 chrome 與附加元件除錯工具箱」及「啟用遠端除錯」兩項設定。您可開啟<a href="https://developer.mozilla.org/en-US/docs/Tools/Tools_Toolbox">網頁工具箱</a>裡的<a href="https://developer.mozilla.org/en-US/docs/Tools/Tools_Toolbox#Settings">設定</a>,而後在「<a href="https://developer.mozilla.org/en-US/docs/Tools/Tools_Toolbox#Advanced_settings">進階設定</a>」一區中啟用上述選項。</p>
-</div>
-
-<h2 id="開啟附加元件除錯工具箱"><span style="font-size: 2.14285714285714rem;">開啟</span>附加元件除錯工具箱</h2>
-
-<p><em>註:如前所述,附加元件除錯工具</em>箱<em>是專供不需重新啟動、以 SDK 製作的附加元件使用。若想為其他類型的附加元件除錯,請使用<span style="line-height: 1.5;"><a href="https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox">瀏覽器工具箱</a>裡的工具。</span></em></p>
-
-<p><span style="line-height: 1.5;">Now open the Add-on Manager. Next to the entry for your add-on you will see a button labeled "Debug". Click this button to launch the debugger.</span></p>
-
-<p>Next you'll see a dialog asking you to accept an incoming connection. Click "OK", and the debugger will start in a separate window. Note that sometimes the debugger window is hidden by the main Firefox window.</p>
-
-<p>{{EmbedYouTube("DvNpUVJcG_E")}}</p>
-
-<h2 id="使用附加元件除錯工具">使用附加元件除錯工具</h2>
-
-<p>The Add-on Debugger looks and behaves very much like the <a href="/en-US/docs/Tools/Browser_Toolbox">Browser Toolbox</a>, except that while the scope of the Browser Toolbox is the whole browser, the Add-on Debugger is focused on the specific add-on for which you launched it. Like the Browser Toolbox, a toolbar along the top lets you switch between a number of different tools. In Firefox 31 there's only one such tool, the JavaScript Debugger, but with Firefox 32 you also get the Console and Scratchpad.</p>
-
-<h3 id="JavaScript_除錯器">JavaScript 除錯器</h3>
-
-<p>This behaves just like the normal <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a>, except its scope is the add-on rather than a web page. On the left-hand side it lists JavaScript sources:</p>
-
-<ul>
- <li>at the top is <code>bootstrap.js</code>: either the one you've written if your add-on is a manually written <a href="/en-US/Add-ons/Bootstrapped_extensions">bootstrapped add-on</a>, or the one included by the SDK if your add-on is an SDK add-on.</li>
- <li>next, if your add-on is an SDK add-on, you'll find your add-on's <code>main.js</code>, any <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK#Local_Modules">local modules</a> shipping with your add-on, and any content scripts that are currently loaded</li>
- <li>next, all the SDK modules used directly or indirectly by your add-on</li>
-</ul>
-
-<h4 id="Content_scripts">Content scripts</h4>
-
-<p>Content scripts are only listed if and when they are loaded. So, if your Add-on <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts#Loading_content_scripts">loads a content script</a> with <code>contentScriptFile</code>, the file will not appear in the debugger sources until you go to a page that loads the content script.</p>
-
-<p>If you set a breakpoint in a content script, it will not be active for instances of the content script which are loaded after the breakpoint is set.</p>
-
-<p>For example, suppose you have an add-on that attaches a content script to every tab the user loads. The content script adds a click handler to the page. As soon as you open a tab, this content script will be listed in the debugger. If you then set a breakpoint in the content script's click handler, then execution will pause whenever you click the page. But if you open a new tab, there are now two instances of the content script, and the breakpoint will not be enabled for the second instance You'll need to set a new breakpoint now if you want to it work for the second instance.</p>
-
-<p>We're investigating improvements to this in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1016046">bug 1016046</a>.</p>
-
-<h3 id="主控台">主控台</h3>
-
-<p>The Console behaves just like the <a href="/en-US/docs/Tools/Web_Console">Web Console</a>, but its scope is the add-on rather than the web page.</p>
-
-<p>However, note that it actually runs in the context of the add-on's <code>bootstrap.js</code>, which may not be what you expect if your add-on uses the SDK: you won't see any objects defined in your add-on's <code>main.js</code>, and you won't see <code>require()</code> either. This issue is being tracked as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005193">bug 1005193</a>.</p>
-
-<p>You can execute Console statements in the context of <code>main.js</code> while execution is paused inside <code>main.js</code>.</p>
-
-<h3 id="程式碼速記本">程式碼速記本</h3>
-
-<p>The Scratchpad behaves just like the normal <a href="/en-US/docs/Tools/Scratchpad">Scratchpad</a>, but its scope is the add-on rather than the web page.</p>
-
-<p>Like the Console, the add-on Scratchpad runs in the context of the add-on's <code>bootstrap.js</code> even if the add-on uses the SDK, and as with the Console you can execute Scratchpad code in the context of <code>main.js</code> while execution is paused inside <code>main.js</code>.</p>
-
-<h2 id="為_chrome_或_about_頁面除錯">為 chrome: 或 about: 頁面除錯</h2>
-
-<p>從 Firefox 37 起,一般的<a href="/en-US/docs/Tools/Debugger">除錯工具</a>已經可以用來為 chrome: 及 about: 兩類頁面除錯,使用方法同一般網頁除錯。</p>
diff --git a/files/zh-tw/mozilla/add-ons/add-on_guidelines/index.html b/files/zh-tw/mozilla/add-ons/add-on_guidelines/index.html
deleted file mode 100644
index fe05866a87..0000000000
--- a/files/zh-tw/mozilla/add-ons/add-on_guidelines/index.html
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: Add-on guidelines
-slug: Mozilla/Add-ons/Add-on_guidelines
-translation_of: 'https://extensionworkshop.com/documentation/publish/add-on-policies/'
----
-<p>These add-on guidelines were created to foster an open and diverse add-on developer community while ensuring an excellent user experience. They apply to all add-ons and add-on updates regardless of where they are hosted, and also apply to customizations performed by installers that configure Firefox without using an add-on. Add-ons hosted on <a class="external text" href="https://addons.mozilla.org/" rel="nofollow">AMO</a> are subject to <a href="https://addons.mozilla.org/developers/docs/policies" title="https://addons.mozilla.org/developers/docs/policies">additional policies</a>.</p>
-<h2 id="Be_Transparent">Be Transparent</h2>
-<ul>
- <li>Add-ons must either be installed using the add-on web install system, or be approved by the user using the <a class="external text" href="https://blog.mozilla.org/addons/2011/08/11/strengthening-user-control-of-add-ons/" rel="nofollow">install opt-in dialog</a>.
- <ul>
- <li>We want our users to know what they are installing so that they are not unpleasantly surprised by changes they did not expect. We also want them to know what to remove if they decide not to keep it.</li>
- <li>Add-ons installed through application installers should <a class="external text" href="/en-US/docs/Adding_Extensions_using_the_Windows_Registry" rel="nofollow">use the Windows Registry</a> or equivalent global install methods so that Firefox displays the opt-in screen. The opt-in screen must not be tampered with in any way, including overlaying additional information or images on top of it.</li>
- </ul>
- </li>
- <li>Add-ons must always be possible to uninstall or disable from the Add-ons Manager.
- <ul>
- <li>Add-ons installed globally using the Windows registry or global extension directories cannot be uninstalled (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=640775" rel="nofollow">bug 640775</a>), but they can be disabled to the same effect.</li>
- </ul>
- </li>
- <li>Add-ons must use a <a class="external text" href="/en-US/docs/Install_manifests#id" rel="nofollow">single unique ID</a> during their entire lifetime.
- <ul>
- <li>Using the same ID for multiple products, or multiple IDs for a single product, can lead to problems with automatic updates as well as blocklisting conflicts. Add-ons may change their IDs due to ownership changes, as they commonly use an email address-like format (
- <i>
- e.g.,</i>
- personasplus@mozilla.com).</li>
- </ul>
- </li>
- <li>Add-ons must not use brand names, trademarks, or other terms in ways that deceive users. Using Mozilla trademarks must follow <a class="external text" href="http://www.mozilla.org/foundation/trademarks/policy.html" rel="nofollow">our trademark policy</a>.</li>
- <li>Add-ons should clearly communicate their intended purpose and active features, including features introduced through updates.
- <ul>
- <li>While we understand and support add-on developers who choose to monetize their products, this should not come at the expense of users' browsing experience. If an add-on inserts advertisements, affiliate codes, sponsored search results, or the like, into web pages, the user should be made aware of this when the add-on is installed. Likewise, if some features require payment to use, or require payment to remain active after a trial period, users should be made aware of this.</li>
- </ul>
- </li>
-</ul>
-<h2 id="Be_Respectful_to_Users">Be Respectful to Users</h2>
-<ul>
- <li>Add-ons must remove all introduced code, executables, and application configuration changes when they are uninstalled.
- <ul>
- <li>Uninstalling an add-on using the regular uninstall process should generally suffice. This guideline primarily applies to changes made to preferences such as the homepage, default search URL, network settings, and so forth. These preferences should be restored to their previous values when the add-on is uninstalled. Most add-ons can easily accomplish this by making such changes via a <a class="external text" href="/en-US/docs/Building_an_Extension#Defaults_Files" rel="nofollow">default preferences file</a>.</li>
- </ul>
- </li>
- <li>Add-ons must respect the users' choices and not make unexpected changes, or limit users' ability to revert them.
- <ul>
- <li>For instance, users generally do not expect an add-on to change the Firefox homepage. Asking users to opt-in to such extra changes is recommended.</li>
- <li>Making settings changes difficult or impossible to revert is prohibited. It's not allowed to block users or other add-ons or installers from changing any settings.</li>
- </ul>
- </li>
- <li>Add-ons should make it clear how private user data is being used.
- <ul>
- <li>Add-ons which send user data over the Internet should generally provide a Privacy Policy, ideally concise and easily readable.</li>
- </ul>
- </li>
- <li>Add-on developers should provide a mechanism for them to be contacted.
- <ul>
- <li>While developers are not required to provide a support channel for users, it is recommended. All add-on developers should have a contact form or public email address so that they can be contacted in case of emergencies, such as guideline violations that could lead to blocklisting.</li>
- </ul>
- </li>
-</ul>
-<h2 id="Be_Safe">Be Safe</h2>
-<ul>
- <li>Add-ons must not cause harm to users' data, system, or online identities.</li>
- <li>Add-ons must not transmit users' private data unsafely, or expose it to third parties unnecessarily.
- <ul>
- <li>Private data should always be sent over a secure connection. This includes browsing data such as visited URLs and bookmarks.</li>
- <li>Making the browser easier to fingerprint by adding text to the User-Agent string or adding custom headers is also a privacy concern, and should be avoided.</li>
- </ul>
- </li>
- <li>Add-ons must not create or expose application or system vulnerabilities.
- <ul>
- <li>Security bugs happen, but once discovered they need to be addressed immediately. A popular add-on with a security vulnerability is a valuable attack vector for hackers, and in such cases we will move quickly to blocklist the add-on if there is no prompt response from the developer.</li>
- </ul>
- </li>
- <li>Add-ons must not tamper with the application or blocklist update systems.</li>
- <li>Add-ons should not store any browsing data while in Private Browsing Mode.
- <ul>
- <li>It's worth stressing that PBM is about avoiding storing
- <i>
- local</i>
- data while browsing, not about sending data elsewhere. To learn more about PBM we recommend reading <a class="external text" href="http://ehsanakhgari.org/tag/privatebrowsing" rel="nofollow">Ehsan's blog posts</a> about it.</li>
- </ul>
- </li>
-</ul>
-<h2 id="Be_Stable">Be Stable</h2>
-<ul>
- <li>Add-ons must not cause hangs or crashes.</li>
- <li>Add-ons should not break or disable core application features.
- <ul>
- <li>This includes features like tabbed browsing, Private Browsing Mode, and the location bar. Add-ons that are specifically meant to do this are exempt.</li>
- </ul>
- </li>
- <li>Add-ons should not cause memory leaks, or unnecessarily consume large amounts of memory.</li>
- <li>Add-ons should not slow down the application or system significantly.</li>
- <li>Add-ons should not consume network resources to an extent that affects regular application usage.
- <ul>
- <li>Downloading large amounts of data without user awareness can significantly disrupt regular browsing, and may result in unexpected charges for users who have network usage limitations (notably on mobile).</li>
- </ul>
- </li>
-</ul>
-<h2 id="Exceptions">Exceptions</h2>
-<ul>
- <li>Add-ons can break some of these guidelines if that's their intended purpose and there isn't malicious intent (
- <i>
- e.g.,</i>
- a security exploit proof of concept).</li>
- <li>Add-ons deployed by administrators within workplaces, schools, kiosks, and so forth, are exempt from most guidelines.</li>
- <li>As add-ons can only run clean up code if they are uninstalled while Firefox is running and they are enabled, we do not require that they attempt to clean up after themselves when they are uninstalled under other circumstances. Application installers that configure Firefox without add-ons should revert any changes when uninstalled.</li>
- <li>Add-ons may leave behind preferences changes in private preference branches which do not affect Firefox when the add-on is not active, so that any previous add-on configuration is not lost if the user decides to re-install the add-on in the future.</li>
-</ul>
-<p>Other exceptions may apply.</p>
-<h2 id="Enforcement">Enforcement</h2>
-<p>Add-ons that do not follow these guidelines may qualify for blocklisting, depending on the extent of the violations. Guidelines qualified with the word
- <i>
- must</i>
- are especially important, and violations thereof will most likely result in a blocklisting nomination.</p>
-<p>The Add-ons Team will do their best to contact the add-on's developers and provide a reasonable time frame for the problems to be corrected before a block is put in place. If an add-on is considered malicious or its developers have proven unreachable or unresponsive, or in case of repeat violations, blocklisting may be immediate.</p>
-<p>Guideline violations should be <a class="external text" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism&amp;component=Add-ons" rel="nofollow">reported via Bugzilla</a>, under Tech Evangelism &gt; Add-ons. Questions can be posted in the <a class="external text" href="irc://irc.mozilla.org/addons" rel="nofollow">#addons IRC channel</a>.</p>
-<p>These guidelines may change in the future. All updates will be announced in the <a class="external text" href="https://blog.mozilla.org/addons/" rel="nofollow">Add-ons Blog</a>.</p>
diff --git a/files/zh-tw/mozilla/add-ons/amo/index.html b/files/zh-tw/mozilla/add-ons/amo/index.html
deleted file mode 100644
index 3857ed65ca..0000000000
--- a/files/zh-tw/mozilla/add-ons/amo/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: AMO
-slug: Mozilla/Add-ons/AMO
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Add-ons/AMO
----
-<p>Content to be added.</p>
diff --git a/files/zh-tw/mozilla/add-ons/amo/policy/index.html b/files/zh-tw/mozilla/add-ons/amo/policy/index.html
deleted file mode 100644
index 8ac1738387..0000000000
--- a/files/zh-tw/mozilla/add-ons/amo/policy/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: AMO 政策
-slug: Mozilla/Add-ons/AMO/Policy
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Add-ons/AMO/Policy
----
-<p>{{AddonSidebar}}</p>
-
-<p>Mozilla 致力於確保套件的用戶與開發者,都有著良好的體驗。提交套件以前,請閱讀以下政策。</p>
-
-<dl>
- <dd></dd><dt><a href="/Mozilla/Add-ons/AMO/Policy/Agreement">Developer Agreement</a></dt>
-<dd>Effective January 5, 2016</dd> <dt><a href="/Mozilla/Add-ons/AMO/Policy/Reviews">Review Process</a></dt>
-<dd>Add-ons extend the core capabilities of Firefox, allowing users to modify and personalize their Web experience. A healthy add-on ecosystem, built on trust, is vital for developers to be successful and users to feel safe making Firefox their own. For these reasons, Mozilla requires all add-ons to comply with the following set of policies on acceptable practices. The below is not intended to serve as legal advice, nor is it intended to serve as a comprehensive list of terms to include in your add-on’s privacy policy.</dd> <dt><a href="/Mozilla/Add-ons/AMO/Policy/Featured">Featured Add-ons</a></dt>
-<dd>How up-and-coming add-ons become featured and what's involved in the process. </dd> <strong><a href="/zh-TW/Add-ons#Contact_us">聯絡我們</a></strong>
-
- <p>如何就這些套件的政策,與我們取得聯繫</p>
-
-</dl>
diff --git a/files/zh-tw/mozilla/add-ons/amo/policy/聯絡資訊/index.html b/files/zh-tw/mozilla/add-ons/amo/policy/聯絡資訊/index.html
deleted file mode 100644
index 7358e5f642..0000000000
--- a/files/zh-tw/mozilla/add-ons/amo/policy/聯絡資訊/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: 附加元件聯絡資訊
-slug: Mozilla/Add-ons/AMO/Policy/聯絡資訊
-translation_of: Mozilla/Add-ons#Contact_us
----
-<p>誠摯的感謝您連絡 Mozilla 附加元件團隊,淺請先閱讀本頁說明以確保您的訊息被正確的遞送。</p>
-
-<h4 id="附加元件支援服務">附加元件支援服務</h4>
-
-<p>若你需要特定附加元件的支援訊息,比如說 "我該如何使用這個附加元件?" 或 "它怎麼不能...?",請透過列於附加元建列表中的聯絡方式,聯絡該附加元件的開發者。</p>
-
-<h4 id="附加元件編輯者審閱">附加元件編輯者審閱</h4>
-
-<p>若你有任何關於某個附加元件的編輯者審閱(Editor's review)的疑問,或想回報政策違反,請 E-mail 至 <a href="mailto:amo-editors@mozilla.org">amo-editors@mozilla.org</a>。<strong>Almost all add-on reports fall under this category.</strong> Please be sure to include a link to the add-on in question and a detailed description of your question or comment.</p>
-
-<h4 id="Add-on_Security_Vulnerabilities">Add-on Security Vulnerabilities</h4>
-
-<p>If you have discovered a security vulnerability in an add-on, even if it is not hosted here, Mozilla is very interested in your discovery and will work with the add-on developer to correct the issue as soon as possible. Add-on security issues can be reported <a href="http://www.mozilla.org/projects/security/security-bugs-policy.html">confidentially</a> in <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=addons.mozilla.org&amp;component=Add-on%20Security&amp;maketemplate=Add-on%20Security%20Bug&amp;bit-23=1&amp;rep_platform=All&amp;op_sys=All">Bugzilla</a> or by emailing <a href="mailto:amo-admins@mozilla.org">amo-admins@mozilla.org</a>.</p>
-
-<h4 id="Website_Functionality_Development">Website Functionality &amp; Development</h4>
-
-<p>If you've found a problem with the site, we'd love to fix it. Please <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=addons.mozilla.org">file a bug report</a> in Bugzilla, including the location of the problem and how you encountered it.</p>
-
-<p><span class="comment seoSummary">How to get in touch with us regarding these policies or your add-on. </span></p>
diff --git a/files/zh-tw/mozilla/add-ons/firefox_for_android/api/index.html b/files/zh-tw/mozilla/add-ons/firefox_for_android/api/index.html
deleted file mode 100644
index a8e6ebf9e0..0000000000
--- a/files/zh-tw/mozilla/add-ons/firefox_for_android/api/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: API
-slug: Mozilla/Add-ons/Firefox_for_Android/API
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Add-ons/Legacy_Firefox_for_Android/API
----
-<p>There are a couple of differences between desktop Firefox and Firefox for Android that are particularly relevant to add-on developers:</p>
-
-<ul>
- <li>there is no visible XUL in the user interface, so you can't use XUL overlays to create your add-on's UI</li>
- <li>the <a href="https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser" title="https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser"><code>gBrowser</code></a> object does not exist, so you can't use <a href="https://developer.mozilla.org/en-US/docs/XUL/tabbrowser" title="https://developer.mozilla.org/en-US/docs/XUL/tabbrowser"><code>tabbrowser</code></a> to interact with browser tabs</li>
-</ul>
-
-<p>Instead, Firefox for Android provides its own APIs:</p>
-
-<ul>
- <li><a href="/en-US/docs/Extensions/Mobile/API/NativeWindow" title="/en-US/docs/DOM/en/Extensions/Mobile/API/NativeWindow"><code>NativeWindow</code></a> enables you to manipulate parts of the native Android UI</li>
- <li><a href="/en-US/docs/Extensions/Mobile/API/BrowserApp" title="/en-US/docs/Extensions/Mobile/API/BrowserApp"><code>BrowserApp</code></a> enables you to interact with browser tabs</li>
- <li><a href="/en-US/Add-ons/Firefox_for_Android/API/PageActions.jsm">PageActions.jsm</a> allows you to add buttons to the urlbar. {{fx_minversion_inline("34")}}</li>
- <li><a href="/en-US/docs/Extensions/Mobile/API/Prompt.jsm" title="/en-US/docs/Extensions/Mobile/API/Prompt.jsm"><code>Prompt.jsm</code></a> allows you to easily show native prompts, dialogs, menus, and lists</li>
- <li><a href="/en-US/docs/Extensions/Mobile/API/Notifications.jsm"><code>Notifications.jsm</code></a> allows you to handle system notifcations</li>
- <li><a href="/en-US/docs/Extensions/Mobile/API/Home.jsm" title="/en-US/docs/Extensions/Mobile/API/Prompt.jsm"><code>Home.jsm</code></a> allows you to customize the home page</li>
- <li><a href="/en-US/Add-ons/Firefox_for_Android/API/HomeProvider.jsm" title="/en-US/docs/Extensions/Mobile/API/Prompt.jsm"><code>HomeProvider.jsm</code></a> allows you to store data to show on the home page</li>
- <li><a href="/en-US/Add-ons/Firefox_for_Android/API/Accounts.jsm" title="/en-US/docs/Extensions/Mobile/API/Prompt.jsm"><code>Accounts.jsm</code></a> allows you to start the Firefox Account set-up process</li>
- <li><a href="/en-US/Add-ons/Firefox_for_Android/API/JavaAddonManager.jsm" title="/en-US/docs/Extensions/Mobile/API/Prompt.jsm"><code>JavaAddonManager.jsm</code></a> allows you to dynamically load and interface with compiled Java code. {{fx_minversion_inline("42")}}</li>
-</ul>
-
-<p>In these pages we've documented the main functions and properties exposed by these objects. To see all the details, refer to the code at <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a>.</p>
diff --git a/files/zh-tw/mozilla/add-ons/firefox_for_android/index.html b/files/zh-tw/mozilla/add-ons/firefox_for_android/index.html
deleted file mode 100644
index 8ade48ff37..0000000000
--- a/files/zh-tw/mozilla/add-ons/firefox_for_android/index.html
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: Extensions for Firefox for Android
-slug: Mozilla/Add-ons/Firefox_for_Android
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Add-ons/Legacy_Firefox_for_Android
----
-<p>Firefox for Android supports add-ons using the same <a href="/en-US/Add-ons" title="en/Extensions">extension system</a> used by all other Gecko-based applications. You can use the <a href="https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/tutorials/mobile.html">Add-on SDK</a> or build <a href="/en-US/Add-ons/Bootstrapped_extensions">manually bootstrapped restartless add-ons</a>. You can even develop traditional restart-required add-ons, although the other two approaches are preferable.</p>
-
-<p>Add-ons that work with desktop Firefox <strong>do not</strong> automatically work in Firefox for Android:</p>
-
-<ul>
- <li>There is no visible XUL in the UI, so you can't use an overlay to create the UI.</li>
- <li>Internal code and objects, like <code>gBrowser</code>, do not exist. Look at the Firefox on Android <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a> file to learn about the internals. Much of the same fundamental functionality exists.</li>
- <li>Services like <code>nsIPromptService</code> and <code>nsIAlertsService</code> are implemented to use native Android UI.</li>
- <li>There is a simple JavaScript object, called <a href="https://developer.mozilla.org/en/Extensions/Mobile/API/NativeWindow" title="en/Extensions/Mobile/NativeWindow"><code>NativeWindow</code></a>, that allows you to manipulate parts of the native Android UI.</li>
-</ul>
-
-<p>The following articles provide help with developing extensions for Firefox on Android. In addition, please refer to the <a class="internal" href="/en-US/Add-ons" title="En/Extensions">general extension documentation</a> that applies to all Mozilla applications.</p>
-
-<div class="column-container">
-<div class="column-half">
-<h3 id="Tutorials">Tutorials</h3>
-
-<dl>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/Walkthrough">Walkthrough</a></dt>
- <dd>Developing, packaging and installing a simple add-on for Firefox for Android.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/Firefox_Hub_Walkthrough">Firefox Hub Walkthrough</a></dt>
- <dd>How to develop a Firefox Hub add-on to add content to the Firefox for Android home page.</dd>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">Add-on SDK</a></dt>
- <dd>How to develop Firefox for Android add-ons using the Add-on SDK.</dd>
-</dl>
-
-<h3 id="Sample_code">Sample code</h3>
-
-<dl>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/Code_snippets">Code Snippets</a></dt>
- <dd>Code samples for common tasks.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/Initialization_and_Cleanup">Initialization and Cleanup</a></dt>
- <dd>How to initialize your add-on when it is started and clean up when it is shut down.</dd>
- <dt><a href="https://github.com/mozilla/firefox-for-android-addons">Firefox for Android Add-ons Github Repo</a></dt>
- <dd>A collection of JS modules, sample code, and boilerplate repos to help you build add-ons for Firefox for Android.</dd>
-</dl>
-</div>
-
-<div class="column-half">
-<h3 id="API_reference">API reference</h3>
-
-<dl>
- <dt><a class="internal" href="/en-US/Add-ons/Firefox_for_Android/API/NativeWindow">NativeWindow</a></dt>
- <dd>Create native Android UI widgets.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/API/BrowserApp">BrowserApp</a></dt>
- <dd>Access browser tabs and the web content they host.</dd>
- <dt><a class="internal" href="/en-US/Add-ons/Firefox_for_Android/API/Prompt.jsm">Prompt.jsm</a></dt>
- <dd>Show native Android dialogs.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/API/HelperApps.jsm">HelperApps.jsm</a></dt>
- <dd>Query and launch native apps installed on the system.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/API/Notifications.jsm">Notifications.jsm</a></dt>
- <dd>Use extended properties for Android system notifications.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/API/Home.jsm">Home.jsm</a></dt>
- <dd>Customize the home page.</dd>
- <dt><a href="/en-US/Add-ons/Firefox_for_Android/API/HomeProvider.jsm">HomeProvider.jsm</a></dt>
- <dd>Store data to display on the home page.</dd>
- <dt> </dt>
-</dl>
-</div>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/mozilla/add-ons/sdk/builder/index.html b/files/zh-tw/mozilla/add-ons/sdk/builder/index.html
deleted file mode 100644
index f7dc93a009..0000000000
--- a/files/zh-tw/mozilla/add-ons/sdk/builder/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Builder
-slug: Mozilla/Add-ons/SDK/Builder
-translation_of: Archive/Add-ons/Add-on_SDK/Builder
----
-<p>Add-on Builder 是 Web-based 的開發環境,讓開發者能以 SDK API 來開發附加元件,而不必使用 <code>cfx</code> 命令列工具。Add-on Builder 已經於 2014 年 4 月 1 日下架,而原本的網址「builder.addons.mozilla.org」則轉至此頁。<br>
- <br>
- 若您過去使用 Builder 來開發採用 SDK 的附加元件,便已獲得絕大部分以 SDK 直接開發的必備知識。Builder 中的 <a href="/Mozilla/Add-ons/SDK/High-Level_APIs">high-level</a> 與 <a href="/Mozilla/Add-ons/SDK/Low-Level_APIs">low-level</a> API,就跟 SDK 裡的一模一樣。改用 SDK 很簡單:</p>
-<ul>
- <li><a href="/Mozilla/Add-ons/SDK/Tutorials/Installation">首先在您的電腦上安裝 SDK</a></li>
- <li>閱讀<a href="/Mozilla/Add-ons/SDK/Tutorials/Getting_started">入門文件</a>與 <a href="/Mozilla/Add-ons/SDK/Tools/cfx"><code>cfx</code> 參考文件</a>,學習使用 cfx 命令列工具</li>
- <li>深入了解 <a href="/Mozilla/Add-ons/SDK/Tools/package_json">package.json</a> 檔,以便設定附加原件的屬性</li>
-</ul>
diff --git a/files/zh-tw/mozilla/add-ons/sdk/guides/index.html b/files/zh-tw/mozilla/add-ons/sdk/guides/index.html
deleted file mode 100644
index f4e37d9e10..0000000000
--- a/files/zh-tw/mozilla/add-ons/sdk/guides/index.html
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: Guides
-slug: Mozilla/Add-ons/SDK/Guides
-translation_of: Archive/Add-ons/Add-on_SDK/Guides
----
-<p>This page lists more theoretical in-depth articles about the SDK.</p>
-<hr>
-<h3 id="Contributor's_guide"><a name="contributors-guide">Contributor's guide</a></h3>
-<div class="column-container">
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Getting_Started">Getting Started</a></dt>
- <dd>
- Learn how to contribute to the SDK: getting the code, opening/taking a bug, filing a patch, getting reviews, and getting help.</dd>
- <dt>
- <a href="Guides/Modules">Modules</a></dt>
- <dd>
- Learn about the module system used by the SDK (which is based on the CommonJS specification), how sandboxes and compartments can be used to improve security, and about the built-in SDK module loader, known as Cuddlefish.</dd>
- <dt>
- <a href="Guides/Classes_and_Inheritance">Classes and Inheritance</a></dt>
- <dd>
- Learn how classes and inheritance can be implemented in JavaScript, using constructors and prototypes, and about the helper functions provided by the SDK to simplify this.</dd>
- </dl>
- </div>
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Private_Properties">Private Properties</a></dt>
- <dd>
- Learn how private properties can be implemented in JavaScript using prefixes, closures, and WeakMaps, and how the SDK supports private properties by using namespaces (which are a generalization of WeakMaps).</dd>
- <dt>
- <a href="Guides/Content_Processes">Content Processes</a></dt>
- <dd>
- The SDK was designed to work in an environment where the code to manipulate web content runs in a different process from the main add-on code. This article highlights the main features of that design.</dd>
- </dl>
- </div>
-</div>
-<hr>
-<h3 id="SDK_infrastructure"><a name="sdk-infrastructure">SDK infrastructure</a></h3>
-<div class="column-container">
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Module_structure_of_the_SDK">Module structure of the SDK</a></dt>
- <dd>
- The SDK, and add-ons built using it, are of composed from reusable JavaScript modules. This explains what these modules are, how to load modules, and how the SDK's module tree is structured.</dd>
- <dt>
- <a href="Guides/SDK_API_Lifecycle">SDK API lifecycle</a></dt>
- <dd>
- Definition of the lifecycle for the SDK's APIs, including the stability ratings for APIs.</dd>
- </dl>
- </div>
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Program_ID">Program ID</a></dt>
- <dd>
- The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.</dd>
- <dt>
- <a href="Guides/Firefox_Compatibility">Firefox compatibility</a></dt>
- <dd>
- Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.</dd>
- </dl>
- </div>
-</div>
-<hr>
-<h3 id="SDK_idioms"><a name="sdk-idioms">SDK idioms</a></h3>
-<div class="column-container">
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Working_with_Events">Working With Events</a></dt>
- <dd>
- Write event-driven code using the the SDK's event emitting framework.</dd>
- <dt>
- <a href="Guides/Content_Scripts">Content scripts guide</a></dt>
- <dd>
- An overview of content scripts, including: what they are, what they can do, how to load them, how to communicate with them.</dd>
- </dl>
- </div>
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Two_Types_of_Scripts">Two Types of Scripts</a></dt>
- <dd>
- This article explains the differences between the APIs available to your main add-on code and those available to content scripts.</dd>
- </dl>
- </div>
-</div>
-<hr>
-<h3 id="XUL_migration"><a name="xul-migration">XUL migration</a></h3>
-<div class="column-container">
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/XUL_Migration_Guide">XUL Migration Guide</a></dt>
- <dd>
- Techniques to help port a XUL add-on to the SDK.</dd>
- <dt>
- <a href="Guides/XUL_vs_SDK">XUL versus the SDK</a></dt>
- <dd>
- A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.</dd>
- </dl>
- </div>
- <div class="column-half">
- <dl>
- <dt>
- <a href="Guides/Porting_the_Library_Detector">Porting Example</a></dt>
- <dd>
- A walkthrough of porting a relatively simple XUL-based add-on to the SDK.</dd>
- </dl>
- </div>
-</div>
-<p> </p>
diff --git a/files/zh-tw/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html b/files/zh-tw/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html
deleted file mode 100644
index 42c5e0ca85..0000000000
--- a/files/zh-tw/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html
+++ /dev/null
@@ -1,588 +0,0 @@
----
-title: context-menu
-slug: Mozilla/Add-ons/SDK/High-Level_APIs/context-menu
-translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/context-menu
----
-<div class="note">
- <p>Stable</p>
-</div>
-<p><span class="seoSummary">加入選單項目、子選單、選單分隔線到頁面右鍵選單。</span></p>
-<h2 id="用法">用法</h2>
-<p>Instead of manually adding items when particular contexts occur and then removing them when those contexts go away, you <em>bind</em> items to contexts, and the adding and removing is automatically handled for you. Items are bound to contexts in much the same way that event listeners are bound to events. When the user invokes the context menu, all of the items bound to the current context are automatically added to the menu. If no items are bound, none are added. Likewise, any items that were previously in the menu but are not bound to the current context are automatically removed from the menu. You never need to manually remove your items from the menu unless you want them to never appear again.</p>
-<p>For example, if your add-on needs to add a context menu item whenever the user visits a certain page, don't create the item when that page loads, and don't remove it when the page unloads. Rather, create your item only once and supply a context that matches the target URL.</p>
-<p>Context menu items are displayed in the order created or in the case of sub menus the order added to the sub menu. Menu items for each add-on will be grouped together automatically. If the total number of menu items in the main context menu from all add-ons exceeds a certain number (normally 10 but configurable with the <code>extensions.addon-sdk.context-menu.overflowThreshold</code> preference) all of the menu items will instead appear in an overflow menu to avoid making the context menu too large.</p>
-<h3 id="Specifying_Contexts">Specifying Contexts</h3>
-<p>As its name implies, the context menu should be reserved for the occurrence of specific contexts. Contexts can be related to page content or the page itself, but they should never be external to the page.</p>
-<p>For example, a good use of the menu would be to show an "Edit Image" item when the user right-clicks an image in the page. A bad use would be to show a submenu that listed all the user's tabs, since tabs aren't related to the page or the node the user clicked to open the menu.</p>
-<h4 id="The_Page_Context">The Page Context</h4>
-<p>First of all, you may not need to specify a context at all. When a top-level item does not specify a context, the page context applies. An item that is in a submenu is visible unless you specify a context.</p>
-<p>The <em>page context</em> occurs when the user invokes the context menu on a non-interactive portion of the page. Try right-clicking a blank spot in this page, or on text. Make sure that no text is selected. The menu that appears should contain the items "Back", "Forward", "Reload", "Stop", and so on. This is the page context.</p>
-<p>The page context is appropriate when your item acts on the page as a whole. It does not occur when the user invokes the context menu on a link, image, or other non-text node, or while a selection exists.</p>
-<h4 id="宣告式場景條件(Declarative_Contexts)">宣告式場景條件(Declarative Contexts)</h4>
-<p>當你藉由設定 <code>context</code> 屬性(該屬性為: 傳給 constructor 的選項物件之屬性)來新增選單項目時,你可以指定一些簡單的宣告式場景條件, 如下:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "My Menu Item",
- context: cm.URLContext("*.mozilla.org")
-});</pre>
-<table class="standard-table">
- <tbody>
- <tr>
- <th>Constructor</th>
- <th>選單項目出現的條件</th>
- </tr>
- <tr>
- <td><code>PageContext() </code></td>
- <td>當場景為網頁時.</td>
- </tr>
- <tr>
- <td><code>SelectionContext() </code></td>
- <td>當使用者在網頁上選取項目時.</td>
- </tr>
- <tr>
- <td><code>SelectorContext(selector) </code></td>
- <td>當選單在符合下述條件之一的節點上顯示: <code>selector</code>匹配, CSS 選擇器, 或 其祖先節點匹配選擇器. <code>selector</code>可以有多個(以逗點分隔), 例如, <code>"a[href], img"</code>.</td>
- </tr>
- <tr>
- <td><code>URLContext(matchPattern) </code></td>
- <td>特定網址的網頁. <code>matchPattern</code> is a match pattern string or an array of match pattern strings. 當 <code>matchPattern</code> 是陣列, 網址符合任何陣列元素之一時. These are the same match pattern strings that you use with the <a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod"><code>page-mod</code></a> <code>include</code> property. <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_match-pattern">Read more about patterns</a>.</td>
- </tr>
- <tr>
- <td><code>PredicateContext(predicateFunction)</code></td>
- <td>當選單被觸發時,<code>predicateFunction</code> 函數被呼叫,若函數傳回值為真值,則選單項目顯示。這函數傳入一物件,物件有著描述選單觸發場景條件的屬性.</td>
- </tr>
- <tr>
- <td>array</td>
- <td>An array of any of the other types. This context occurs when all contexts in the array occur.</td>
- </tr>
- </tbody>
-</table>
-<p>選單項目也有 <code>context</code> 屬性,可以用在新增或移除宣告式場景條件,當建構後. 例如:</p>
-<pre class="brush: js">var context = require("sdk/context-menu").SelectorContext("img");
-myMenuItem.context.add(context);
-myMenuItem.context.remove(context);</pre>
-<p>當選單項目被指定了多個場景條件, 選單項目顯示於所有場景條件皆成立時.</p>
-<h3 id="In_Content_Scripts">In Content Scripts</h3>
-<p>宣告式場景條件很容易使用,但功能不強. 舉例來說, 你希望選單項目出現的條件為:「有著至少一張圖片的頁面」, 但宣告式場景條件並不能達成這一點.</p>
-<p>當你需要對選單項目的出現時機有著更多的控制, 你可以使用 content scripts. 如同 SDK 的其他 APIs 一樣, <code>context-menu</code> API 使用 <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scripts</a> 以讓你的附加元件與瀏覽器中的頁面互動. 在最上層選單的每一個選單項目可以使用 content script.</p>
-<p>每當選單即將顯示時,一個特殊事件,其名為 <code>"context"</code> ,觸發於你的 content scripts. 如果你為這個事件註冊了偵聽(listener)函數,當函數傳回真值時, 與偵聽函數關聯的選單項目會被顯示於選單中.</p>
-<p>下例中, 當選單觸發於「有著至少一張圖片的頁面」時,顯示選單項目.</p>
-<pre class="brush: js">require("sdk/context-menu").Item({
- label: "This Page Has Images",
- contentScript: 'self.on("context", function (node) {' +
- ' return !!document.querySelector("img");' +
- '});'
-});</pre>
-<p>需要注意的是偵聽函數有一個參數叫 <code>node</code>. 這個 node 指的是使用者在頁面上按右鍵來觸發選單的頁面觸發節點. 你可以使用它來決定是否要顯示選單項目.</p>
-<p>你可以在 content script 中,同時指定宣告式場景條件和 context 偵聽函數. 在這種情況下, 先評估宣告式場景條件, 然後你的選單項目顯示條件為:所有宣告式場景條件成立,並且你的 context 偵聽函數傳回真值.</p>
-<p>如果任一宣告式場景條件未成立, 那麼你的 context 偵聽函數不會被呼叫. 下面的例子利用了這點. 確保了偵聽函數只在 image <code>node</code> 上觸發選單時,才會被呼叫:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "A Mozilla Image",
- context: cm.SelectorContext("img"),
- contentScript: 'self.on("context", function (node) {' +
- ' return /mozilla/.test(node.src);' +
- '});'
-});</pre>
-<p>However, if you do combine <code>SelectorContext</code> and the <code>"context"</code> event, be aware that the <code>node</code> argument passed to the <code>"context"</code> event will not always match the type specified in <code>SelectorContext</code>.</p>
-<p><code>SelectorContext</code> will match if the menu is invoked on the node specified <em>or any descendant of that node</em>, but the <code>"context"</code> event handler is passed <em>the actual node</em> on which the menu was invoked. 上個例子有作用,是因為 <code>&lt;IMG&gt;</code> 元素內不能包含其他元素, 但底下的例子裡, <code>node.nodeName</code> 不能保證是 "P" - 例如說, 當使用者在一個段落(<code>&lt;P&gt;</code>)的連結(<code>&lt;A&gt;</code>)上點右鍵時,它不會是 "P" :</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "A Paragraph",
- context: cm.SelectorContext("p"),
- contentScript: 'self.on("context", function (node) {' +
- ' console.log(node.nodeName);' +
- ' return true;' +
- '});'
-});</pre>
-<p>The content script is executed for every page that a context menu is shown for. It will be executed the first time it is needed (i.e. 當右鍵選單第一次顯示,並且選單項目的所有宣告式場景條件皆成立時) ,接著處於作用中,直到你銷毀你的選單項目或者關閉頁面.</p>
-<h3 id="處理選單項目上的點擊">處理選單項目上的點擊</h3>
-<p>content script 除了上述所說的功能(用來偵聽 <code>"context"</code> 事件)以外,你可以使用 content script 來處理選單項目上的點擊. 當使用者點擊選單項目時,一個名為 <code>"click"</code> 的事件在選單項目的 content script 內被觸發.</p>
-<p>因此, 欲處理選單項目上的點擊, 可以藉由偵聽選單項目 content script 內的 <code>"click"</code> 事件, 如下:</p>
-<pre class="brush: js">require("sdk/context-menu").Item({
- label: "My Item",
- contentScript: 'self.on("click", function (node, data) {' +
- ' console.log("Item clicked!");' +
- '});'
-});</pre>
-<p>注意:偵聽函數有兩參數 <code>node</code> 和 <code>data</code>.</p>
-<h4 id="node_參數">"node" 參數</h4>
-<p><code>node</code> 是使用者右鍵點擊所觸發選單的節點.</p>
-<ul>
- <li>如果你未使用 <code>SelectorContext</code> 來決定是否顯示選單項目, 那麼這實際點擊的節點.</li>
- <li>如果你使用了 <code>SelectorContext</code>, 那麼這是符合你的選擇器的那個節點.</li>
-</ul>
-<p>例如, 假設你的附加元件看起來像這樣:</p>
-<pre class="brush: js">var script = "self.on('click', function (node, data) {" +
- " console.log('clicked: ' + node.nodeName);" +
- "});";
-
-var cm = require("sdk/context-menu");
-
-cm.Item({
- label: "body context",
- context: cm.SelectorContext("body"),
- contentScript: script
-});</pre>
-<p>這個附加元件建立了一個右鍵選單項目,該項目使用 <code>SelectorContext</code> 來顯示項目,顯示時機為:右鍵選單觸發於 <code>&lt;BODY&gt;</code> 元素的任何後代元素之上時. 點擊時, 項目記錄了 <a href="https://developer.mozilla.org/en-US/docs/DOM/Node.nodeName"><code>nodeName</code></a> 屬性(觸發選單的節點名稱)傳給點擊事件處理器.</p>
-<p>如果你執行這個附加元件,你將看到它總是記錄 "BODY", 即使你點擊的是頁面上的段落元素<code>&lt;P&gt;</code>:</p>
-<pre>info: contextmenu-example: clicked: BODY</pre>
-<p>與上面對比, 底下的附加元件使用了 <code>PageContext</code>:</p>
-<pre class="brush: js">var script = "self.on('click', function (node, data) {" +
- " console.log('clicked: ' + node.nodeName);" +
- "});";
-
-var cm = require("sdk/context-menu");
-
-cm.Item({
- label: "body context",
- context: cm.PageContext(),
- contentScript: script
-});</pre>
-<p>它將記錄實際點擊的節點名稱:</p>
-<pre>info: contextmenu-example: clicked: P</pre>
-<h4 id="data_參數">"data" 參數</h4>
-<p><code>data</code> 是使用者所點擊選單項目的 <code>data</code>屬性. 注意: 當你有一個多層的選單(項目)時,點擊事件會被傳給被點擊的項目的所有祖先(項目),所以一定要驗證 <code>data</code> 值傳給你所期待的項目. 你可以使用 "data" 參數來簡化點擊事件處理 by providing just a single click listener on a <code>Menu</code> that reacts to clicks for any child items.:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Menu({
- label: "My Menu",
- contentScript: 'self.on("click", function (node, data) {' +
- ' console.log("You clicked " + data);' +
- '});',
- items: [
- cm.Item({ label: "Item 1", data: "item1" }),
- cm.Item({ label: "Item 2", data: "item2" }),
- cm.Item({ label: "Item 3", data: "item3" })
- ]
-});
-</pre>
-<h4 id="和附加元件通訊">和附加元件通訊</h4>
-<p>時常,你需要收集一些訊息,在點擊偵聽函數內和執行一個無關於頁面動作. 為了與關聯於 content script 的選單項目通訊, content script 可以呼叫附屬於全域 <code>self</code> 物件的 <code>postMessage</code> 函數, 傳給它一些 JSON-able 資料. 選單項目的 <code>"message"</code> 事件偵聽函數將被呼叫(前述的 JSON-able 資料作為參數傳入).</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "Edit Image",
- context: cm.SelectorContext("img"),
- contentScript: 'self.on("click", function (node, data) {' +
- ' self.postMessage(node.src);' +
- '});',
- onMessage: function (imgSrc) {
- openImageEditor(imgSrc);
- }
-});</pre>
-<h3 id="更新選單項目的文字標籤">更新選單項目的文字標籤</h3>
-<p>Each menu item must be created with a label, but you can change its label later using a couple of methods.</p>
-<p>最簡單的方法是設定選單項目的 <code>label</code> 屬性. 下面的例子更新選單項目的文字標籤為它被點擊的次數:</p>
-<pre class="brush: js">var numClicks = 0;
-var myItem = require("sdk/context-menu").Item({
- label: "Click Me: " + numClicks,
- contentScript: 'self.on("click", self.postMessage);',
- onMessage: function () {
- numClicks++;
- this.label = "Click Me: " + numClicks;
- // Setting myItem.label is equivalent.
- }
-});</pre>
-<p>Sometimes you might want to update the label based on the context. For instance, if your item performs a search with the user's selected text, it would be nice to display the text in the item to provide feedback to the user. 在這些情況下,你可以使用第二種方法 . 回想一下,你的 content scripts 可以偵聽 <code>"context"</code> 事件,如果你的偵聽函數傳回真值, 與 content scripts 關聯的選單項目會顯示在選單中. 除了傳回真值, 你的 <code>"context"</code> 偵聽函數也可以傳回字串. 當 <code>"context"</code> 偵聽函數傳回字串, 字串成為選單項目的新文字標籤.</p>
-<p>This item implements the aforementioned search example:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "Search Google",
- context: cm.SelectionContext(),
- contentScript: 'self.on("context", function () {' +
- ' var text = window.getSelection().toString();' +
- ' if (text.length &gt; 20)' + // 若太長
- ' text = text.substr(0, 20) + "...";' + // 則截短
- ' return "Search Google for " + text;' + // 後綴到固定字串上傳回
- '});'
-});</pre>
-<p><code>"context"</code> 偵聽函數取得使用者所選取的文字, 如果字串太長則截短它, 並後綴到固定字串上傳回. 當選單項目顯示, 它的文字標籤將是 "Search Google for <code>text</code>", 此處的 <code>text</code> 是被截短的 使用者所選取的文字.</p>
-<h3 id="隱私視窗">隱私視窗</h3>
-<p>If your add-on has not opted into private browsing, then any menus or menu items that you add will not appear in context menus belonging to private browser windows.</p>
-<p>To learn more about private windows, how to opt into private browsing, and how to support private browsing, refer to the <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">documentation for the <code>private-browsing</code> module</a>.</p>
-<h3 id="更多例子">更多例子</h3>
-<p>For conciseness, these examples create their content scripts as strings and use the <code>contentScript</code> property. In your own add-on, you will probably want to create your content scripts in separate files and pass their URLs using the <code>contentScriptFile</code> property. See <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Working with Content Scripts</a> for more information.</p>
-<div class="warning">
- <p>Unless your content script is extremely simple and consists only of a static string, don't use <code>contentScript</code>: if you do, you may have problems getting your add-on approved on AMO.</p>
- <p>Instead, keep the script in a separate file and load it using <code>contentScriptFile</code>. This makes your code easier to maintain, secure, debug and review.</p>
-</div>
-<p>Show an "Edit Page Source" item when the user right-clicks a non-interactive part of the page:</p>
-<pre class="brush: js">require("sdk/context-menu").Item({
- label: "Edit Page Source",
- contentScript: 'self.on("click", function (node, data) {' +
- ' self.postMessage(document.URL);' +
- '});',
- onMessage: function (pageURL) {
- editSource(pageURL);
- }
-});</pre>
-<p>Show an "Edit Image" item when the menu is invoked on an image:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "Edit Image",
- context: cm.SelectorContext("img"),
- contentScript: 'self.on("click", function (node, data) {' +
- ' self.postMessage(node.src);' +
- '});',
- onMessage: function (imgSrc) {
- openImageEditor(imgSrc);
- }
-});</pre>
-<p>Show an "Edit Mozilla Image" item when the menu is invoked on an image in a mozilla.org or mozilla.com page:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "Edit Mozilla Image",
- context: [
- cm.URLContext(["*.mozilla.org", "*.mozilla.com"]),
- cm.SelectorContext("img")
- ],
- contentScript: 'self.on("click", function (node, data) {' +
- ' self.postMessage(node.src);' +
- '});',
- onMessage: function (imgSrc) {
- openImageEditor(imgSrc);
- }
-});</pre>
-<p>Show an "Edit Page Images" item when the page contains at least one image:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-cm.Item({
- label: "Edit Page Images",
- // This ensures the item only appears during the page context.
- context: cm.PageContext(),
- contentScript: 'self.on("context", function (node) {' +
- ' var pageHasImgs = !!document.querySelector("img");' +
- ' return pageHasImgs;' +
- '});' +
- 'self.on("click", function (node, data) {' +
- ' var imgs = document.querySelectorAll("img");' +
- ' var imgSrcs = [];' +
- ' for (var i = 0 ; i &lt; imgs.length; i++)' +
- ' imgSrcs.push(imgs[i].src);' +
- ' self.postMessage(imgSrcs);' +
- '});',
- onMessage: function (imgSrcs) {
- openImageEditor(imgSrcs);
- }
-});</pre>
-<p>Show a "Search With" menu when the user right-clicks an anchor that searches Google or Wikipedia with the text contained in the anchor:</p>
-<pre class="brush: js">var cm = require("sdk/context-menu");
-var googleItem = cm.Item({
- label: "Google",
- data: "http://www.google.com/search?q="
-});
-var wikipediaItem = cm.Item({
- label: "Wikipedia",
- data: "http://en.wikipedia.org/wiki/Special:Search?search="
-});
-var searchMenu = cm.Menu({
- label: "Search With",
- context: cm.SelectorContext("a[href]"),
- contentScript: 'self.on("click", function (node, data) {' +
- ' var searchURL = data + node.textContent;' +
- ' window.location.href = searchURL;' +
- '});',
- items: [googleItem, wikipediaItem]
-});</pre>
-<h2 id="Globals">Globals</h2>
-<h3 id="Constructors">Constructors</h3>
-<h4 class="addon-sdk-api-name" id="Item(options)"><code>Item(options)</code></h4>
-<p>建立一個有文字標籤的選單項目,當點擊它時,可以執行一些動作.</p>
-<h5 id="參數">參數</h5>
-<p><strong>options : 物件</strong><br>
- options 物件的必要屬性:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">名稱</th>
- <th scope="col">型別</th>
- <th scope="col"> </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>label</td>
- <td>字串</td>
- <td>
- <p>選單項目的文字標籤. It must either be a string or an object that implements <code>toString()</code>.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<p>options 物件的可選屬性:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">名稱</th>
- <th scope="col">型別</th>
- <th scope="col"> </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>image</td>
- <td>字串</td>
- <td>
- <p>選單項目的圖示, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI.</p>
- </td>
- </tr>
- <tr>
- <td>data</td>
- <td>字串</td>
- <td>
- <p>An optional arbitrary value to associate with the item. It must be either a string or an object that implements <code>toString()</code>. It will be passed to click listeners.</p>
- </td>
- </tr>
- <tr>
- <td>accessKey</td>
- <td>只有單一字元的字串</td>
- <td>
- <div class="geckoVersionNote">
- <p>New in Firefox 35.</p>
- </div>
- <p>選單項目的快捷鍵. Pressing this key selects the item when the context menu is open.</p>
- </td>
- </tr>
- <tr>
- <td>context</td>
- <td>value</td>
- <td>
- <p>If the item is contained in the top-level context menu, this declaratively specifies the context under which the item will appear; see Specifying Contexts above.</p>
- </td>
- </tr>
- <tr>
- <td>contentScript</td>
- <td>字串, 陣列</td>
- <td>
- <p>If the item is contained in the top-level context menu, this is the content script or an array of content scripts that the item can use to interact with the page.</p>
- </td>
- </tr>
- <tr>
- <td>contentScriptFile</td>
- <td>字串, 陣列</td>
- <td>
- <p>If the item is contained in the top-level context menu, this is the local file URL of the content script or an array of such URLs that the item can use to interact with the page.</p>
- </td>
- </tr>
- <tr>
- <td>onMessage</td>
- <td>函數</td>
- <td>
- <p>If the item is contained in the top-level context menu, this function will be called when the content script calls <code>self.postMessage</code>. It will be passed the data that was passed to <code>postMessage</code>.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<h4 class="addon-sdk-api-name" id="Menu(options)"><code>Menu(options)</code></h4>
-<p>建立一個有文字標籤的選單項目,用以展開子選單.</p>
-<h5 id="參數_2">參數</h5>
-<p><strong>options : 物件</strong><br>
- options 物件的必要屬性:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">名稱</th>
- <th scope="col">型別</th>
- <th scope="col"> </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>label</td>
- <td>字串</td>
- <td>
- <p>選單項目的文字標籤. It must either be a string or an object that implements <code>toString()</code>.</p>
- </td>
- </tr>
- <tr>
- <td>items</td>
- <td>陣列</td>
- <td>
- <p>選單項目構成的陣列,這些選單項目會被子選單所包含. 陣列中的元素須為 <code>Item</code>, <code>Menu</code>, 或 <code>Separator</code>.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<p>options 物件的可選屬性:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">名稱</th>
- <th scope="col">型別</th>
- <th scope="col"> </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>image</td>
- <td>字串</td>
- <td>
- <p>The menu's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI.</p>
- </td>
- </tr>
- <tr>
- <td>context</td>
- <td>value</td>
- <td>
- <p>If the menu is contained in the top-level context menu, this declaratively specifies the context under which the menu will appear; see Specifying Contexts above.</p>
- </td>
- </tr>
- <tr>
- <td>contentScript</td>
- <td>字串, 陣列</td>
- <td>
- <p>If the menu is contained in the top-level context menu, this is the content script or an array of content scripts that the menu can use to interact with the page.</p>
- </td>
- </tr>
- <tr>
- <td>contentScriptFile</td>
- <td>字串, 陣列</td>
- <td>
- <p>If the menu is contained in the top-level context menu, this is the local file URL of the content script or an array of such URLs that the menu can use to interact with the page.</p>
- </td>
- </tr>
- <tr>
- <td>onMessage</td>
- <td>函數</td>
- <td>
- <p>If the menu is contained in the top-level context menu, this function will be called when the content script calls <code>self.postMessage</code>. It will be passed the data that was passed to <code>postMessage</code>.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<h4 class="addon-sdk-api-name" id="Separator()"><code>Separator()</code></h4>
-<p>Creates a menu separator.</p>
-<h4 class="addon-sdk-api-name" id="PageContext()"><code>PageContext()</code></h4>
-<p>Creates a page context. See Specifying Contexts above.</p>
-<h4 class="addon-sdk-api-name" id="SelectionContext()"><code>SelectionContext()</code></h4>
-<p>Creates a context that occurs when a page contains a selection. See Specifying Contexts above.</p>
-<h4 class="addon-sdk-api-name" id="SelectorContext(selector)"><code>SelectorContext(selector)</code></h4>
-<p>Creates a context that matches a given CSS selector. See Specifying Contexts above.</p>
-<h5 id="Parameters">Parameters</h5>
-<p><strong>selector : string</strong><br>
- A CSS selector.</p>
-<h4 class="addon-sdk-api-name" id="URLContext(matchPattern)"><code>URLContext(matchPattern)</code></h4>
-<p>Creates a context that matches pages with particular URLs. See Specifying Contexts above.</p>
-<h5 id="Parameters_2">Parameters</h5>
-<p><strong>matchPattern : string,array</strong><br>
- A <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_match-pattern">match pattern</a> string, regexp or an array of match pattern strings or regexps.</p>
-<h4 class="addon-sdk-api-name" id="PredicateContext(predicateFunction)"><code>PredicateContext(predicateFunction)</code></h4>
-<div class="geckoVersionNote">
- <p>New in Firefox 29</p>
-</div>
-<p>Creates a context that occurs when predicateFunction returns a true value. See Specifying Contexts above.</p>
-<h5 id="Parameters_3">Parameters</h5>
-<p><strong>predicateFunction : function(context)</strong><br>
- A function which will be called with an object argument that provide information about the invocation context. <code>context</code> object properties:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Property</th>
- <th scope="col">Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><code>documentType</code></td>
- <td>The MIME type of the document the menu was invoked in. E.g. <code>text/html</code> for HTML pages, <code>application/xhtml+xml</code> for XHTML, or <code>image/jpeg</code> if viewing an image directly.</td>
- </tr>
- <tr>
- <td><code>documentURL</code></td>
- <td>The URL of the document the menu was invoked in.</td>
- </tr>
- <tr>
- <td><code>targetName</code></td>
- <td>The name of the DOM element that the menu was invoked on, in lower-case.</td>
- </tr>
- <tr>
- <td><code>targetID</code></td>
- <td>The <code>id</code> attribute of the element that the menu was invoked on, or <code>null</code> if not set.</td>
- </tr>
- <tr>
- <td><code>isEditable</code></td>
- <td><code>true</code> if the menu was invoked in an editable element, and that element isn't disabled or read-only.  This includes non-input elements with the <code>contenteditable</code> attribute set to <code>true</code>.</td>
- </tr>
- <tr>
- <td><code>selectionText</code></td>
- <td>The current selection as a text string, or <code>null</code>. If the menu was invoked in an input text box or area, this is the selection of that element, otherwise the selection in the contents of the window.</td>
- </tr>
- <tr>
- <td><code>srcURL</code></td>
- <td>The <code>src</code> URL of the element that the menu was invoked on, or <code>null</code> if it doesn't have one.</td>
- </tr>
- <tr>
- <td><code>linkURL</code></td>
- <td>The <code>href</code> URL of the element that the menu was invoked on, or <code>null</code> if it doesn't have one.</td>
- </tr>
- <tr>
- <td><code>value</code></td>
- <td>The current contents of a input text box or area if the menu was invoked in one, <code>null</code> otherwise.</td>
- </tr>
- </tbody>
-</table>
-<h2 id="Item">Item</h2>
-<p>A labeled menu item that can perform an action when clicked.</p>
-<h3 id="Methods">Methods</h3>
-<h4 class="addon-sdk-api-name" id="destroy()"><code>destroy()</code></h4>
-<p>Permanently removes the item from its parent menu and frees its resources. The item must not be used afterward. If you need to remove the item from its parent menu but use it afterward, call <code>removeItem()</code> on the parent menu instead.</p>
-<h3 id="Properties">Properties</h3>
-<h4 class="addon-sdk-api-name" id="label"><code>label</code></h4>
-<p>The menu item's label. You can set this after creating the item to update its label later.</p>
-<h4 class="addon-sdk-api-name" id="image"><code>image</code></h4>
-<p>The item's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI. You can set this after creating the item to update its image later. To remove the item's image, set it to <code>null</code>.</p>
-<h4 class="addon-sdk-api-name" id="data"><code>data</code></h4>
-<p>An optional arbitrary value to associate with the item. It must be either a string or an object that implements <code>toString()</code>. It will be passed to click listeners. You can set this after creating the item to update its data later.</p>
-<h4 class="addon-sdk-api-name" id="context"><code>context</code></h4>
-<p>A list of declarative contexts for which the menu item will appear in the context menu. Contexts can be added by calling <code>context.add()</code> and removed by called <code>context.remove()</code>.</p>
-<h4 class="addon-sdk-api-name" id="parentMenu"><code>parentMenu</code></h4>
-<p>The item's parent <code>Menu</code>, or <code>null</code> if the item is contained in the top-level context menu. This property is read-only. To add the item to a new menu, call that menu's <code>addItem()</code> method.</p>
-<h4 class="addon-sdk-api-name" id="contentScript"><code>contentScript</code></h4>
-<p>The content script or the array of content scripts associated with the menu item during creation.</p>
-<h4 class="addon-sdk-api-name" id="contentScriptFile"><code>contentScriptFile</code></h4>
-<p>The URL of a content script or the array of such URLs associated with the menu item during creation.</p>
-<h3 id="Events">Events</h3>
-<h4 class="addon-sdk-api-name" id="message"><code>message</code></h4>
-<p>If you listen to this event you can receive message events from content scripts associated with this menu item. When a content script posts a message using <code>self.postMessage()</code>, the message is delivered to the add-on code in the menu item's <code>message</code> event.</p>
-<h5 id="Arguments">Arguments</h5>
-<p><strong>value</strong> : Listeners are passed a single argument which is the message posted from the content script. The message can be any <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/using_port#JSON-Serializable_Values">JSON-serializable value</a>.</p>
-<h2 id="Menu">Menu</h2>
-<p>A labeled menu item that expands into a submenu.</p>
-<h3 id="Methods_2">Methods</h3>
-<h4 class="addon-sdk-api-name" id="addItem(item)"><code>addItem(item)</code></h4>
-<p>Appends a menu item to the end of the menu. If the item is already contained in another menu or in the top-level context menu, it's automatically removed first. If the item is already contained in this menu it will just be moved to the end of the menu.</p>
-<h5 id="Parameters_4">Parameters</h5>
-<p><strong>item : Item,Menu,Separator</strong><br>
- The <code>Item</code>, <code>Menu</code>, or <code>Separator</code> to add to the menu.</p>
-<h4 class="addon-sdk-api-name" id="removeItem(item)"><code>removeItem(item)</code></h4>
-<p>Removes the given menu item from the menu. If the menu does not contain the item, this method does nothing.</p>
-<h5 id="Parameters_5">Parameters</h5>
-<p><strong>item : Item,Menu,Separator</strong><br>
- The menu item to remove from the menu.</p>
-<h4 class="addon-sdk-api-name" id="destroy()_2"><code>destroy()</code></h4>
-<p>Permanently removes the menu from its parent menu and frees its resources. The menu must not be used afterward. If you need to remove the menu from its parent menu but use it afterward, call <code>removeItem()</code> on the parent menu instead.</p>
-<h3 id="Properties_2">Properties</h3>
-<h4 class="addon-sdk-api-name" id="label_2"><code>label</code></h4>
-<p>The menu's label. You can set this after creating the menu to update its label later.</p>
-<h4 class="addon-sdk-api-name" id="items"><code>items</code></h4>
-<p>An array containing the items in the menu. The array is read-only, meaning that modifications to it will not affect the menu. However, setting this property to a new array will replace all the items currently in the menu with the items in the new array.</p>
-<h4 class="addon-sdk-api-name" id="image_2"><code>image</code></h4>
-<p>The menu's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI. You can set this after creating the menu to update its image later. To remove the menu's image, set it to <code>null</code>.</p>
-<h4 class="addon-sdk-api-name" id="context_2"><code>context</code></h4>
-<p>A list of declarative contexts for which the menu will appear in the context menu. Contexts can be added by calling <code>context.add()</code> and removed by called <code>context.remove()</code>.</p>
-<h4 class="addon-sdk-api-name" id="parentMenu_2"><code>parentMenu</code></h4>
-<p>The menu's parent <code>Menu</code>, or <code>null</code> if the menu is contained in the top-level context menu. This property is read-only. To add the menu to a new menu, call that menu's <code>addItem()</code> method.</p>
-<h4 class="addon-sdk-api-name" id="contentScript_2"><code>contentScript</code></h4>
-<p>The content script or the array of content scripts associated with the menu during creation.</p>
-<h4 class="addon-sdk-api-name" id="contentScriptFile_2"><code>contentScriptFile</code></h4>
-<p>The URL of a content script or the array of such URLs associated with the menu during creation.</p>
-<h3 id="Events_2">Events</h3>
-<h4 class="addon-sdk-api-name" id="message_2"><code>message</code></h4>
-<p>If you listen to this event you can receive message events from content scripts associated with this menu item. When a content script posts a message using <code>self.postMessage()</code>, the message is delivered to the add-on code in the menu item's <code>message</code> event.</p>
-<h5 id="Arguments_2">Arguments</h5>
-<p><strong>value</strong> : Listeners are passed a single argument which is the message posted from the content script. The message can be any <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/using_port#JSON-Serializable_Values">JSON-serializable value</a>.</p>
-<h2 id="Separator">Separator</h2>
-<p>A menu separator. Separators can be contained only in <code>Menu</code>s, not in the top-level context menu.</p>
-<h3 id="Methods_3">Methods</h3>
-<h4 class="addon-sdk-api-name" id="destroy()_3"><code>destroy()</code></h4>
-<p>Permanently removes the separator from its parent menu and frees its resources. The separator must not be used afterward. If you need to remove the separator from its parent menu but use it afterward, call <code>removeItem()</code> on the parent menu instead.</p>
-<h3 id="Properties_3">Properties</h3>
-<h4 class="addon-sdk-api-name" id="parentMenu_3"><code>parentMenu</code></h4>
-<p>The separator's parent <code>Menu</code>. This property is read-only. To add the separator to a new menu, call that menu's <code>addItem()</code> method.</p>
diff --git a/files/zh-tw/mozilla/add-ons/sdk/high-level_apis/index.html b/files/zh-tw/mozilla/add-ons/sdk/high-level_apis/index.html
deleted file mode 100644
index 32b39d045b..0000000000
--- a/files/zh-tw/mozilla/add-ons/sdk/high-level_apis/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: High-Level APIs
-slug: Mozilla/Add-ons/SDK/High-Level_APIs
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs
----
-<p>Modules listed on this page implement high-level APIs for building add-ons: creating user interfaces, interacting with the web, and interacting with the browser.</p>
-<p>Unless the documentation explicitly says otherwise, all these modules are "Stable": we'll avoid making incompatible changes to them. {{ LandingPageListSubpages ("/en-US/Add-ons/SDK/High-Level_APIs", 5) }}</p>
diff --git a/files/zh-tw/mozilla/add-ons/sdk/index.html b/files/zh-tw/mozilla/add-ons/sdk/index.html
deleted file mode 100644
index 2937b883d7..0000000000
--- a/files/zh-tw/mozilla/add-ons/sdk/index.html
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: Add-on SDK
-slug: Mozilla/Add-ons/SDK
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Add-ons/Add-on_SDK
----
-<p>有了附加元件開發套件(Add-on SDK),您可以使用標準的JavaScript、HTML、CSS等語法來建立Firefox的附加元件。SDK包含用來製作附加元件的JavaScript API,及建立、測試、運行或包裝附加元件的相關工具。</p>
-
-<hr>
-<h3 id="入門">入門</h3>
-
-<div class="column-container">
-<div class="column-half">
-<dl>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials#getting-started">從此開始</a></dt>
- <dd>如何<a href="/en-US/Add-ons/SDK/Tutorials/Installation">安裝 SDK </a>及<a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">使用 cfx tool </a>來建立、測試或包裝附加元件。</dd>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials#interact-with-the-browser">和瀏覽器互動</a></dt>
- <dd><a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">開啟網頁</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">監測頁面載入</a>以及<a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">列出已開啟頁面</a>。</dd>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials#development-techniques">開發技巧</a></dt>
- <dd>學習常用開發技術,如<a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">單元測試</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Logging">紀錄</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">建立可重用模組</a>、<a href="/en-US/Add-ons/SDK/Tutorials/l10n">在地化</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">流動裝置</a> 。</dd>
-</dl>
-</div>
-
-<div class="column-half">
-<dl>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials#create-user-interfaces">建立使用者介面的元件</a></dt>
- <dd>如<a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">工具列按鈕</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">內文選單</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">選單項目</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">對話框</a>等等。</dd>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials#modify-web-pages">修改網頁</a></dt>
- <dd>修改<a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">符合網址模式</a>的頁面或動態<a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">修改特定分頁</a>。</dd>
- <dt><a href="/en-US/Add-ons/SDK/Tutorials/Annotator">整合各項</a></dt>
- <dd>以 Annotator(一個顯示註解的附加元件)為例顯示製作流程。</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h3 id="指引">指引</h3>
-
-<div class="column-container">
-<div class="column-half">
-<dl>
- <dt><a href="/en-US/Add-ons/SDK/Guides#contributors-guide">貢獻者指南</a></dt>
- <dd>學習<a href="/en-US/Add-ons/SDK/Guides/Getting_Started">如何貢獻 </a>SDK 以及 SDK 當中的重要術語,如<a href="/en-US/Add-ons/SDK/Guides/Modules">模組</a>、<a href="/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">類(Class)及繼承(Inheritance)</a>、<a href="/en-US/Add-ons/SDK/Guides/Private_Properties">私有屬性</a>以及<a href="/en-US/Add-ons/SDK/Guides/Content_Processes">內容處理</a>。</dd>
- <dt><a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">SDK infrastructure</a></dt>
- <dd>Aspects of the SDK's underlying technology: <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">modules</a>, the <a href="/en-US/Add-ons/SDK/Guides/Program_ID">Program ID</a>, and the rules defining <a href="/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">Firefox compatibility</a>.</dd>
- <dt><a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content scripts</a></dt>
- <dd>A detailed guide to <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">working with content scripts</a>, including: <a href="/en-US/Add-ons/SDK/Guides/Loading_content_scripts">how to load content scripts</a>, <a href="/en-US/Add-ons/SDK/Guides/Accessing_the_DOM">which objects content scripts can access</a>, and <a href="/en-US/Add-ons/SDK/Guides/Communicating_with_other_scripts">how to communicate between content scripts and the rest of your add-on</a>.</dd>
-</dl>
-</div>
-
-<div class="column-half">
-<dl>
- <dt><a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">SDK idioms</a></dt>
- <dd>The SDK's <a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">event framework</a> and the <a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">distinction between add-on scripts and content scripts</a>.</dd>
- <dt><a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XUL migration</a></dt>
- <dd>A guide to <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">porting XUL add-ons to the SDK</a>. This guide includes a <a href="/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">comparison of the two toolsets</a> and a <a href="/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">working example</a> of porting a XUL add-on.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h3 id="參考資料">參考資料</h3>
-
-<div class="column-container">
-<div class="column-half">
-<dl>
- <dt><a href="/en-US/Add-ons/SDK/High-Level_APIs">高階 API</a></dt>
- <dd>高階 SDK API 的參考文件。</dd>
- <dt><a href="/en-US/Add-ons/SDK/Tools">工具參考</a></dt>
- <dd>Reference documentation for the <a href="/en-US/Add-ons/SDK/Tools/cfx">cfx tool</a> used to develop, test, and package add-ons, the <a href="/en-US/Add-ons/SDK/Tools/console">console</a> global used for logging, and the <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file.</dd>
-</dl>
-</div>
-
-<div class="column-half">
-<dl>
- <dt><a href="/en-US/Add-ons/SDK/Low-Level_APIs">低階 API</a></dt>
- <dd>低階 SDK API 的參考文件。</dd>
-</dl>
-</div>
-</div>
diff --git a/files/zh-tw/mozilla/add-ons/sdk/low-level_apis/index.html b/files/zh-tw/mozilla/add-ons/sdk/low-level_apis/index.html
deleted file mode 100644
index 2108d30783..0000000000
--- a/files/zh-tw/mozilla/add-ons/sdk/low-level_apis/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Low-Level APIs
-slug: Mozilla/Add-ons/SDK/Low-Level_APIs
-translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs
----
-<p>Modules in this section implement low-level APIs. These modules fall roughly into three categories:</p>
-<ul>
- <li>
- <p>fundamental utilities such as <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_collection">collection</a>. Many add-ons are likely to want to use modules from this category.</p>
- </li>
- <li>
- <p>building blocks for higher level modules, such as <a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_core">events</a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">worker</a>. You're more likely to use these if you are building your own modules that implement new APIs, thus extending the SDK itself.</p>
- </li>
- <li>
- <p>privileged modules that expose powerful low-level capabilities such as <a href="/en-US/Add-ons/SDK/Low-Level_APIs/window_utils">window/utils</a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/net_xhr">net/xhr</a>. You can use these modules in your add-on if you need to, but should be aware that the cost of privileged access is the need to take more elaborate security precautions. In many cases these modules have simpler, more restricted analogs among the "High-Level APIs" (for example, <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows">windows</a> or <a href="/en-US/Add-ons/SDK/High-Level_APIs/request">request</a>).</p>
- </li>
-</ul>
-<p>These modules are still in active development, and we expect to make incompatible changes to them in future releases.</p>
-<p>{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Low-Level_APIs", 5) }}</p>
-<p> </p>
diff --git a/files/zh-tw/mozilla/add-ons/themes/obsolete/index.html b/files/zh-tw/mozilla/add-ons/themes/obsolete/index.html
deleted file mode 100644
index d420b6ebf0..0000000000
--- a/files/zh-tw/mozilla/add-ons/themes/obsolete/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Obsolete
-slug: Mozilla/Add-ons/Themes/Obsolete
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Add-ons/Themes/Obsolete
----
-<p>This page collects theme docs that we don't expect will ever be updated, but which we're keeping for the time being as potential source material for updated docs.</p>
-<p>{{ ListSubPages ("/en-US/Add-ons/Themes/Obsolete", 5) }}</p>
diff --git a/files/zh-tw/mozilla/adding_phishing_protection_data_providers/index.html b/files/zh-tw/mozilla/adding_phishing_protection_data_providers/index.html
deleted file mode 100644
index 14b56484b5..0000000000
--- a/files/zh-tw/mozilla/adding_phishing_protection_data_providers/index.html
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: 新增偽造網站清單來源
-slug: Mozilla/Adding_phishing_protection_data_providers
-tags:
- - 待翻譯
-translation_of: Mozilla/Adding_phishing_protection_data_providers
----
-<p>詐騙網站偵測技術讓 Firefox 能將當前網頁與黑名單兩相比對,藉此得知此網站是否為詐騙網站,並於確認後提醒使用者。</p>
-
-<h2 id=".E5.AE.89.E8.A3.9D.E6.96.B0.E8.B3.87.E6.96.99.E4.BE.86.E6.BA.90" name=".E5.AE.89.E8.A3.9D.E6.96.B0.E8.B3.87.E6.96.99.E4.BE.86.E6.BA.90">安裝新資料來源</h2>
-
-<p>要安裝詐騙網站清單的資料來源,必須調整一些相關設定,以便提供資料來源的細節。</p>
-
-<p>每個資料來源都有其獨一無二的 ID 號碼,而 ID 號碼為 0 者即是 Firefox 出廠時的預設資料來源。當安裝新的資料來源時,你應該指定另一個未使用的號碼。</p>
-
-<p>要知道哪些號碼能用,必須以迴圈循序取出設定值,例如先是 <code>browser.safebrowsing.provider.0.name</code>、而後為<code>browser.safebrowsing.provider.1.name</code>,以此類推。當取值時無傳回內容,代表這個數字可以用。</p>
-
-<p>你可以從<a href="zh_tw/%e7%82%ba%e6%93%b4%e5%85%85%e5%a5%97%e4%bb%b6%e6%96%b0%e5%a2%9e%e5%81%8f%e5%a5%bd%e8%a8%ad%e5%ae%9a">為擴充套件新增偏好設定</a>文章中找到讀寫設定值的相關範例。</p>
-
-<h3 id=".E5.BF.85.E5.82.99.E8.A8.AD.E5.AE.9A" name=".E5.BF.85.E5.82.99.E8.A8.AD.E5.AE.9A">必備設定</h3>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.name</code></dt>
- <dd>資料來源的名稱,讓使用者方便識別。</dd>
-</dl>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.keyURL</code></dt>
- <dd>用來為其他要求編碼的私鑰 URL。</dd>
-</dl>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.lookupURL</code></dt>
- <dd>The URL to use to look up URLs to see if they're blacklisted. This request must be encrypted using the private key returned by the <code>keyURL</code> request.</dd>
-</dl>
-
-<h3 id=".E9.81.B8.E7.94.A8.E8.A8.AD.E5.AE.9A" name=".E9.81.B8.E7.94.A8.E8.A8.AD.E5.AE.9A">選用設定</h3>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.reportURL</code></dt>
- <dd>An URL used for reporting when users visit phishing pages and whether or not they decided to heed the warning or to ignore it.</dd>
-</dl>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.updateURL</code></dt>
- <dd>An URL used to request an updated list of phishing sites. The server either provides a full list or incremental updates in order to bring the client's tables up to date.</dd>
-</dl>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.reportGenericURL</code></dt>
- <dd>Not currently used; intended for use in reporting other issues with the phishing protection service.</dd>
-</dl>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.reportErrorURL</code></dt>
- <dd>An URL to which the user is directed in order to report a safe page that is incorrectly being reported as a phishing site.</dd>
-</dl>
-
-<dl>
- <dt><code>browser.safebrowsing.provider.<em>idnum</em>.reportPhishURL</code></dt>
- <dd>An URL to which the user is directed in order to report a phishing site that isn't detected by the phishing protection system.</dd>
-</dl>
-
-<h2 id="Determining_the_currently-selected_data_provider" name="Determining_the_currently-selected_data_provider">Determining the currently-selected data provider</h2>
-
-<p>If you need to determine the ID number of the currently selected anti-phishing data provider, you can look at the current value of the preference <code>browser.safebrowsing.dataProvider</code>.</p>
diff --git a/files/zh-tw/mozilla/chrome_registration/index.html b/files/zh-tw/mozilla/chrome_registration/index.html
deleted file mode 100644
index f2cde3f964..0000000000
--- a/files/zh-tw/mozilla/chrome_registration/index.html
+++ /dev/null
@@ -1,348 +0,0 @@
----
-title: Chrome registration
-slug: Mozilla/Chrome_Registration
-translation_of: Mozilla/Chrome_Registration
----
-<h2 id="What_is_Chrome.3F" name="What_is_Chrome.3F">馬桶裡有個 chrome?</h2>
-
-<p><a href="/en/Chrome" title="en/Chrome">Chrome</a> 是一拖拉庫在文件 window 範圍之外 AP 視窗的 UI 元件。 管它 Toolbars 、 menu bars、progress bars 還是 window title bars 基本上都是 chrome 的一部份。</p>
-
-<div class="note">
-<p>Mozilla 會尋找並讀取主題佈景和附加元件根目錄<code>的 chrome.manifest</code> 檔。</p>
-</div>
-
-<div class="note">
-<p>古早的 Gecko 1.9.2 (及更古早版本),Mozilla 是從 AP 讀取<code>chrome/*.manifest</code> 檔。 從 Gecko 2.0 {{ geckoRelease("2.0") }} 開始,就只剩根目錄的 <code>chrome.manifest</code> 還有再用;若要增加更多的內容,就在其中利用 <a href="/en/Chrome_Registration#manifest" title="en/Chrome Registration#manifest"><code>manifest</code></a> 指令來擴充。</p>
-</div>
-
-<h2 id="Chrome_Providers" name="Chrome_Providers">Chrome providers</h2>
-
-<p>基於某種 window type (例如針對 browser window) 提供 chrome 者稱為 chrome provider。所有的 provider 同心協力針對特定的 window 提供整套的 chrome,從工具列上的圖案到文字或內容描述檔,以及 window 本身的外觀。</p>
-
-<p>以下是三種基本的 chrome provider :</p>
-
-<dl>
- <dt>Content</dt>
- <dd>視窗描述主要是來自於 content provider,格式可以是任何一種 Mozilla 看得懂的類型。通常會是個  XUL file,因為它本來就是專門設計來描述 window 和 dialog 的。用來定義 UI 的 JavaScript 檔也會跟在這包,多數的 XBL binding files 也是。</dd>
- <dt>Locale</dt>
- <dd>多語系的應用程式會將語系資訊交給 locale providers。醬子譯者就可以翻譯並插進一個另外的 chrome package 而不去更動其它的程式。Java-style properties 檔和 DTD 檔是兩種主要的多語系檔案類型。</dd>
- <dt>Skin</dt>
- <dd>Skin provider 就負責 chrome 整套外觀的描述檔,通常是 CSS 和圖形。</dd>
-</dl>
-
-<div class="note">
-<p><strong>註:</strong> 從 skin packages 載入的 scripts (包括 <a href="/en/XBL" title="en/XBL">XBL </a>裡的) 並不會執行喔。</p>
-</div>
-
-<h2 id="The_Chrome_Registry" name="The_Chrome_Registry">Chrome 登錄 (chrome registry)</h2>
-
-<p>Gecko runtime 會保持一份稱為 chrome registry 的記錄,用來對登錄 chrome package 名稱和實際檔案路徑。</p>
-
-<p>Chrome registry 可以設定並且會保存;且有賴於 xpinstall 和 extension manager,這樣 user 就可以很多套 chrome provider 然後選擇喜歡的語系和外觀。</p>
-
-<p>XULRunner application、主題布景或附加元件要讓 chrome registry 知道有這麼一個 chrome,那就要在自己的根目錄下放一個 純文字格式的 manifest,也就是 `chrome.manifest`。</p>
-
-<p>這個純文字的 manifests 是簡單的逐行格式,會被一行一行地解析。 chrome registry 看懂一行就處理一行,看不懂就跳過;當然,有問題的會 log 在 console 中。</p>
-
-<pre>locale packagename localename path/to/files
-skin packagename skinname path/to/files
-</pre>
-
-<p></p><div class="warning">Firefox 2 、 Thunderbird 2 和 SeaMonkey 1.1 無法辨識大小寫夾雜的 <code>packagename</code> 。 要是把範例中的 <code>packagename </code>改成 <strong>C</strong>amel<strong>C</strong>ase<strong>P</strong>ackage 就會跑出類似 "No chrome registered for chrome://<strong>c</strong>amel<strong>c</strong>ase<strong>p</strong>ackage/path/to/files" 的訊息。 Firefox 3 、 Thunderbird 3 還有 SeaMonkey 2 已經支援這個功能。Bug resolved 於 Mozilla 1.9; see {{bug(132183)}}.</div><p></p>
-
-<h2 id="Manifest_Instructions" name="Manifest_Instructions">Manifest 指令</h2>
-
-<h3 id="comments" name="comments">comments</h3>
-
-<p>如果一行的開頭是 '#' 那這整行就變成註解。</p>
-
-<pre class="eval"># this line is a comment - you can put whatever you want here
-</pre>
-
-<h3 id="manifest" name="manifest">manifest</h3>
-
-<p>{{ gecko_minversion_inline("2.0b4") }}</p>
-
-<pre>manifest <em>subdirectory/foo.manifest [flags]</em>
-</pre>
-
-<p>這行會載入另一份 manifest 檔。這在拆分元件、chrome 登錄項或是各平台相依登錄資料時尤其有用。</p>
-
-<h3 id="binary-component">binary-component</h3>
-
-<p>{{ gecko_minversion_inline("2.0b2") }}</p>
-
-<pre>binary-component <em>components/mycomponent.dll [flags]</em>
-</pre>
-
-<p>叫 Mozilla 登錄並應用 binary component,由於 binary components 為 ABI-specific,應與 abi flag 並用。 <a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="en/XPCOM/XPCOM changes in Gecko 2.0">在 Firefox 4 之前 </a>,components 資料夾裡的檔案會自動被登錄。</p>
-
-<h3 id="interfaces">interfaces</h3>
-
-<p>{{ gecko_minversion_inline("2.0b2") }}</p>
-
-<pre>interfaces <em>component/mycomponent.xpt [flags]</em>
-</pre>
-
-<p>叫 Mozilla 從經由 XPIDL 產生的 typelib 檔載入 interface 資訊。<a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="en/XPCOM/XPCOM changes in Gecko 2.0">在 Firefox 4 之前</a>,components 資料夾裡的檔案會自動被登錄。</p>
-
-<h3 id="component">component</h3>
-
-<p>{{ gecko_minversion_inline("2.0b2") }}</p>
-
-<pre>component <em>{00000000-0000-0000-0000-000000000000} components/mycomponent.js [flags]</em>
-</pre>
-
-<p>告訴 Mozilla 一個由 XPCOM 元件以 JavaScript (或是其它可接受的 scripting language) 實作之元件的 CID。ClassID {0000 ...} 一定要和該元件所實現的 ClassID 相同。可利用程式或線上 UUID 產生器產生唯一的 ClassID。</p>
-
-<h3 id="contract">contract</h3>
-
-<p>{{ gecko_minversion_inline("2.0b2") }}</p>
-
-<pre>contract <em>@foobar/mycontract;1 <em>{00000000-0000-0000-0000-000000000000} [flags]</em></em>
-</pre>
-
-<p>將特定實作的 contract ID (一個語意化字串) 對應到 ClassID。通常 contract ID 就和它頂頭所列的 component entry 一組。<br>
-  </p>
-
-<h3 id="content" name="content" style="min-height: 0;">category</h3>
-
-<p>{{ gecko_minversion_inline("2.0b2") }}</p>
-
-<pre>category <em>category entry-name value [flags]</em>
-</pre>
-
-<p>登錄在 <a href="/en/XPCOM_Interface_Reference/nsICategoryManager" title="en/XPCOM Interface Reference/nsICategoryManager">category manager</a> ,至於項目的格式和用意就要看它是哪個 category 了。</p>
-
-<h3 id="content" name="content" style="min-height: 0;">content</h3>
-
-<p>下面這行登錄一個 content package :</p>
-
-<pre>content <em>packagename</em> <em>uri/to/files/</em> <em>[flags]</em>
-</pre>
-
-<p>這會將 package 登錄在一個像 <code>`chrome://<em>packagename</em>/content/..` </code>的位置,也就是之後它被存取的位置。這個 URI 可以是絕對位置或是相對於 manifest file 的位置,但要注意結尾的 '/' 不可省略。</p>
-
-<h3 id="locale" name="locale">locale</h3>
-
-<p>下面這行登錄一個 locale package :</p>
-
-<pre class="eval">locale <em>packagename</em> <em>localename</em> <em>uri/to/files/</em> <em>[flags]</em>
-</pre>
-
-<p>這會將 locale package 登錄在解析 `chrome://<em>packagename</em>/locale/..` 所用的位置。<em> localename</em> 通常直接用語系名稱像是 "zh" 或有時候用 語系-地區 像 "zh-TW"。如果同一 package 有多個語系 chrome registry 會根據使用者偏好中的設定值選擇最接近的語系。</p>
-
-<h3 id="skin" name="skin">skin</h3>
-
-<p>下面這行登錄一個 skin package :</p>
-
-<pre class="eval">skin <em>packagename</em> <em>skinname</em> <em>uri/to/files/</em> <em>[flags]</em>
-</pre>
-
-<p>這會將 skin package 登錄在 <a class="external" rel="freelink">chrome://packagename/skin/</a>.. ,<em> skinname</em> is 是用來識別所安裝 skin 的一個非透明化字串。同樣地,若同一 package 登記了多個 skin , chrome registry 會根據使用者偏好中的設定值選擇最合適的。</p>
-
-<h3 id="style" name="style">style</h3>
-
-<p>Style overlay (套用在chrome page上的自訂 CSS) 以下列語法登錄:</p>
-
-<pre class="eval">style chrome://<em>URI-to-style</em> chrome://<em>stylesheet-URI</em> <em>[flags]</em>
-</pre>
-
-<div class="note">注意: 只有位於 chrome URI 的 stylesheet 可以這樣用。</div>
-
-<h3 id="override" name="override">override</h3>
-
-<p>chrome 登錄 manifest 允許 override 指令以便讓某些 extension 或其它嵌入物件可以改寫 XULRunner 或 AP 預設的 chrome file 設定。</p>
-
-<pre class="eval">override chrome://<em>package</em>/<em>type</em>/<em>original-uri.whatever</em> <em>new-resolved-URI</em> <em>[flags]</em>
-</pre>
-
-<p>注意:override 路徑不會遞迴 (所以將 <a class="external" rel="freelink">chrome://foo/content/bar/</a> override 為 <a class="external" rel="freelink">file:///home/john/blah/</a> 之後,其行為通常不會是預期的那樣)。而且 override 之後路徑是相對於被重寫掉的路徑而不是用來重寫的路徑 (從 CSS 的角度來說,這搞不好是個偏門也搞不好使人抓狂) 。</p>
-
-<div class="note">
-<p>在 Gecko 1.8.1.5 (Firefox 2.0.0.5) 和較早的版本中有個 <em>new-resolved-URI</em> 參數 只能用絕對路徑而不能用相對路徑的 bug。詳見: {{ Bug(323455) }}.</p>
-</div>
-
-<h3 id="resource" name="resource">resource</h3>
-
-<p>{{ Fx_minversion_inline("3") }}</p>
-
-<p>在 extension 和 AP 中使用<a href="/en/Components.utils.import" title="en/Components.utils.import"> Components.utils.import</a> 來載入 <a href="/en/JavaScript_code_modules/Using" title="en/Using_JavaScript_code_modules">JavaScript code modules</a> 時,建立 resource protocol 別名 (aliases) 有時是必須的。請使用 <code>resource</code> 指令來建立別名:</p>
-
-<pre class="eval">resource <em>aliasname</em> <em>uri/to/files/</em> <em>[flags]</em>
-</pre>
-
-<p>這會將目的路徑對映到 <code>resource://&lt;aliasname&gt;<span style="font-family: Verdana,Tahoma,sans-serif;">/</span></code>.. 。</p>
-
-<div class="note">
-<p><span class="short_text" id="result_box" lang="zh-TW"><span>並</span><span>沒有安全性</span><span>限制防止</span><span>網頁內容</span><span> include 以 resource: 開頭</span><span>的 URI</span><span>,故</span><span>請留意此處所開啟的能見度</span><span>。</span></span></p>
-</div>
-
-<h2 id="Manifest_Flags" name="Manifest_Flags">Manifest 旗號</h2>
-
-<p>Manifest 指令行允許多個以空白分隔的旗號附加於行尾。這些旗號將會設定 package 中 chrome 的特殊屬性,或限制這些指令行本身於什麼條件下作用。</p>
-
-<h3 id="application" name="application">application</h3>
-
-<p>Extension 可以安裝於多個應用程式,而有些 chrome registration 可能只需作用於特定的應用程式。以下旗號</p>
-
-<pre class="eval">application=<em>app-ID</em>
-</pre>
-
-<p>代表這個指令只應在 extension 安裝於符合 <em>app-ID </em>的應用程式時作用。同一行可以指定多個應用程式,此時只要其中一項符合即會作用。</p>
-
-<p>以下示範如何為多個應用程是分別指定 overlay :</p>
-
-<pre>overlay chrome://browser/content/browser.xul chrome://myaddon/content/ffOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://myaddon/content/tbOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
-overlay chrome://songbird/content/xul/layoutBaseOverlay.xul chrome://myaddon/content/sbOverlay.xul application=songbird@songbirdnest.com
-</pre>
-
-<h3 id="appversion" name="appversion">appversion</h3>
-
-<p>Extension 可以安裝於同一應用程式的多個不同版本,而有些 chrome registration 可能只需作用於特定的版本。以下旗號</p>
-
-<pre class="eval">appversion=<em>version</em>
-appversion&lt;<em>version</em>
-appversion&lt;=<em>version</em>
-appversion&gt;<em>version</em>
-appversion&gt;=<em>version</em>
-</pre>
-
-<p>代表這個指令只應在 extension 安裝於符合特定版本的應用程式時作用。同一行可以指定多個 <code>appversion</code> ,此時只要其中一項符合即會作用。版本字串應遵循 <a href="/en/Toolkit_version_format" title="en/Toolkit_version_format">Toolkit version format</a> 。</p>
-
-<div class="note">
-<p>Gecko 在 1.8.0.13 之前以及版本 1.8.1.5 有一個 bug , 就是本字串必須超過一個字元(也就是最少兩個) 才能使用 &lt; 、 &gt; 及 =,否則會在 console 中收到<code> appversion</code> flag was not recognized 的錯誤訊息。參見: {{ Bug(380398) }} 。</p>
-</div>
-
-<h3 id="platformversion" name="platformversion">platformversion</h3>
-
-<p>{{ gecko_minversion_inline("8.0") }} 當附加元件尤其是 binary components支援一種以上的應用程式時,若能指定所相容的 Gecko 版本將為其帶來更多的方便性。若某些 chrome registration 只作用於定特定 Gecko 版本,以下旗號</p>
-
-<pre class="eval">platformversion=<em>version</em>
-platformversion&lt;<em>version</em>
-platformversion&lt;=<em>version</em>
-platformversion&gt;<em>version</em>
-platformversion&gt;=<em>version</em>
-</pre>
-
-<p>代表這個指令只應在 extension 安裝於符合特定 Gecko 版本的應用程式時作用。同一行可以指定多個 <code>platformversion</code>,此時只要其中一項符合即會作用。</p>
-
-<h3 id="contentaccessible" name="contentaccessible">contentaccessible</h3>
-
-<p>{{ Fx_minversion_inline("3") }} Chrome resources 已不能被非信任來源內容中的 &lt;img&gt;、&lt;script&gt; 及其他包含或添加的 elements 所參照。 這個限制不僅適用於非信任來源中所定義的 elements , 同時也適用於受信任的附加元件中所定義的 elements。若參照需要明確地被允許,請將 <code>contentaccessible</code> 旗號設定為 <code>yes</code> 來達到如舊版 Firefox 中的行為。 <span class="comment">See {{ bug("4369")}}</span></p>
-
-<p><code>contentaccessible</code> 只能用於 content package ,言下之意,它不會被 locale 或 skin registration 所識別。好在於 content package 所對應到的 locale 和 skin packages 對 content 而言是可見的。</p>
-
-<p>注意:由於舊版的 Firefox 根本看不懂 <code>contentaccessible</code> flag , 若要讓附加元件同時支援 Firefox 3 及古董版的話就得來個倒退嚕,您倒是看看:</p>
-
-<pre>content packagename chrome/path/
-content packagename chrome/path/ contentaccessible=yes
-</pre>
-
-<h3 id="os" name="os">os</h3>
-
-<p>{{ Fx_minversion_inline("3") }} Extensions (or themes) may offer different features depending on the operating system on which Firefox is running. The value is compared to the value of <a href="/en/OS_TARGET" title="en/OS_TARGET">OS_TARGET</a> for the platform.</p>
-
-<pre class="eval">os=WINNT
-os=Darwin
-</pre>
-
-<p>See <a href="/en/OS_TARGET" title="en/OS_TARGET">OS_TARGET</a> for a more complete list of os names. The os name is case insensitive.</p>
-
-<h3 id="osversion" name="osversion">osversion</h3>
-
-<p>{{ Fx_minversion_inline("3") }} An extension or theme may need to operate differently depending on which version of an operating system is running. For example, a theme may wish to adopt a different look on Mac OS X 10.5 than 10.4:</p>
-
-<pre class="eval">osversion&gt;=10.5
-</pre>
-
-<h3 id="platform_.28Platform-specific_packages.29" name="platform_.28Platform-specific_packages.29">abi</h3>
-
-<p>{{ Fx_minversion_inline("4") }} If a component is only compatible with a particular ABI, it can specify which ABI/OS by using this directive. The value is taken from the <a href="/en/XPCOM_Interface_Reference/nsIXULRuntime" title="https://developer.mozilla.org/en/nsIXULRuntime">nsIXULRuntime</a> OS and XPCOMABI values (concatenated with an underscore). For example:</p>
-
-<pre>binary-component component/myLib.dll abi=WINNT_<code>x86-MSVC
-</code>binary-component component/myLib.so abi=Linux_<code>x86-gcc3 </code>
-</pre>
-
-<p>See <a href="/en/XPCOM_ABI" title="en/XPCOM ABI">XPCOM ABI</a> for more details.</p>
-
-<h3 id="platform_.28Platform-specific_packages.29" name="platform_.28Platform-specific_packages.29">platform (Platform-specific packages)</h3>
-
-<p>Some packages are marked with a special flag indicating that they are platform specific. Some parts of content, skin, and locales may be different based on the platform being run. These packages contain three different sets of files, for Windows and OS/2, Macintosh, and Unix-like platforms. For example, the order of the "OK" and "Cancel" buttons in a dialog is different, as well as the names of some items.</p>
-
-<p>The "platform" modifier is only parsed for content registration; it is not recognized for locale or skin registration. However, it applies to content, locale, and skin parts of the package, when specified.</p>
-
-<p>To indicate that a package is platform-specific, add the "platform" modifier to the "content" line after the path, for example:</p>
-
-<pre class="eval">content global-platform jar:toolkit.jar!/toolkit/content/global-platform/ platform
-</pre>
-
-<p>Once that is specified in your manifest you then ensure that under the directory global-platform are subdirectories <code>win</code> (Windows/OS2), <code>mac</code> (OS9/OSX), or <code>unix</code> (Everything Else). Anything residing outside of these subdirectories will be ignored.</p>
-
-<h3 id="xpcnativewrappers" name="xpcnativewrappers">xpcnativewrappers</h3>
-
-<p>Chrome packages can decide whether to use the <a href="/en/XPCNativeWrapper" title="en/XPCNativeWrapper">XPCNativeWrapper</a> security mechanism to automatically protect their code against malicious content that they might access. See <a href="/en/Safely_accessing_content_DOM_from_chrome" title="en/Safely_accessing_content_DOM_from_chrome">Safely accessing content DOM from chrome</a> for details.</p>
-
-<p>This flag is enabled by default since Firefox 1.5. Disabling it manually was possible by specifying <code>xpcnativewrappers=no</code> until Firefox 4.</p>
-
-<div class="geckoVersionNote">
-<p>{{ gecko_callout_heading("2.0") }}</p>
-
-<p>Support for this flag has been removed in Gecko 2.0 {{ geckoRelease("2.0") }}. You can no longer disable <code>XPCNativeWrapper</code>s. To update your add-on to work without this flag:</p>
-
-<ul>
- <li>If your add-on depends upon XBL bindings attached to content objects (that is, it needs to be able to call functions or get and set properties created by the XBL binding), you'll need to use the object's <a href="/en/wrappedJSObject" title="en/wrappedJSObject"><code>wrappedJSObject</code></a> property to obtain a wrapped object.</li>
- <li>If you need to call functions or access properties defined by the content -- for example, if your add-on wants to add a button to the page that calls a JavaScript function defined by the page.</li>
-</ul>
-</div>
-
-<p>The <code>xpcnativewrappers</code> flag applies only to content packages; it is not recognized for locale or skin registration.</p>
-
-<h2 id="Example_Chrome_Manifest" name="Example_Chrome_Manifest">Example chrome manifest</h2>
-
-<pre class="eval">content necko jar:comm.jar!/content/necko/
-locale necko en-US jar:en-US.jar!/locale/en-US/necko/
-content xbl-marquee jar:comm.jar!/content/xbl-marquee/
-content pipnss jar:pipnss.jar!/content/pipnss/
-locale pipnss en-US jar:en-US.jar!/locale/en-US/pipnss/
-# Firefox-only
-overlay <a class="external" rel="freelink">chrome://browser/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
-# SeaMonkey-only
-overlay <a class="external" rel="freelink">chrome://navigator/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-overlay <a class="external" rel="freelink">chrome://communicator/content/pref/preftree.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PrefOverlay.xul</a>
-content pippki jar:pippki.jar!/content/pippki/
-locale pippki en-US jar:en-US.jar!/locale/en-US/pippki/
-content global-platform jar:toolkit.jar!/content/global-platform/ platform
-skin global classic/1.0 jar:classic.jar!/skin/classic/global/
-override <a class="external" rel="freelink">chrome://global/content/netError.xhtml</a> jar:embedder.jar!/global/content/netError.xhtml
-content inspector jar:inspector.jar!/content/inspector/
-</pre>
-
-<h2 id="Instructions_supported_in_bootstrapped_add_ons" name="Instructions_supported_in_bootstrapped_add_ons">Instructions supported in bootstrapped add-ons</h2>
-
-<p>The following instructions are supported in <a href="/en/Extensions/Bootstrapped_extensions" title="en/Extensions/Bootstrapped extensions">Bootstrapped extensions</a>:</p>
-
-<ul>
- <li><code>manifest</code></li>
- <li><code>content</code></li>
- <li><code>locale</code></li>
- <li><code>skin</code></li>
- <li><code>override</code></li>
-</ul>
-
-<h2 id="Debugging_a_Chrome_Manifest_file" name="Debugging_a_Chrome_Manifest_file">Debugging a chrome manifest file</h2>
-
-<p>The <a class="link-https" href="https://addons.mozilla.org/firefox/addon/chrome-list">Chrome List</a> extension (for Firefox 3.6 and older) shows all registered chrome. This is very helpful when trying to write a <code>chrome.manifest</code> file as you can inspect where the files are being mapped from (jar files, local directory, etc.)</p>
-
-<h2 id="Old-style_contents.rdf_manifests" name="Old-style_contents.rdf_manifests">Old-style contents.rdf manifests</h2>
-
-<p>Before the plaintext manifests were introduced (which happened in Firefox 1.5, Toolkit 1.8), RDF manifests named "contents.rdf" were used to register chrome. This format is deprecated; however, SeaMonkey versions before version 2 do not support the plaintext manifest format yet, so <code>contents.rdf</code> manifests are required for extensions that wish to maintain backwards compatibility with Firefox 1.0 or the suite.</p>
-
-<p>{{ gecko_minversion_note("1.9.2", "The <code>contents.rdf</code> manifest format is no longer supported at all starting with Gecko 1.9.2; add-ons already installed using this format will continue to work but can no longer be installed. Be sure to remove your add-on and reinstall it to ensure that it installs correctly after updating it to use a plaintext manifest.") }}</p>
-
-<h2 id="Official_References_for_Toolkit_API" name="Official_References_for_Toolkit_API">Official references for <a href="/en/Toolkit_API" title="en/Toolkit_API">Toolkit API</a></h2>
-
-<p>{{ page("en-US/docs/Toolkit_API/Official_References") }}</p>
-
-<p>{{ languages( { "fr": "fr/Enregistrement_chrome", "ja": "ja/Chrome_Registration", "pl": "pl/Rejestracja_Chrome" ,"zh-cn":"zh-cn/Chrome_Registration"} ) }}</p>
diff --git a/files/zh-tw/mozilla/connect/index.html b/files/zh-tw/mozilla/connect/index.html
deleted file mode 100644
index 2e7b782447..0000000000
--- a/files/zh-tw/mozilla/connect/index.html
+++ /dev/null
@@ -1,126 +0,0 @@
----
-title: Connect with Mozilla
-slug: Mozilla/Connect
-tags:
- - 繁體中文TW
-translation_of: Mozilla/Connect
----
-<div class="summary">
-<p><span class="seoSummary">Enable, inspire and collaborate to make the Web the primary platform used to create experiences across all connected devices.</span></p>
-</div>
-
-<div>
-<div class="column-container dev-program-callouts dev-program-block dev-program-first dev-program-column-wrapper">
-<div class="dev-program-callout">
-<div class="callout-link-container">
-<h2 id="Hacks_部落格">Hacks 部落格</h2>
-
-<p>A key resource for people developing for the Open Web, the Mozilla Hacks blog offers news and discussion of the latest in Web technologies and browser features.</p>
-
-<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="https://hacks.mozilla.org/" style="white-space: normal;">立刻閱讀 </a></div>
-</div>
-</div>
-
-<div class="dev-program-callout">
-<div class="callout-link-container">
-<h2 id="回饋頻道">回饋頻道</h2>
-
-<p>Do you have a <a href="http://mzl.la/devtools">great idea for the Developer Tools</a> in Firefox or <a href="http://mzl.la/openwebapps">how Open Web Apps should work</a>? Let us know and help shape the future features!</p>
-
-<p>Building things and need help? Ask away on Stack Overflow!<br>
- <span class="smaller"><strong>{{anch("Developer discussions", "Search the Q&amp;A below")}}</strong></span></p>
-
-<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="http://stackoverflow.com/r/mozilla" style="white-space: normal;">Stack Overflow 上的 Mozilla 問與答 </a></div>
-</div>
-</div>
-
-<div class="dev-program-callout">
-<div class="callout-link-container">
-<h2 id="加入_MDN">加入 MDN</h2>
-
-<p>Sign up for MDN! You will able to <a href="/en-US/docs/MDN/Contribute">edit the documentation</a> here, create a profile to show off your work, and get access to features over time as we roll them out.</p>
-
-<div class="callout-link-wrapper"><a class="callout-link" href="/profile/edit" style="white-space: normal;">加入或登入 </a></div>
-</div>
-</div>
-</div>
-
-<div class="dev-program-explanation dev-program-block">
-<h2 id="與_Mozilla_連結">與 Mozilla 連結</h2>
-
-<p>Developers are creating the future by building services and apps for people all over the world. The goal of Mozilla Developer Relations is to help developers to use open and standardized web technologies to succeed in achieving their goals. In addition to the documentation here on MDN, we offer help and other resources towards this goal, through various channels. We invite you to connect, learn, and share your own knowledge.</p>
-
-<p>We are offering help through <a href="http://stackoverflow.com/r/mozilla">Q&amp;A on Stack Overflow</a>, to solve specific technical issues and challenges you might have. We also have a newsletter keeping you informed on the latest happenings in the web scene around web apps and more. <a href="https://marketplace.firefox.com/developers/#newsletter-signup">Subscribe to the Apps &amp; Hacks newsletter.</a></p>
-
-<p>If you share Mozilla's <a href="https://www.mozilla.org/en-US/mission/">mission</a> and <a href="https://www.mozilla.org/en-US/about/manifesto/">principles</a>, and want to help spread them to more developers, check out the ways you can <a href="https://wiki.mozilla.org/Engagement/Developer_Engagement/Technical_Evangelism/Get_Involved">get involved with technical evangelism</a>, and join our <a href="https://lists.mozilla.org/listinfo/evangelism">evangelism discussion group</a>.</p>
-
-<p>We have a lot of plans and ideas for iteratively expanding our Developer Relations offerings, and we want you involved as we do so! So, <a href="http://stackoverflow.com/r/mozilla">follow the tags on Stack Overflow</a>, <a href="https://hacks.mozilla.org/">subscribe to the Hacks blog</a>, <a href="https://marketplace.firefox.com/developers/#newsletter-signup">subscribe to the newsletter, </a>and <a href="/profile/edit">sign up for an account</a>!</p>
-
-<h2 id="加入_Mozilla" style="line-height: 30px;">加入 Mozilla</h2>
-
-<p><span style="line-height: 1.5;">If you want to go beyond <em>connecting</em> with Mozilla, you can <em>join</em> Mozilla and help realize <a href="https://www.mozilla.org/mission/">Mozilla's mission of building a better Internet</a>. As a developer, you have skills to contribute in many areas, as well as the opportunity to enhance your skills. Mozilla is an open source project, so we "default to open." You can "view source" and contribute to our software development projects, like the Firefox browser for desktop and Android, Firefox OS, and Mozilla's own websites. You can become part of an international community and get recognition for your efforts. Here are some of the advantages of contributing to the Mozilla project.</span></p>
-
-<h3 id="學習新東西的機會"><strong>學習新東西的機會 </strong></h3>
-
-<div>
-<p><span style="line-height: 1.5;">In writing code for an open source project, you may face problems you have not encountered before, which present learning opportunities for you. You can try out new tools and techniques in an open source project. For example, if you've never done any unit testing, and cannot get permission from your boss to do so in your regular job, writing some code for an open source project would be an excellent place to try it out. Contributing to open source gives you the opportunity to collaborate with and get to know many people around the world who have similar interests. Moreover, an open source organization like Mozilla has many contributors who can help you in solving problems you encounter.</span> If you're just getting started contributing, you can look for "mentored" bugs, where an experienced contributor has offered to help a newcomer fix them.</p>
-
-<h3 id="我可以從貢獻中得到什麼?"><strong>我可以從貢獻中得到什麼? </strong></h3>
-
-<p><span style="line-height: 1.5;">Exploring many things and getting recognition in the community -- these are the intangible benefits of contributing to Mozilla. While we can't guarantee specific tangible benefits, many valued contributors receive free Mozilla gear and invitations to Mozilla-related events, and are first in line to be considered for internships. Moreover, your experience in contributing to an open source project might help you find a job. </span><span style="line-height: 1.5;">More and more employers of developers are looking at open source contributions. They like to see that you're blogging and contributing to mailing lists, and they really like to see you listed as a committer on an open source project. It can also help with the work experience section of your resume. </span></p>
-
-<h3 id="我可以如何貢獻_Mozilla?"><strong>我可以如何貢獻 Mozilla? </strong></h3>
-
-<p><span style="line-height: 1.5;">There are many project area for which you can contribute to Mozilla. You can find a current, complete list on the main Mozilla <a href="https://www.mozilla.org/contribute">Get Involved</a> page. Some areas that may interest you as a developer include:</span></p>
-
-<ul>
- <li><a href="http://www.whatcanidoformozilla.org/">Coding</a></li>
- <li><a href="http://www.whatcanidoformozilla.org/">Web development</a></li>
- <li><a href="/en-US/Firefox_OS/Developing_Gaia">Firefox OS</a></li>
- <li><a href="https://quality.mozilla.org/teams/">QA</a></li>
- <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Addons">Add-ons</a></li>
- <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Apps">Apps</a></li>
- <li><a href="/en-US/docs/MDN/Getting_started">Developer documentation (here on MDN)</a></li>
-</ul>
-</div>
-</div>
-
-<div class="column-container dev-program-block">
-<div class="column-half" id="Developer_discussions">
-<h2 id="Stack_Overflow_上的問與答_查看所有_QA…">Stack Overflow 上的問與答 <a class="heading-link" href="http://stackoverflow.com/r/mozilla">查看所有 Q&amp;A…</a></h2>
-
-<p>We have Q&amp;A to discuss challenges and issues when developing, in particular for Firefox OS and the Open Web on mobile. It's available on Stack Overflow under the easy URL <a href="http://stackoverflow.com/r/mozilla">http://stackoverflow.com/r/mozilla</a>.</p>
-
-<div class="stack-form">Stack form</div>
-
-<h3 id="最新_QA_主題">最新 Q&amp;A 主題</h3>
-</div>
-
-<div class="column-half dev-program-hacks dev-program-block"> </div>
-</div>
-
-<p class="dev-program-block"><img alt="Developers at a Firefox OS workshop in Madrid." src="https://mdn.mozillademos.org/files/7479/PhonesUp.jpg" style="display: block; height: 359px; margin: 0px auto; max-width: 100%; width: 720px;"></p>
-
-<div class="column-container dev-program-block">
-<div class="column-7 dev-program-events">
-<h2 id="Mozilla_在哪裡?_在活動頁面上查看訪客與詳細說明…">Mozilla 在哪裡? <a class="heading-link" href="https://developer.mozilla.org/en/events">在活動頁面上查看訪客與詳細說明… </a></h2>
-
-<p>Here is a listing of events where Mozilla representatives will be speaking. Make sure to talk to them!</p>
-</div>
-
-<div class="column-5">
-<h2 id="其他資源">其他資源</h2>
-
-<ul class="no-bullets">
- <li><a href="http://www.youtube.com/user/mozhacks">Mozilla Hacks on YouTube</a>
-
- <ul>
- <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqIHIUUv08hBCHq1OgPKhdo0">Firefox OS videos</a></li>
- <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqLZNY22xKbTEzMfYo9PXAlm">Firefox Developer Tools videos</a></li>
- </ul>
- </li>
- <li><a href="https://twitter.com/mozhacks">@mozhacks on Twitter</a></li>
-</ul>
-</div>
-</div>
-</div>
diff --git a/files/zh-tw/mozilla/creating_mozsearch_plugins/index.html b/files/zh-tw/mozilla/creating_mozsearch_plugins/index.html
deleted file mode 100644
index d41978c6ee..0000000000
--- a/files/zh-tw/mozilla/creating_mozsearch_plugins/index.html
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: 製作 MozSearch 搜尋模組
-slug: Mozilla/Creating_MozSearch_plugins
-tags:
- - 搜尋模組
-translation_of: Mozilla/Creating_MozSearch_plugins
----
-<p>Firefox 2 使用簡化的 <a class="external" href="http://opensearch.org/">OpenSearch</a> 格式儲存搜尋模組,而 MozSearch 搜尋模組則是描述搜尋引擎、URL 及相關參數的 XML 檔。
-</p>
-<div class="warning"><b>警告:</b>MozSearch 並非標準格式,也只應於 Mozilla 專案內部使用。除非要包裝在 <a href="zh_tw/Bundles#Application-specific_Extension_Files">Firefox 擴充套件</a>中或直接與 Firefox 安裝檔一起發佈,否則不該使用這種格式。要製作能由網頁安裝的搜尋模組,請參考<a href="zh_tw/%e8%a3%bd%e4%bd%9c_OpenSearch_%e6%90%9c%e5%b0%8b%e6%a8%a1%e7%b5%84">製作 OpenSearch 搜尋模組</a>。</div>
-<h2 id=".E6.90.9C.E5.B0.8B.E6.A8.A1.E7.B5.84.E6.AA.94" name=".E6.90.9C.E5.B0.8B.E6.A8.A1.E7.B5.84.E6.AA.94">搜尋模組檔</h2>
-<p>MozSearch 格式檔與 <a href="zh_tw/%e8%a3%bd%e4%bd%9c_OpenSearch_%e6%90%9c%e5%b0%8b%e6%a8%a1%e7%b5%84">OpenSearch</a> 格式很像,只是根元素及 XML 名稱空間不同。
-</p>
-<h2 id=".E7.AF.84.E4.BE.8B.EF.BC.9AYahoo.21_.E6.90.9C.E5.B0.8B" name=".E7.AF.84.E4.BE.8B.EF.BC.9AYahoo.21_.E6.90.9C.E5.B0.8B">範例:Yahoo! 搜尋</h2>
-<p>下列 XML 是內建於英文版 Firefox 2 的 Yahoo! 搜尋模組:
-</p>
-<pre>&lt;SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"&gt;
-&lt;ShortName&gt;Yahoo&lt;/ShortName&gt;
-&lt;Description&gt;Yahoo Search&lt;/Description&gt;
-&lt;InputEncoding&gt;UTF-8&lt;/InputEncoding&gt;
-&lt;Image width="16" height="16"&gt;data:image/x-icon;base64,R0lGODlhEAAQAJECAP8AAAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0NogQuyBDEnEd2kHkfFWUamEzmpZSfmaIHPHrRguUm/fT+UwAAOw==&lt;/Image&gt;
-&lt;Url type="application/x-suggestions+json" method="GET"
- template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;amp;command={searchTerms}" /&gt;
-&lt;Url type="text/html" method="GET" template="http://search.yahoo.com/search"&gt;
- &lt;Param name="p" value="{searchTerms}"/&gt;
- &lt;Param name="ei" value="UTF-8"/&gt;
-
- &lt;MozParam name="fr" condition="pref" pref="yahoo-fr" /&gt;
-&lt;/Url&gt;
-&lt;SearchForm&gt;http://search.yahoo.com/&lt;/SearchForm&gt;
-&lt;/SearchPlugin&gt;
-</pre>
-<p>假設使用者選擇 Yahoo! 搜尋模組,然後在搜尋欄內輸入「mozilla」後按下 Enter 鍵。接著 Firefox 會依據上面的搜尋模組敘述前往這個搜尋 URL:
-</p>
-<pre class="eval"><span class="nowiki">http://search.yahoo.com/search?p=mozilla&amp;ei=UTF-8&amp;fr=moz2</span>
-</pre>
-<p>若使用者只單純按下搜尋欄的放大鏡圖示,或者在搜尋欄隱藏時點選「工具>網路搜尋」,則瀏覽器會前往 <code>&lt;SearchForm&gt;</code> 指定的 &lt;tt&gt;<span class="nowiki">http://search.yahoo.com/</span>&lt;/tt&gt;。
-</p>
-<h2 id=".E7.AF.84.E4.BE.8B.EF.BC.9A.E6.90.9C.E5.B0.8B_MDC" name=".E7.AF.84.E4.BE.8B.EF.BC.9A.E6.90.9C.E5.B0.8B_MDC">範例:搜尋 MDC</h2>
-<p>此搜尋模組能協助你輕鬆搜尋 Mozilla 開發者中心英文版的文件:
-</p>
-<pre>&lt;SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"&gt;
-&lt;ShortName&gt;MDC&lt;/ShortName&gt;
-&lt;Description&gt;Mozilla Developer Center search&lt;/Description&gt;
-&lt;InputEncoding&gt;UTF-8&lt;/InputEncoding&gt;
-&lt;Image width="16" height="16"&gt;data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz%2F%2Fz8DJQAggJiQOe%2Ffv2fv7Oz8rays%2FN%2BVkfG%2FiYnJfyD%2F1%2BrVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw%2F8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi%2FG%2BQKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo%2BMXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia%2BCuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq%2FvLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg%2FkdypqCg4H8lUIACnQ%2FSOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD%2BaDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg%3D%3D&lt;/Image&gt;
-&lt;Url type="text/html" method="GET" template="http://developer.mozilla.org/en/docs/Special:Search?search={searchTerms}"/&gt;
-&lt;SearchForm&gt;http://developer.mozilla.org/en/docs/Special:Search&lt;/SearchForm&gt;
-&lt;/SearchPlugin&gt;
-</pre>
-<p>這個範例中單純將參數加到 URL 中,而不是使用 <code>&lt;Param&gt;</code> 指定參數。這也是使用 <code>GET</code> 時的建議做法,而 <code>&lt;Param&gt;</code> 應於以 <code>POST</code> 方式傳送表單時才使用。
-</p>
-<h2 id=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80" name=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80">延伸閱讀</h2>
-<ul><li><a href="zh_tw/%e8%a3%bd%e4%bd%9c_OpenSearch_%e6%90%9c%e5%b0%8b%e6%a8%a1%e7%b5%84#.E9.99.A4.E9.8C.AF.E6.8A.80.E5.B7.A7">搜尋模組除錯技巧</a>
-</li></ul>
-{{ languages( { "ca": "ca/Creaci\u00f3_de_connectors_MozSearch", "en": "en/Creating_MozSearch_plugins", "es": "es/Creaci\u00f3n_de_plugins_MozSearch", "fr": "fr/Cr\u00e9ation_de_plugins_MozSearch", "ja": "ja/Creating_MozSearch_plugins", "it": "it/Creare_Plugin_MozSearch", "pl": "pl/Tworzenie_wtyczek_MozSearch" } ) }}
diff --git a/files/zh-tw/mozilla/firefox/developer_edition/index.html b/files/zh-tw/mozilla/firefox/developer_edition/index.html
deleted file mode 100644
index d912a36470..0000000000
--- a/files/zh-tw/mozilla/firefox/developer_edition/index.html
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: Firefox 開發者版本
-slug: Mozilla/Firefox/Developer_Edition
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Firefox/Developer_Edition
----
-<div>{{FirefoxSidebar}}</div><p style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/9143/firefox-dev-ed_logo-only_1024.png" style="width: 256px; height: 256px; display: block; margin-left: auto; margin-right: auto;">一個專為 Web 開發者量身定做的 Firefox 版本。</p>
-
-<p><a href=" https://www.mozilla.org/zh-TW/firefox/developer/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">下載 Firefox 開發者版本</a></p>
-
-<hr>
-<div class="column-container">
-<div class="column-half">
-<h3 id="最新的_Firefox_功能"><strong>最新的 Firefox 功能</strong></h3>
-
-<p>Firefox Developer Edition 取代了 <a href="https://wiki.mozilla.org/Release_Management/Release_Process">Firefox 釋出流程</a>中的 Aurora 頻道。如同 Aurora,各功能會在 Nightly builds 中穩定下來後,每隔六週下放到 Developer Edition 裡面。</p>
-
-<p>透過 Developer Edition,您可以在至少 12 週前接觸到 Firefox 正式釋出的工具及平台功能。</p>
-
-<p><a href="/zh-TW/Firefox/Releases/35">來看看 Developer Edition 有哪些新功能</a>。</p>
-</div>
-
-<div class="column-half">
-<h3 id="清晰的界面"><strong>清晰的界面</strong></h3>
-
-<p>更快找到開發者工具。</p>
-
-<h3 id="實驗性的開發者工具"><strong>實驗性的開發者工具</strong></h3>
-
-<p>我們加入了尚未準備好正式釋出的實驗性工具。</p>
-
-<p>例如,Developer Edition 加入了 <a href="/en-US/docs/Tools/Valence">Valence 附加元件</a>,一個可以讓您透過 <a href="/zh-TW/docs/Tools">Firefox 開發者工具</a>連到其他瀏覽器,像是 Android 上面的 Chrome 及 iOS 上面的 Safari。</p>
-</div>
-</div>
-
-<div class="column-container">
-<div class="column-half">
-<h3 id="獨立的設定檔"><strong>獨立的設定檔</strong></h3>
-
-<p>Firefox Developer Edition 使用一個獨立於其他已經安裝在您電腦上 Firefox 版本的設定檔。這意味著您可以簡單的在執行 Developer Edition 的同時使用正式或測試版的 Firefox。</p>
-
-<div class="note">
-<p><strong>註:</strong>這表示在您第一次啟動  Developer Edition 後,將會看到一個完全沒有自訂外觀﹑沒有擴充套件、沒有書籤、也沒有歷史紀錄的瀏覽器。若您想讓您的  Developer Edition 跟您其他版本的  Firefox 使用一樣的設定,您可以<a href="https://support.mozilla.org/zh-TW/kb/how-do-i-set-up-firefox-sync">使用  Firefox Sync</a> 來達成同步。</p>
-</div>
-</div>
-
-<div class="column-half">
-<h3 id="針對_Web_開發者的設置"><strong>針對 Web 開發者的設置</strong></h3>
-
-<p>我們針對 Web 開發者的需求調整了預設的設定值。例如,chrome 及遠端除錯功能預設為開啟。</p>
-</div>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/mozilla/firefox/developer_edition/reverting/index.html b/files/zh-tw/mozilla/firefox/developer_edition/reverting/index.html
deleted file mode 100644
index 0a83335196..0000000000
--- a/files/zh-tw/mozilla/firefox/developer_edition/reverting/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: 回到過去
-slug: Mozilla/Firefox/Developer_Edition/Reverting
-translation_of: Mozilla/Firefox/Developer_Edition/Reverting
----
-<div>{{FirefoxSidebar}}</div><h2 id="換掉_Developer_Edition_佈景主題">換掉 Developer Edition 佈景主題</h2>
-
-<p><br>
- 如果您想繼續使用 Developer Edition, 可是比較喜歡目前套用在 Firefox 及 Firefox Beta 的 Australis 界面,您可以切換到一般的 Firefox 佈景主題:只要打開「自訂模式」面板並點擊「使用 Firefox Developer Edition 佈景主題」按鈕即可。</p>
-
-<p>{{EmbedYouTube("OvJwofTjsNg")}}</p>
-
-<p>注意,目前 Developer Edition 佈景主題尚未與個性面板相容。所以如果您想套用個性面板,您必須先切回 Australis 界面。</p>
-
-<h2 id="回到_Firefox_Aurora">回到 Firefox Aurora</h2>
-
-<p><br>
- 如果您想保留所有 Firefox Developer Edition 的前期測試功能,但是又不想要有其他的改變,您可以回復到看起來就像是以前的 Firefox Aurora。請依序執行下面兩步驟:</p>
-
-<ol>
- <li>開啟 Developer Edition 的選項頁面,並將「允許 Firefox Developer Edition 與 Firefox 同時執行」選項的勾選取消掉。您將會收到重新啟動瀏覽器的提示。</li>
- <li>瀏覽器重新啟動後,您可以打開「自訂模式」面板並點擊「使用 Firefox Developer Edition 佈景主題」按鈕來關閉 Developer Edition 佈景主題。</li>
-</ol>
-
-<p>{{EmbedYouTube("0Ofq-vlw8Qw")}}</p>
diff --git a/files/zh-tw/mozilla/firefox/multiprocess_firefox/index.html b/files/zh-tw/mozilla/firefox/multiprocess_firefox/index.html
deleted file mode 100644
index 6afe2dd67d..0000000000
--- a/files/zh-tw/mozilla/firefox/multiprocess_firefox/index.html
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: 多處理程序的 Firefox
-slug: Mozilla/Firefox/Multiprocess_Firefox
-tags:
- - Elecrolysis
- - Firefox
- - Multiprocess
- - e10s
-translation_of: Mozilla/Firefox/Multiprocess_Firefox
----
-<div>{{FirefoxSidebar}}</div><p>在舊的 Firefox 桌面版本中,整個瀏覽器都是執行在單一的作業系統處理程序裡。特別是用來執行瀏覽器使用者介面(又稱為「chrome code」)的 JavaScript 和網頁裡的程式碼(又稱為「內容」或「網頁內容」)都在同一個處理程序中。<br>
-<br>
-最新版的 Firefox 會分別在單獨的處理程序中執行瀏覽器的介面和網頁內容。在這個架構的第一個版本中,所有瀏覽器分頁在同一個處理程序中執行,而瀏覽器介面則在另外的一個處理程序中。在未來幾個版本後,我們希望能有不只一個處理程序。這個提供多處理程序 Firefox 的專案稱為 Electrolysis,有時候會縮寫成 e10s。</p>
-
-<p>多處理程序的 Firefox 不會影響一般的網頁。只有 Firefox 本身和附加元件的開發者們需要直接存取網頁內容時才會受到影響。</p>
-
-<p>使用者介面的 chrome JavaScript 必須使用 <a href="/Firefox/Multiprocess_Firefox/Message_manager">message manager</a> 來間接存取網頁內容。為了緩解過渡期的影響,我們已經實作了 <a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a> 和一些<a href="/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">給附加元件開發者的相容替代方案</a>。如果你是附加元件的開發者,想知道這會不會影響到你,請參閱<a href="/Mozilla/Add-ons/Working_with_multiprocess_Firefox">多處理程序 Firefox 的工作指南</a>。</p>
-
-<hr>
-<div class="column-container">
-<div class="column-half">
-<dl>
- <dt><a href="/Firefox/Multiprocess_Firefox/Technical_overview">技術總覽</a></dt>
- <dd>非常高階的多處理程序 Firefox 實作解釋。</dd>
- <dt><a href="/zh-TW/Firefox/Multiprocess_Firefox/Web_content_compatibility">網頁內容相容性指南</a></dt>
- <dd>過渡期可能出現的潛在網站相容性問題的指南和細節。提示:不是很多!</dd>
- <dt><a href="/Firefox/Multiprocess_Firefox/Glossary">用語表</a></dt>
- <dd>多處理程序 Firefox 的術語參考。</dd>
- <dt><a href="/Firefox/Multiprocess_Firefox/Message_Manager">Message manager</a></dt>
- <dd>溝通介面與內容的元件完整指南。</dd>
- <dt><a href="/zh-TW/Mozilla/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">基於 SDK 的附加元件</a></dt>
- <dd>如何移植使用 Add-on SDK 開發的附加元件。</dd>
- <dt><a href="/Firefox/Multiprocess_Firefox/Which_URIs_load_where">各種 URIs 在哪裡載入</a></dt>
- <dd>URIs(chrome:, about:, file:, resource:)在哪個處理程序中載入的快速指南。</dd>
-</dl>
-</div>
-
-<div class="column-half">
-<dl>
- <dt><a href="/Firefox/Multiprocess_Firefox/Motivation">動機</a></dt>
- <dd>為什麼我們要實作多處理程序的 Firefox:效能、安全和穩定。</dd>
- <dt><a href="/Mozilla/Add-ons/Working_with_multiprocess_Firefox">附加元件移植指南</a></dt>
- <dd>如果你是附加元件的開發者,來這裡看看你要如何處理程式碼。</dd>
- <dt><a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">跨處理程序元件包裝(Cross Process Object Wrappers)</a></dt>
- <dd>Cross Process Object Wrappers 是一個移植工具,讓 chrome code 可以同步存取內容。</dd>
- <dt><a href="/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">內容處理程序的除錯</a></dt>
- <dd>如何在內容處理程序、包含框架和處理程序腳本中進行除錯。</dd>
- <dt><a href="/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">多處理程序 Firefox 的分頁處理</a></dt>
- <dd>在多處理程序的 Firefox 中分頁是如何切換的。</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<div class="column-container">
-<div class="column-half">
-<dl>
- <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Chrome 程式碼的限制</a></dt>
- <dd>不再有用的 Chrome 程式碼,以及如何修正。</dd>
-</dl>
-</div>
-
-<div class="column-half">
-<dl>
- <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">框架程式碼的限制</a></dt>
- <dd>不再有用的框架程式碼,以及如何替代。</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="聯絡我們">聯絡我們</h2>
-
-<p>了解更多關於項目、參與、或者來問問題。</p>
-
-<ul>
- <li><strong>Electrolysis 專案頁面</strong>:<a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li>
- <li><strong>IRC</strong>:#e10s on <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li>
- <li><strong>郵件群組</strong>:<a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/firefox/privacy/index.html b/files/zh-tw/mozilla/firefox/privacy/index.html
deleted file mode 100644
index 1f42ab5be0..0000000000
--- a/files/zh-tw/mozilla/firefox/privacy/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 隱私
-slug: Mozilla/Firefox/Privacy
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Firefox/Privacy
----
-<div>{{FirefoxSidebar}}</div><p>{{ ListSubpages () }}</p>
diff --git a/files/zh-tw/mozilla/firefox/privacy/tracking_protection/index.html b/files/zh-tw/mozilla/firefox/privacy/tracking_protection/index.html
deleted file mode 100644
index a52f8b815d..0000000000
--- a/files/zh-tw/mozilla/firefox/privacy/tracking_protection/index.html
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: 追蹤保護
-slug: Mozilla/Firefox/Privacy/Tracking_Protection
-translation_of: Mozilla/Firefox/Privacy/Tracking_Protection
----
-<div>{{FirefoxSidebar}}</div><h2 id="追蹤保護是什麼?">追蹤保護是什麼?</h2>
-
-<p>在第 42 版後,Firefox Desktop 與 Firefox for Android 導入了追蹤保護。在隱私視窗(Firefox for Android 則是隱私標籤)內,Firefox 會封鎖從其他用戶追蹤網站載入的內容。</p>
-
-<p>有些被封鎖的內容,屬於頁面排版的一部分。如果 Firefox 因為封鎖了這些內容而造成跑版,用戶很可能會注意到。但如果針對遭封鎖的元素,以其他元素填充的話,用戶也可能完全不會注意到。</p>
-
-<p>當 Firefox 封鎖內容的時候,網頁主控台的訊息會跳出如下面般的紀錄:</p>
-
-<pre>因為啟用了追蹤保護,位於「http://some/url」的資源已被封鎖。</pre>
-
-<p>請記得在使用 Firefox for Android 的時候,你可以透過遠端除錯訪問主控台。</p>
-
-<p>Firefox UI 會在封鎖內容的時候告訴用戶,並同時告知用戶可以在此次瀏覽階段解除封鎖。用戶也可以選擇完全停用追蹤保護。</p>
-
-<h2 id="Firefox_如何決定封鎖什麼?">Firefox 如何決定封鎖什麼?</h2>
-
-<p>載入內容的封鎖與否,取決於該內容來自哪個網域。</p>
-
-<p>Firefox 會傳送一個確定參與用戶追蹤的網域列表。當追蹤保護啟動的時候,Firefox 會封鎖來自列表網站的內容。</p>
-
-<p>追蹤用戶的網站通常來自第三方廣告網站與分析網站。</p>
-
-<h2 id="這對我的網站有什麼意義?">這對我的網站有什麼意義?</h2>
-
-<p>當追蹤保護啟用時,最明顯的意義是:</p>
-
-<ul>
- <li>用戶不會見到由第三方維護的追蹤性內容</li>
- <li>你的網站無法使用與追蹤有關的第三方廣告與分析服務。</li>
-</ul>
-
-<p>更值得注意的是,如果你的網站有部分依賴於追蹤器的運作程式碼,那這些追蹤程式碼將會被封鎖和禁止並可能導致你的網站失去正常運作當追蹤保護被啟用。例如,當你的網站包含程式碼,那些程式碼依賴於追蹤網站所提供的程式碼的功能,那麼這些追蹤網站的程式碼的功能將會失敗,不會運作,停止呼叫程式碼,失去網站的運作功能。</p>
-
-<p>像是說,不要這樣用 Google Analytics:</p>
-
-<pre class="brush:html example-bad">&lt;a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);"&gt;Visit example.com&lt;/a&gt;
-&lt;script&gt;
-function trackLink(url,event) {
- event.preventDefault();
- ga('send', 'event', 'outbound', 'click', url, {
- 'transport': 'beacon',
- 'hitCallback': function() {
- document.location = url;
- }
- });
-}
-&lt;/script&gt;</pre>
-
-<p>而是要在使用物件以前偵測該物件是否存在或被停用,防止程式運作的失敗。像是:</p>
-
-<pre class="brush:html example-good">&lt;a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);"&gt;Visit example.com&lt;/a&gt;
-&lt;script&gt;
-function trackLink(url,event) {
- event.preventDefault();
- if (window.ga &amp;&amp; <span class="pl-smi">ga</span>.loaded) {
- ga('send', 'event', 'outbound', 'click', url, {
- 'transport': 'beacon',
- 'hitCallback': function() { document.location = url; }
- });
- } else {
- document.location = url;
- }
-}
-&lt;/script&gt;
-</pre>
-
-<p>關於此技術的詳細資訊可參見 <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a>.</p>
-
-<p>取決於那些第三方網站程式的程式碼寫法和運作方式,這樣的程式碼寫法不會是適合和適用於你的網站的程式碼。所以說,你的網站將會失敗停止運作如果這些第三方外掛程式碼回應過慢或不可用或追蹤程式碼被外掛程式停用。</p>
diff --git a/files/zh-tw/mozilla/firefox/releases/3/firefox_3_css_improvement/index.html b/files/zh-tw/mozilla/firefox/releases/3/firefox_3_css_improvement/index.html
deleted file mode 100644
index bbad0696a8..0000000000
--- a/files/zh-tw/mozilla/firefox/releases/3/firefox_3_css_improvement/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Firefox 3 CSS Improvement
-slug: Mozilla/Firefox/Releases/3/Firefox_3_CSS_Improvement
-translation_of: Mozilla/Firefox/releases/3/CSS_improvements
----
-<div>{{FirefoxSidebar}}</div><h3 id="Firefox_3_CSS_.E7.9A.84.E6.94.B9.E5.96.84" name="Firefox_3_CSS_.E7.9A.84.E6.94.B9.E5.96.84">Firefox 3 CSS 的改善</h3>
-<ul>
- <li>實做了 <a class="external" href="http://www.w3.org/TR/CSS21/visuren.html#propdef-display">display</a> property 的兩個特性值 <a class="external" href="http://www.w3.org/TR/CSS21/visuren.html#value-def-inline-block">inline-block</a> 與 <a class="external" href="http://www.w3.org/TR/CSS21/tables.html#value-def-inline-table">inline-table</a>。</li>
- <li>現在所有平台都支援 <a class="external" href="http://www.w3schools.com/css/pr_font_font-size-adjust.asp">font-size-adjust</a> property (先前只在 Windows 平台支援)。</li>
- <li>支援 <a class="external" href="http://www.w3.org/TR/css3-color/">CSS 3 Color Module</a> 中加入的特性值 <a class="external" href="http://www.w3.org/TR/css3-color/#rgba-color">rgba()</a> 與 <a class="external" href="http://www.w3.org/TR/css3-color/#hsla-color">hsla()</a> (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=147017">Bug 147017</a>)。</li>
- <li>支援 <a class="external" href="http://www.w3.org/TR/css3-ui/">CSS3 Basic User Interface Module</a> 的 pesudo-class <a class="external" href="http://www.w3.org/TR/css3-ui/#pseudo-default">:default</a> (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=302186">Bug 302186</a>)。</li>
- <li>替 width, min-width, max-width 這三個 properties 加入四個特性值: -moz-max-content, -moz-min-content, -moz-fit-content, 與 -moz-available (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=311415">Bug 311415</a> 與 <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=402706">Bug 402706</a>)。</li>
- <li>支援 HTML soft hyphens (&amp;shy;)。</li>
- <li>現在 Pre-formatted tabs 在使用比例字型時的表現好多了,遵守 CSS 2.1 規格書。</li>
- <li>支援微軟的 CSS 規格 <a class="external" href="http://developer.mozilla.org/en/docs/CSS:ime-mode">ime-mode </a> property。</li>
- <li>現在支援了 CSS text-rendering property for HTML (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=387969">Bug 387969</a>)。</li>
- <li>實做了兩個 CSS properties: -moz-border-*-start 與 -moz-border-*-end (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=74880">Bug 74880</a>)。</li>
- <li>現在 -moz-initial 幾乎實做於所有的 CSS properties 了 (除了 quotes and -moz-border-*-colors) (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=80887">Bug 80887</a>)。</li>
- <li>window.getComputedStyle() 現在支援所有已支援的 CSS properties (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=316981">Bug 316981</a>).</li>
- <li>支援 content property 的特性值 "none" (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=378535">Bug 378535</a>)。</li>
- <li>支援 cursor property 的特性值 "none" (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=378535">Bug 378535</a>)。</li>
-</ul>
-<h3 id=".E5.8F.83.E8.80.83.E8.B3.87.E8.A8.8A" name=".E5.8F.83.E8.80.83.E8.B3.87.E8.A8.8A">參考資訊</h3>
-<ul>
- <li><a class="external" href="http://developer.mozilla.org/en/docs/CSS_improvements_in_Firefox_3">CSS improvements in Firefox 3 原始網頁</a></li>
-</ul>
-<h3 id=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80" name=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80">延伸閱讀</h3>
-<ul>
- <li><a class="external" href="http://msdn2.microsoft.com/en-us/library/ms533883.aspx">ime-mode Attribute | imeMode Property</a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/gecko/chrome/api/browser_api/index.html b/files/zh-tw/mozilla/gecko/chrome/api/browser_api/index.html
deleted file mode 100644
index faa28e0f03..0000000000
--- a/files/zh-tw/mozilla/gecko/chrome/api/browser_api/index.html
+++ /dev/null
@@ -1,158 +0,0 @@
----
-title: Browser API
-slug: Mozilla/Gecko/Chrome/API/Browser_API
-translation_of: Mozilla/Gecko/Chrome/API/Browser_API/Using
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('privileged') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>HTML Browser API 其實是 HTML <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 元素的延伸,可讓 Web Apps 建構瀏覽器或類似瀏覽器的 Apps。主要可分為 2 大項:</p>
-<ul>
- <li>針對嵌入式內容,讓 <code>iframe</code> 行為如同最上層的瀏覽器視窗。也就是說 <a href="https://developer.mozilla.org/en-US/docs/DOM/window.top" title="/en-US/docs/DOM/window.top"><code>window.top</code></a><code>、</code><a href="https://developer.mozilla.org/en-US/docs/DOM/window.parent" title="/en-US/docs/DOM/window.parent"><code>window.parent</code></a><code>、</code><a href="https://developer.mozilla.org/en-US/docs/DOM/window.frameElement" title="/en-US/docs/DOM/window.frameElement"><code>window.frameElement</code></a><code> 都不該顯示出上層的頁</code>框階層 (Frame hierarchy)。在不同情況下,也能用來說明嵌入式內容是否為 Open Web Apps。</li>
- <li>用以控制並監聽嵌入式內容狀態變化的 API。</li>
-</ul>
-<p>另在「嵌入式內容就是 1 個 <a href="/en-US/docs/Apps" title="/en-US/docs/Apps">Open Web App</a>」的情況下,將於合適的 Apps 環境 (如權限) 中載入該內容。</p>
-<h2 id="用途">用途</h2>
-<p>設定了 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-mozbrowser">mozbrowser</a> 屬性之後,即可將 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 轉為瀏覽器框架:</p>
-<pre class="brush: html">&lt;iframe src="http://hostname.tld" mozbrowser&gt;</pre>
-<p>如果要嵌入 Open Web Apps,就必須提供 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-mozapp">mozapp</a> 屬性,且導向 Apps 的 manifest 檔案之路徑應為:</p>
-<pre>&lt;iframe src="http://hostname.tld" mozapp='http://path/to/manifest.webapp' mozbrowser&gt;</pre>
-<p>最後透過 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-remote">remote</a> 屬性,<a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 內容可載入至本身的子處理程序 (Child process) 中,藉以分離出「嵌入此 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 頁面」的處理程序。</p>
-<pre>&lt;iframe src="http://hostname.tld" mozbrowser remote&gt;</pre>
-<div class="warning">
- <p><strong>警告:</strong>因應安全考量,若要從未知/未經信任的來源下載內容,則必備最後一項屬性。若要略過此屬性,則 Apps 可能受到惡意網站的危害。</p>
-</div>
-<h2 id="權限">權限</h2>
-<p>任何 Apps 若要嵌入瀏覽器框架,則其 <a href="/en-US/docs/Web/Apps/Manifest" title="/en-US/docs/Web/Apps/Manifest">app manifest</a> 檔案中必備 <code>browser</code> 權限。</p>
-<pre class="brush: json">{
- "permissions": {
- "browser": {}
- }
-}</pre>
-<p>此外,若要嵌入 Open Web Apps,則該 App 亦需具備 <code>embed-apps</code> 權限。</p>
-<pre class="brush: json">{
- "permissions": {
- "browser": {},
- "embed-apps": {}
- }
-}</pre>
-<h2 id="其他函式">其他函式</h2>
-<p>為因應瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的需求,Firefox OS 另擴充了 <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement" title="/en-US/docs/Web/API/HTMLIFrameElement"><code>HTMLIFrameElement</code></a> DOM 介面。下列新函式將為 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 提供更多功能:</p>
-<h3 id="存取_(Navigation)_函式">存取 (Navigation) 函式</h3>
-<p>這些函式可存取 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的瀏覽記錄,為建構「停止」、「上一頁」、「下一頁」、「重新載入」等按鈕所必備。</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.reload" title="/en-US/docs/Web/API/HTMLIFrameElement.reload"><code>reload()</code></a>:重新載入 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的內容。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.stop" title="/en-US/docs/Web/API/HTMLIFrameElement.stop"><code>stop()</code></a>:停止載入 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的內容。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getCanGoBack" title="/en-US/docs/Web/API/HTMLIFrameElement.getCanGoBack"><code>getCanGoBack()</code></a>:得知是否能存取上一頁。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.goBack" title="/en-US/docs/Web/API/HTMLIFrameElement.goBack"><code>goBack()</code></a>:針對瀏覽記錄中的上個位置,更改 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的位置。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getCanGoForward" title="/en-US/docs/Web/API/HTMLIFrameElement.getCanGoForward"><code>getCanGoForward()</code></a>:得知是否能存取下一頁。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.goForward" title="/en-US/docs/Web/API/HTMLIFrameElement.goForward"><code>goForward()</code></a>:針對瀏覽記錄中的下個位置,更改 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的位置。</li>
-</ul>
-<h3 id="效能函式">效能函式</h3>
-<p>這些函式可管理瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 所使用的資源。特別適於建構分頁式瀏覽器的應用。</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.setVisible" title="/en-US/docs/Web/API/HTMLIFrameElement.setVisible"><code>setVisible()</code></a>:更改瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的顯示狀態。如此可能影響資源分配與某些函式 (如 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame" title="/en-US/docs/Web/API/window.requestAnimationFrame"><code>requestAnimationFrame</code></a>)。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getVisible" title="/en-US/docs/Web/API/HTMLIFrameElement.getVisible"><code>getVisible()</code></a>:得知瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 目前的顯示狀態。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.purgeHistory" title="/en-US/docs/Web/API/HTMLIFrameElement.purgeHistory"><code>purgeHistory()</code></a>:清除瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的所有相關資源 (cookies、localStorage、快取等)。</li>
-</ul>
-<h3 id="事件函式">事件函式</h3>
-<p>為了管理瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的內容,另新增了許多新事件 (如下所示)。下列函式即用以處理這些事件:</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 現已支援 <a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget" title="/en-US/docs/Web/API/EventTarget"><code>EventTarget</code></a> 介面的函式:<a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener" title="/en-US/docs/Web/API/EventTarget.addEventListener"><code>addEventListener()</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener" title="/en-US/docs/Web/API/EventTarget.removeEventListener"><code>removeEventListener()</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent" title="/en-US/docs/Web/API/EventTarget.dispatchEvent"><code>dispatchEvent()</code></a>。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sendMouseEvent" title="/en-US/docs/Web/API/HTMLIFrameElement.sendMouseEvent"><code>sendMouseEvent()</code></a>:傳送 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent" title="/en-US/docs/Web/API/MouseEvent"><code>MouseEvent</code></a> 至 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的內容。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sendTouchEvent" title="/en-US/docs/Web/API/HTMLIFrameElement.sendTouchEvent"><code>sendTouchEvent()</code></a>:傳送 <a href="https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent" title="/en-US/docs/Web/API/TouchEvent"><code>TouchEvent</code></a> 至 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的內容。另請注意此函式僅能用於觸控式裝置。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.addNextPaintListener" title="/en-US/docs/Web/API/HTMLIFrameElement.addNextPaintListener"><code>addNextPaintListener()</code></a>:定義處理器 (Handler) 以監聽瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中的下一個 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/MozAfterPaint" title="/en-US/docs/Web/Reference/Events/MozAfterPaint">MozAfterPaint</a> 事件。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.removeNextPaintListener" title="/en-US/docs/Web/API/HTMLIFrameElement.removeNextPaintListener"><code>removeNextPaintListener()</code></a>:移除先前以 <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.addNextPaintListener" title="/en-US/docs/Web/API/HTMLIFrameElement.addNextPaintListener"><code>addNextPaintListener()</code></a><code> 所設定的處理器。</code></li>
-</ul>
-<h3 id="其他函式_2">其他函式</h3>
-<p>這些函式適於使用瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的 Apps。</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getScreenshot" title="/en-US/docs/Web/API/HTMLIFrameElement.getScreenshot"><code>getScreenshot()</code></a>:針對瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的內容進行截圖。特別適合在分頁式瀏覽器 Apps 中取得分頁的圖示。</li>
-</ul>
-<h2 id="事件">事件</h2>
-<p>若要讓 Apps 管理瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a>,則該 Apps 將監聽瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中發生的新事件。監聽的新事件如下:</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowserasyncscroll" title="/en-US/docs/Web/Reference/Events/mozbrowserasyncscroll">mozbrowserasyncscroll</a>:瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中的捲動位置改變,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowserclose" title="/en-US/docs/Web/Reference/Events/mozbrowserclose">mozbrowserclose</a>:在瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.close" title="/en-US/docs/Web/API/window.close"><code>window.close()</code></a>,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowsercontextmenu" title="/en-US/docs/Web/Reference/Events/mozbrowsercontextmenu">mozbrowsercontextmenu</a>:瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 嘗試開啟右鍵選單,隨即送出此函式。此函式將處理瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 內容中的可用 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menuitem"><code>&lt;menuitem&gt;</code></a> 元素。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowsererror" title="/en-US/docs/Web/Reference/Events/mozbrowsererror">mozbrowsererror</a>:在瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中載入內容而發生錯誤時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowsericonchange" title="/en-US/docs/Web/Reference/Events/mozbrowsericonchange">mozbrowsericonchange</a>:瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的網站圖示變更時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowserloadend" title="/en-US/docs/Web/Reference/Events/mozbrowserloadend">mozbrowserloadend</a>:瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 完成載入所有的外部檔案 (Assets) 時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowserloadstart" title="/en-US/docs/Web/Reference/Events/mozbrowserloadstart">mozbrowserloadstart</a>:瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 開始載入新頁面時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowserlocationchange" title="/en-US/docs/Web/Reference/Events/mozbrowserlocationchange">mozbrowserlocationchange</a>:瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 的位置改變時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowseropenwindow" title="/en-US/docs/Web/Reference/Events/mozbrowseropenwindow">mozbrowseropenwindow</a>:在瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.open" title="/en-US/docs/Web/API/window.open"><code>window.open()</code></a> 時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowsersecuritychange" title="/en-US/docs/Web/Reference/Events/mozbrowsersecuritychange">mozbrowsersecuritychange</a>:在瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中變更 SSL 狀態時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowsershowmodalprompt" title="/en-US/docs/Web/Reference/Events/mozbrowsershowmodalprompt">mozbrowsershowmodalprompt</a>:在瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.alert" title="/en-US/docs/Web/API/window.alert"><code>alert()</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/window.confirm" title="/en-US/docs/Web/API/window.confirm"><code>confirm()</code></a>,或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.prompt" title="/en-US/docs/Web/API/window.prompt"><code>prompt()</code></a><code> 時</code>,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowsertitlechange" title="/en-US/docs/Web/Reference/Events/mozbrowsertitlechange">mozbrowsertitlechange</a>:在瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> 中變更 document.title 時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowserusernameandpasswordrequired" title="/en-US/docs/Web/Reference/Events/mozbrowserusernameandpasswordrequired">mozbrowserusernameandpasswordrequired</a>:請求 HTTP 的認證 (Authentification) 時,隨即送出此函式。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/mozbrowseropensearch" title="/en-US/docs/Web/Reference/Events/mozbrowseropensearch">mozbrowseropensearch</a>:只要發現搜尋引擎的鏈結,隨即送出此函式。</li>
-</ul>
-<h2 id="範例">範例</h2>
-<p>此範例可建構最基本的瀏覽器 Apps。</p>
-<h3 id="HTML">HTML</h3>
-<p>在 HTML 中,我們只要新增 1 組 URL 位址列、1個「Go」與「Stop」按鈕、1 組瀏覽器 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a>。</p>
-<pre class="brush: html">&lt;header&gt;
- &lt;input id="url"&gt;
- &lt;button id="go"&gt;Go&lt;/button&gt;
- &lt;button id="stop"&gt;Stop&lt;/button&gt;
-&lt;/header&gt;
-
-&lt;iframe src="about:blank" mozbrowser remote&gt;&lt;/iframe&gt;
-</pre>
-<h3 id="CSS">CSS</h3>
-<p>變個小小的 CSS 戲法,即可切換按鈕為「Go」與「Stop」。</p>
-<pre class="brush: css">button:disabled {
- display: none;
-}</pre>
-<h3 id="JavaScript">JavaScript</h3>
-<p>現在可加進必要的功能:</p>
-<pre class="brush: js">document.addEventListener("DOMContentLoaded", function () {
-  var url  = document.getElementById("url");
-  var go   = document.getElementById("go");
-  var stop = document.getElementById("stop");
-
-  var browser = document.getElementsByTagName("iframe")[0];
-
- // This function is used to switch the Go and Stop button
- // If the browser is loading content, "Go" is disabled and "Stop" is enabled
- // Otherwise, "Go" is enabled and "Stop" is disabled
-  function uiLoading(isLoading) {
-      go.disabled =  isLoading;
-    stop.disabled = !isLoading;
-  }
-
-  go.addEventListener("touchend", function () {
-    browser.setAttribute("src", url.value);
-  });
-
-  stop.addEventListener("touchend", function () {
-    browser.stop();
-  });
-
- // When the browser starts loading content, we switch the "Go" and "Stop" buttons
-  browser.addEventListener('mozbrowserloadstart', function () {
-    uiLoading(true);
-  });
-
- // When the browser finishes loading content, we switch back the "Go" and "Stop" buttons
-  browser.addEventListener('mozbrowserloadend', function () {
-    uiLoading(false);
-  });
-
- // In case of error, we also switch back the "Go" and "Stop" buttons
-  browser.addEventListener('mozbrowsererror', function (event) {
-    uiLoading(false);
-    alert("Loading error: " + event.detail);
-  });
-
- // When a user follows a link, we make sure the new location is displayed in the address bar
-  browser.addEventListener('mozbrowserlocationchange', function (event) {
-    url.value = event.detail;
-  });
-});</pre>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{HTMLElement("iframe")}}</li>
- <li>{{domxref("HTMLIFrameElement")}}</li>
- <li><a href="https://wiki.mozilla.org/WebAPI/BrowserAPI" title="https://wiki.mozilla.org/WebAPI/BrowserAPI">WikiMo 上的建構作業</a>統計資訊</li>
-</ul>
diff --git a/files/zh-tw/mozilla/gecko/chrome/api/index.html b/files/zh-tw/mozilla/gecko/chrome/api/index.html
deleted file mode 100644
index 7c32384981..0000000000
--- a/files/zh-tw/mozilla/gecko/chrome/api/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Chrome-only API reference
-slug: Mozilla/Gecko/Chrome/API
-translation_of: Mozilla/Gecko/Chrome/API
----
-<div>{{FirefoxSidebar}}</div>
-
-<p class="summary">此頁面列出了僅能在 Gecko Chrome 中執行的 APIs(and sometimes in other privileged circumstances.)。</p>
-
-<div class="note">
-<p><strong>Note</strong>: Most of the APIs exposed to the Web in general are also usable in Chrome code: see <a href="/en-US/docs/Web/API">Web APIs</a> for a list of these.</p>
-</div>
-
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/mozilla/gecko/chrome/index.html b/files/zh-tw/mozilla/gecko/chrome/index.html
deleted file mode 100644
index 5701f56b12..0000000000
--- a/files/zh-tw/mozilla/gecko/chrome/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Gecko Chrome
-slug: Mozilla/Gecko/Chrome
-tags:
- - Chrome
- - Gecko
- - Mozilla
- - Overview
-translation_of: Mozilla/Gecko/Chrome
----
-<div>{{FirefoxSidebar}}</div>
-
-<p class="summary">此頁面包含了於 Gecko 中執行 Chrome 程式碼的相關資訊。</p>
-
-<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/zh-tw/mozilla/gecko/index.html b/files/zh-tw/mozilla/gecko/index.html
deleted file mode 100644
index ce55ea402f..0000000000
--- a/files/zh-tw/mozilla/gecko/index.html
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Gecko
-slug: Mozilla/Gecko
-translation_of: Mozilla/Gecko
----
-<div class="summary">
-<p><span style="line-height: 1.5;">Gecko是一個排版引擎,一開始叫做NGLayout</span><span style="line-height: 1.5;">,屬於Mozilla專案</span><span style="line-height: 1.5;">。Gecko的功能就是讀取網頁內容,如 </span><a href="/zh-TW/docs/HTML" style="line-height: 1.5;" title="HTML">HTML</a><span style="line-height: 1.5;">, </span><a href="/zh-TW/docs/CSS" style="line-height: 1.5;" title="CSS">CSS</a><span style="line-height: 1.5;">, </span><a href="/zh-TW/docs/XUL" style="line-height: 1.5;" title="XUL">XUL</a><span style="line-height: 1.5;">, </span><a href="/zh-TW/docs/JavaScript" style="line-height: 1.5;" title="JavaScript">JavaScript</a><span style="line-height: 1.5;">,然後解析將內容顯示在螢幕上或印出來,在以XUL為基礎的應用程式中,Gecko也是用來解析生成應用程式的UI介面。</span></p>
-</div>
-
-<p>許多應用程式中都有使用到Gecko,包括一些瀏覽器,如Firefox, SeaMonkey等等 (完整列表請參考<a class="external" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29#Web_browsers" rel="external" title="http://en.wikipedia.org/wiki/Gecko_(layout_engine)#Web_browsers">維基百科Gecko的文章</a>.) 。使用相同版本Gecko的程式對於標準都有著相同的支援。</p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="文件">文件</h2>
-
- <dl>
- <dt><a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Gecko/Chrome">Chrome</a></dt>
- <dd>
- <p>這個頁面包含 Gecko 運行 Chrome 專有程式碼的訊息。</p>
- </dd>
- </dl>
-
- <dl>
- <dt><a href="/zh-TW/docs/Gecko_FAQ" title="Gecko_FAQ">Gecko FAQ</a></dt>
- <dd>常見問題</dd>
- <dt><a href="/zh-TW/docs/Gecko_DOM_Reference" title="https://developer.mozilla.org/zh-TW/docs/Gecko_DOM_Reference">Gecko DOM 參考</a></dt>
- <dd>DOM參考文件</dd>
- <dt><a href="/zh-TW/docs/Gecko-Specific_DOM_Events" title="Gecko/Gecko event reference">Gecko 事件參考</a></dt>
- <dd>Gecko和Mozilla程式內各項事件的參考文件;對於網頁標準的DOM事件,請參考 <a href="/zh-TW/docs/DOM/DOM_event_reference" title="DOM/DOM event reference">DOM event reference</a>.</dd>
- <dt><a href="/zh-TW/docs/Gecko/Versions" title="Gecko/Versions">Gecko 版本和對應的應用程式</a></dt>
- <dd>Geck版本和各應用程式所用的Gecko版本列表</dd>
- <dt><a class="external" href="/zh-TW/docs/Introduction_to_Layout_in_Mozilla" title="https://developer.mozilla.org/zh-TW/docs/Introduction_to_Layout_in_Mozilla">Mozilla 的排版介紹</a></dt>
- <dd>排版相關的技術探討</dd>
- <dt><a href="/zh-TW/docs/Embedding_Mozilla" title="Embedding_Mozilla">應用 Mozilla</a></dt>
- <dd>在你自己的應用程式中使用Gecko</dd>
- <dt><a href="/zh-TW/docs/Character_Sets_Supported_by_Gecko" title="Character Sets Supported by Gecko">Gecko支援的字符集</a></dt>
- <dd>Gecko支援的字符集列表</dd>
- <dt><a href="/zh-TW/docs/Gecko/HTML_parser_threading" title="Gecko/HTML_parser_threading">HTML 解析器運作</a></dt>
- <dd>HTML解析器相關的執行緒探討</dd>
- <dt>{{interwiki('wikimo', 'Gecko:Home_Page', 'Gecko Homepage on MozillaWiki')}}</dt>
- <dd>使用者、產品規劃圖和最新資源的入口首頁</dd>
- </dl>
-
- <p><span class="alllinks"><a href="/zh-TW/docs/tag/Gecko" title="tag/Gecko">全部...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="社群">社群</h2>
-
- <ul>
- <li>View Mozilla forums... {{DiscussionList("dev-tech-layout", "mozilla.dev.tech.layout")}}</li>
- </ul>
-
- <h2 class="Related_Topics" id="相關主題">相關主題</h2>
-
- <dl>
- <dd><a href="/zh-TW/docs/Web_Standards" title="Web_Standards">Web Standards</a>, <a href="/zh-TW/docs/XUL" title="XUL">XUL</a>, <a href="/zh-TW/docs/Embedding_Mozilla" title="Embedding_Mozilla">Embedding Mozilla</a>, <a href="/zh-TW/docs/Developer_Guide" title="Developing_Mozilla">Developing Mozilla</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/mozilla/infallible_memory_allocation/index.html b/files/zh-tw/mozilla/infallible_memory_allocation/index.html
deleted file mode 100644
index 06844eedd5..0000000000
--- a/files/zh-tw/mozilla/infallible_memory_allocation/index.html
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: 絕對可靠的記憶體配置
-slug: Mozilla/Infallible_memory_allocation
-tags:
- - 分配
- - 記憶體
-translation_of: Mozilla/Infallible_memory_allocation
----
-<div>{{gecko_minversion_header("2.0")}}</div>
-
-<p>There's ongoing work to implement <strong>infallible memory allocators</strong>. These are memory allocation routines that never return <code>null</code>; that is, they always successfully return the requested block of memory. This is in contrast to a traditional, fallible memory allocator that can return <code>null</code> indicating that the request failed.</p>
-
-<p>Currently, while code is transitioned to be compatible with infallible memory allocators, you have to explicitly decide whether to use infallible allocation or not. Eventually, however, the generic memory allocators (<code>malloc() </code>and<code> realloc()</code>) will become infallible.</p>
-
-<h2 id="記憶體配置要怎樣才能萬無一失?"><a id="How can memory allocation be infallible" name="How can memory allocation be infallible"></a>記憶體配置要怎樣才能萬無一失?</h2>
-
-<p>「萬無一失」這個詞代表了配置記憶體時絕對會成功:你的程式碼永遠不會看到請求失敗,也就無須對失敗的情況做出處置。</p>
-
-<p>平常在配置記憶體時,情況則不太一樣。在有限記憶體的狀況下,記憶體配置是有可能失敗的。然而,在平常配置失敗的程序中程式將不會返回到你的程式碼中,而是直接停止程式。不過這情況可能有點少見,因為記憶體管理系統通常都會為你要求的記憶體想盡辦法找到空間。</p>
-
-<h2 id="選擇記憶體分配器">選擇記憶體分配器</h2>
-
-<p>當你在寫需要配置記憶體的程式時,可能需要遵守幾個規則以便幫助你決定是否在分配器使用萬無一失的策略:</p>
-
-<ul>
- <li>如果你可能需要分配大塊記憶體時,你就應該讓他可能出錯(像是使用 <code>moz_malloc()</code> ,並確保返回的結果不會是 <code>null</code>。就如在 <a href="#How can memory allocation be infallible">記憶體配置要怎樣才能萬無一失?</a> 一段中所述,在有限的記憶體中要求大塊記憶體時,分配器會找不到你所要求的記憶體,因此程式會直接停止。</li>
- <li>如果你不確定記憶體是否會很大塊,就使用標準的 <code>malloc()</code> 來動作,它目前是可能出錯的,但最後可能會變成萬無一失,請確認 <code>null</code> 的結果。</li>
- <li>在實例物件時,<code>new</code> 這個運算元預設會萬無一失地創造他們。如果你想要讓他們有機會出錯的話,就使用 <code>new (fallible) Foo()</code> 這個語法。</li>
- <li>在有疑慮的時候,使用萬無一失分配器,且不要確認 <code>null</code> 的情況。</li>
- <li>
- <p><code>NS_Alloc()</code> 也是萬無一失的。</p>
- </li>
-</ul>
-
-<h2 id="明示的萬無一失記憶體分配器">明示的萬無一失記憶體分配器</h2>
-
-<p>下面的記憶體分配器都明確地標示出他們是萬無一失的,並且會一直保持下去。他們保證會回傳可用的記憶體指標:</p>
-
-<pre>p = moz_xmalloc();
-p = moz_xrealloc();
-</pre>
-
-<pre>f = new Foo();
-fArray = new Foo[];
-</pre>
-
-<pre>n = ::operator new(...);
-nArray = ::operator new[](...);
-</pre>
-
-<h2 id="Explicitly_fallible_memory_allocators">Explicitly fallible memory allocators</h2>
-
-<p>These memory allocators are explicitly fallible, and will remain so. When using these, you must check to ensure the resulting value isn't <code>null</code> before attempting to use the returned memory.</p>
-
-<pre>p = moz_malloc();
-p = moz_realloc();
-</pre>
-
-<pre>namespace mozilla {
- f = new (fallible) Foo();
- fArray = new (fallible) Foo[];
-}
-</pre>
-
-<pre>namespace mozilla {
- n = ::operator new(..., fallible);
- nArray = ::operator new[](..., fallible);
-}
-</pre>
-
-<h2 id="最終萬無一失分配器">最終萬無一失分配器</h2>
-
-<p>下面的記憶體目前是可能出錯的,但在未來將會變成萬無一失的:</p>
-
-<pre>p = malloc();
-p = realloc();
-</pre>
-
-<h2 id="你也可以參看">你也可以參看</h2>
-
-<ul>
- <li><a href="/en-US/docs/Choosing_the_right_memory_allocator" title="Choosing the right memory allocator">選擇正確的記憶體分配器</a></li>
- <li><a href="/en-US/docs/NS_Alloc" title="NS Alloc"><code>NS_Alloc()</code></a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/introduction_to_layout_in_mozilla/index.html b/files/zh-tw/mozilla/introduction_to_layout_in_mozilla/index.html
deleted file mode 100644
index 0c0c5388db..0000000000
--- a/files/zh-tw/mozilla/introduction_to_layout_in_mozilla/index.html
+++ /dev/null
@@ -1,358 +0,0 @@
----
-title: Introduction to Layout in Mozilla
-slug: Mozilla/Introduction_to_Layout_in_Mozilla
-translation_of: Mozilla/Introduction_to_Layout_in_Mozilla
----
-<h2 id="Overview" name="Overview"><font><font>概要</font></font></h2>
-
-<ul>
- <li><font><font>基本數據流</font></font></li>
- <li><font><font>關鍵數據結構</font></font></li>
- <li><font><font>詳細執行步驟</font></font></li>
- <li><font><font>漸進模式</font></font></li>
- <li><font><font>未來高科技會談</font></font></li>
- <li><font><font>總結起來,Q&A</font></font></li>
-</ul>
-
-<h2 id="Basic_Data_Flow" name="Basic_Data_Flow"><font><font>基本數據流</font></font></h2>
-
-<ul>
- <li><font><font>通過網絡APIs 獲取源文檔</font></font></li>
- <li><font><font>在單線程佈局引擎中依次執行下面步驟:</font></font>
- <ul>
- <li><font><font>解析,計算樣式,渲染,重複</font></font></li>
- <li><font><font>CSS 用於渲染所有的內容</font></font></li>
- </ul>
- </li>
- <li><font><font>理論上, 內容與“展示“是相分離的</font></font></li>
-</ul>
-
-<p><img src="/files/464/Gecko_Overview_9.png" style="height: 316px; width: 688px;"></p>
-
-<h2 id="Key_Data_Structures" name="Key_Data_Structures"><font><font>關鍵數據結構</font></font></h2>
-
-<p><img src="/files/454/Gecko_Overview_10.png" style="height: 122px; width: 638px;"></p>
-
-<ul>
- <li><font><font>內容節點</font></font>
-
- <ul>
- <li><font><font>元素,屬性</font></font></li>
- <li><font><font>判決</font></font></li>
- </ul>
- </li>
- <li><font><font>框架(Frame)</font></font>
- <ul>
- <li><font><font>矩形格式</font></font></li>
- <li><font><font>幾何信息</font></font></li>
- <li><font><font>{{mediawiki.external('0..n')}} 每個內容節點</font></font></li>
- <li><font><font>第二通第n個是“延續”</font></font></li>
- </ul>
- </li>
- <li><font><font>樣式上下文Style context</font></font>
- <ul>
- <li><font><font>非幾何信息</font></font></li>
- <li><font><font>可由相鄰幀共享</font></font></li>
- <li><font><font>引用計數,一幀資</font></font></li>
- </ul>
- </li>
- <li><font><font>視圖(View)</font></font>
- <ul>
- <li><font><font>裁剪、z 軸順序、透明度</font></font></li>
- <li><font><font>{{mediawiki.external('0..1')}} 僅與一個框架 frame 對應, 從屬於框架</font></font></li>
- </ul>
- </li>
- <li><font><font>小工具(</font></font>Widget<font><font>)</font></font>
- <ul>
- <li><font><font>本地窗口</font></font></li>
- <li><font><font>{{mediawiki.external('0..1')}} 僅與一個視圖對應,從屬於視圖 view</font></font></li>
- </ul>
- </li>
-</ul>
-
-<p><img src="/files/455/Gecko_Overview_15.png" style="height: 397px; width: 680px;"></p>
-
-<h2 id="Key_Data_Structures_2" name="Key_Data_Structures_2"><font><font>關鍵數據結構</font></font></h2>
-
-<ul>
- <li><em><font><font>document</font></font></em><font><font> 物件中包含內容模型,以及一個或多個 </font></font><em><font><font>presentations</font></font></em>
-
- <ul>
- <li><font><font>通過 DOM API 以編程方式暴露在外</font></font></li>
- </ul>
- </li>
- <li><em><font><font>presentation</font></font></em><font><font> 包含框架層級關係</font></font>
- <ul>
- <li><font><font>框架包含風格背景,觀點,窗口小部件</font></font></li>
- <li><font><font>演示包含的媒體類型、尺寸等</font></font></li>
- <li><font><font>可能不會直接操控</font></font></li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Detailed_Walk-Through" name="Detailed_Walk-Through"><font><font>詳細執行步驟</font></font></h2>
-
-<ul>
- <li><font><font>設置</font></font></li>
- <li><font><font>內容模型的構建</font></font></li>
- <li><font><font>框架 Frame 的構建</font></font></li>
- <li><font><font>樣式 Style 的決議</font></font></li>
- <li><font><font>回流(</font></font>{{Glossary("reflow")}}<font><font>)</font></font></li>
- <li><font><font>繪製(</font></font>Painting<font><font>)</font></font></li>
-</ul>
-
-<h2 id="Setting_Up" name="Setting_Up"><font><font>設置</font></font></h2>
-
-<ul>
- <li><font><font>假設此處您已經熟悉嵌入和網路 API(doc shell、stream)的基本知識。</font></font></li>
- <li><font><font>Content DLL 自動註冊一個<em>文件載入工廠(</em></font></font><em><font><font>DLF)</font></font></em>
- <ul>
- <li><code>@mozilla.org/content-viewer-factory/view;1?type=text/html</code></li>
- <li><font><font>所有 MIME type 都與同一個類——nsContentDLF 相對應</font></font></li>
- </ul>
- </li>
- <li><code><font><font>nsDocShell</font></font></code>
- <ul>
- <li><font><font>通過 </font></font><code><font><font>nsDSURIContentListener</font></font></code><font><font> 接收穫取的內容(原始數據)</font></font></li>
- <li><font><font>呼叫 </font></font><code><font><font>nsIDLF::CreateInstance</font></font></code><font><font> 方法,傳遞 MIME type 給 DLF</font></font></li>
- </ul>
- </li>
- <li><font><font>nsContentDLF</font></font>
- <ul>
- <li><font><font>建立一個 </font></font><code><font><font>nsHTMLDocument</font></font></code><font><font> 物件,呼叫 </font></font><code><font><font>StartDocumentLoad</font></font></code>
- <ul>
- <li><font><font>建立一個解析器(parser),將 </font></font><code><font><font>nsIStreamListener</font></font></code><font><font> 物件返回給 docshell</font></font></li>
- <li><font><font>創建一個 content sink(它會將解析器 parser 與文件 doucment 相連接)</font></font></li>
- </ul>
- </li>
- <li><font><font>創建一個 </font></font><code><font><font>DocumentViewerImpl</font></font></code><font><font> 對象,將 </font></font><code><font><font>nsIContentViewer</font></font></code><font><font> 對象返回給 docshell</font></font></li>
- </ul>
- </li>
- <li><code><font><font>DocumentViewerImpl</font></font></code><font><font> 創建 pres context 和 pres shell</font></font></li>
-</ul>
-
-<p><img src="/files/456/Gecko_Overview_19.png" style="height: 350px; width: 663px;"></p>
-
-<h2 id="Content_Model_Construction" name="Content_Model_Construction"><font><font>內容模型的構建</font></font></h2>
-
-<ul>
- <li><font><font>從網絡上通過 </font></font><code><font><font>nsIStreamListener::OnDataAvailable</font></font></code><font><font> 獲取內容</font></font></li>
- <li><font><font>解析器對內容進行標記&amp;處理;使用 </font></font><em><font><font>parser node</font></font></em><font><font> 對像在</font></font><code><font><font> nsIContentSink</font></font></code><font><font> 上調用方法</font></font>
- <ul>
- <li><font><font>一些緩衝和修正發生在這裡</font></font></li>
- <li><font><code><font>OpenContainer,CloseContainer,AddLeaf</font></code></font></li>
- </ul>
- </li>
- <li><font><font>內容水槽創建並使用附加內容節點 </font></font><code><font><font>nsIContent</font></font></code><font><font> 接口</font></font>
- <ul>
- <li><font><font>內容水槽保持棧的“活”元素</font></font></li>
- <li><font><font>更多緩衝和修正發生在這裡</font></font></li>
- <li><font><code><font>InsertChildAt,AppendChildTo,RemoveChildAt</font></code></font></li>
- </ul>
- </li>
-</ul>
-
-<p><img src="/files/457/Gecko_Overview_21.png" style="height: 179px; width: 662px;"></p>
-
-<h2 id="Frame_Construction" name="Frame_Construction"><font><font>框架 Frame 的構建</font></font></h2>
-
-<ul>
- <li><font><font>內容接收器使用 </font></font><code><font><font>nsIDocument</font></font></code><font><font>接口,在內容模型通知ΔS的</font></font>
-
- <ul>
- <li><font><code><font>ContentAppended,ContentInserted,ContentRemoved</font></code></font></li>
- </ul>
- </li>
- <li><code><font><font>PresShell</font></font></code><font><font> 被註冊作為文件觀察者</font></font>
- <ul>
- <li><font><font>接收 </font></font><code><font><font>ContentAppended</font></font></code><font><font> 等通知</font></font></li>
- <li><font><font>它傳遞給樣式集的對象,誰又將傳遞給幀構造</font></font></li>
- </ul>
- </li>
- <li><font><font>框架構造函數創建幀</font></font>
- <ul>
- <li><code><font><font>ConstructFrameInternal</font></font></code><font><font> 遞歸散步內容樹,解決作風和創建幀</font></font></li>
- <li><font><font>或者通過標籤創建</font></font><code><font><font>(</font></font>&lt;select&gt;<font><font>)</font></font></code><font><font>或顯示類型</font><font>(</font></font><code>&lt;p&gt;</code><font><font>)</font></font></li>
- </ul>
- </li>
- <li><font><font>幀管理者保持映射從內容到框架</font></font></li>
-</ul>
-
-<p><img src="/files/458/Gecko_Overview_23.png" style="height: 359px; width: 697px;"></p>
-
-<h2 id="Style_Resolution" name="Style_Resolution"><font><font>Style 選定</font></font></h2>
-
-<ul>
- <li><font><font>計算依據適用於框架的內容節點樣式規則文體信息</font></font></li>
- <li><font><font>分成不同的結構樣式數據</font></font>
- <ul>
- <li><font><font>顯示,能見度,字體,顏色,背景,...</font></font></li>
- <li><font><font>繼承與復位</font></font></li>
- </ul>
- </li>
- <li><font><font>樣式上下文對象是一個佔位符部分計算文體數據</font></font>
- <ul>
- <li><font><font>樣式數據懶洋洋地計算,因為它要求</font></font></li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Reflow" name="Reflow"><font><font>回流</font></font></h2>
-
-<ul>
- <li><font><font>遞歸計算幾何</font><em><font>(</font></em></font><em>x</em>,<em>y</em>,<em>w</em>,<em>h</em><font><em><font>)</font></em><em><font>為框架,視圖和小部件</font></em></font>
-
- <ul>
- <li><font><font>鑑於“根幀”計算(</font></font><em>x</em>,<em>y</em>,<em>w</em>,<em>h</em><font><em><font>)為所有兒童</font></em></font></li>
- <li><font><font>通過約束傳播“向下</font></font><code><font><font>”nsHTMLReflowState</font></font></code></li>
- <li><font><font>所需的大小返回“向上”通過</font></font><code><font><font>nsHTMLReflowMetrics</font></font></code></li>
- </ul>
- </li>
- <li><font><font>基本模式</font></font>
- <ul>
- <li><font><font>父框架初始化子回流狀態(可</font><em><font>W¯¯,^ </font></em><font>h); </font><font>地方子幀</font><font>(x,ÿ); </font><font>調用孩子的</font><code><font>回流</font></code><font>方法</font></font></li>
- <li><font><font>子幀計算所需的</font><em><font>(W¯¯,^</font></em><font> </font><em><font>h),通過回流焊指標回報</font></em></font></li>
- <li><font><font>家長外形尺寸為子框架和觀點的基礎上孩子的指標</font></font></li>
- </ul>
- </li>
- <li><font><font>注:很多</font></font><em><font><font>並不</font></font></em><font><font>這樣工作!</font><font>(表,塊,XUL盒)</font></font></li>
-</ul>
-
-<h2 id="Reflow_2" name="Reflow_2"><font><font>回流</font></font></h2>
-
-<ul>
- <li><font><font>“環球”回流</font></font>
-
- <ul>
- <li><em><font><font>最初,調整大小,風格變化</font></font></em></li>
- <li><font><font>通過立即處理</font></font><code><font><font>PresShell</font></font></code><font><font>方法</font></font></li>
- </ul>
- </li>
- <li><font><font>增量回流</font></font>
- <ul>
- <li><font><font>針對特定的幀</font></font></li>
- <li><em><font><font>臟</font></font></em><font><font>,</font></font><em><font><font>內容改變</font></font></em><font><font>,</font></font><em><font><font>風格改變了</font></font></em><font><font>,</font></font><em><font><font>用戶自定義</font></font></em></li>
- <li><code><font><font>nsHTMLReflowCommand</font></font></code><font><font>對象封裝信息</font></font></li>
- <li><font><font>排隊和異步處理</font></font><code><font><font>,nsIPressShell </font><font>:: </font></font></code><code><font><font>AppendReflowCommand,ProcessReflowCommands</font></font></code></li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Incremental_Reflow" name="Incremental_Reflow"><font><font>增量回流</font></font></h2>
-
-<p><img src="/files/459/Gecko_Overview_28.png" style="height: 331px; width: 319px;"></p>
-
-<ul>
- <li><font><font>遞歸下降到目標</font></font><em><font><font>恢復回流狀態</font></font></em>
-
- <ul>
- <li><font><font>兒童rs.reason設置為</font></font><em><font><font>增量</font></font></em></li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Incremental_Reflow_2" name="Incremental_Reflow_2"><font><font>增量回流</font></font></h2>
-
-<p><img src="/files/460/Gecko_Overview_29.png" style="height: 331px; width: 319px;"></p>
-
-<ul>
- <li><font><font>流程回流“正常”的目標框架</font></font>
-
- <ul>
- <li><font><font>兒童rs.reason一套基於RC的</font></font><em><font><font>類型</font></font></em></li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Incremental_Reflow_3" name="Incremental_Reflow_3"><font><font>增量回流</font></font></h2>
-
-<p><img src="/files/461/Gecko_Overview_30.png" style="height: 332px; width: 319px;"></p>
-
-<ul>
- <li><em><font><font>傳播損害</font></font></em><font><font>到“在流動”幀之後</font></font></li>
-</ul>
-
-<h2 id="Incremental_Reflow_4" name="Incremental_Reflow_4"><font><font>增量回流</font></font></h2>
-
-<p><img src="/files/462/Gecko_Overview_31.png" style="height: 331px; width: 319px;"></p>
-
-<ul>
- <li><font><font>多次回流焊命令批處理</font></font>
-
- <ul>
- <li><code><font><font>nsReflowPath</font></font></code><font><font>維持目標幀的一棵樹</font></font></li>
- <li><font><font>攤銷狀態的恢復和損傷擴展成本</font></font></li>
- </ul>
- </li>
-</ul>
-
-<h2 id="Painting" name="Painting"><font><font>繪畫</font></font></h2>
-
-<ul>
- <li><font><font>當回流繼續通過幀層次結構,區域</font></font><em><font><font>無效</font></font></em><font><font>通過</font></font><code><font><font>nsIViewManager ::更新視圖</font></font></code></li>
- <li><font><font>除非</font></font><em><font><font>直接</font></font></em><font><font>的,無效的區域合併,並通過操作系統的異步處理</font></font><em><font><font>揭露</font></font></em><font><font>事件</font></font></li>
- <li><font><font>本機暴露事件分派到小部件; </font><font>小部件委託給視圖管理器</font></font></li>
- <li><font><font>查看經理描繪的意見後到前,調用</font></font><code><font><font>PresShell</font></font></code><font><font>的</font></font><code><font><font>畫圖</font></font></code><font><font>方法</font></font></li>
- <li><code><font><font>PresShell ::油漆</font></font></code><font><font>遍歷從視圖幀; </font><font>將調用</font></font><code><font><font>nsIFrame ::油漆</font></font></code><font><font>每個</font></font><em><font><font>層</font></font></em></li>
-</ul>
-
-<h2 id="Incrementalism" name="Incrementalism"><font><font>漸進</font></font></h2>
-
-<ul>
- <li><font><font>單線程</font></font>
-
- <ul>
- <li><font><font>簡單(無鎖)</font></font></li>
- <li><font><font>不能離開事件隊列無人值守</font></font></li>
- </ul>
- </li>
- <li><font><font>內容建設開卷“隨意”</font></font>
- <ul>
- <li><font><font>解析器和內容接收器做一些緩衝</font></font></li>
- <li><font><font>內容散熱器具有“通知限制”</font></font></li>
- <li><font><font>效率與響應速度的權衡</font></font></li>
- </ul>
- </li>
- <li><font><font>框架結構運行完成</font></font></li>
- <li><font><font>CSS解析運行完成</font></font></li>
- <li><font><font>回流焊運行完成(主要)</font></font></li>
- <li><font><font>繪畫運行完成</font></font></li>
-</ul>
-
-<p><img src="/files/463/Gecko_Overview_34.png" style="height: 380px; width: 694px;"></p>
-
-<h2 id="Future_.28.3F.29_Tech_Talks" name="Future_.28.3F.29_Tech_Talks"><font><font>未來(?)技術講座</font></font></h2>
-
-<ul>
- <li><font><font>內容模型和DOM - </font><em><font>JST,jkeiser</font></em></font></li>
- <li><font><font>解析器和內容接收器(ESP無效的內容) - </font></font><em><font><font>harishd</font></font></em></li>
- <li><font><font>事件- </font></font><em><font><font>薩里</font></font></em><font><font>,</font></font><em><font><font>條既納</font></font></em></li>
- <li><font><font>塊和行回流焊- </font><em><font>沃特森,dbaron</font></em></font></li>
- <li><font><font>表回流焊- </font></font><em><font><font>karnaze</font></font></em></li>
- <li><font><font>窗體控件- </font><em><font>棒,礪石</font></em></font></li>
- <li><font><font>風格解析和規則樹- </font></font><em><font><font>dbaron</font></font></em></li>
- <li><font><font>視圖,窗口小部件,和繪畫- </font></font><em><font><font>大鵬</font></font></em><font><font> </font></font><em><font><font>,kmcclusk</font></font></em></li>
- <li><font><font>編輯器- </font><em><font>健,Jfrancis</font></em></font></li>
- <li><font><font>XUL和箱的佈局- </font></font><em><font><font>休伊特</font></font></em><font><font>,</font></font><em><font><font>本</font></font></em></li>
- <li><font><font>XBL - </font></font><em><font><font>休伊特</font></font></em><font><font>,</font></font><em><font><font>本</font></font></em></li>
-</ul>
-
-<h2 id="Conclusion" name="Conclusion"><font><font>結論</font></font></h2>
-
-<ul>
- <li><font><font>數據流</font></font></li>
- <li><font><font>關鍵數據結構</font></font></li>
- <li><font><font>詳細演練</font></font></li>
- <li><font><font>漸進</font></font></li>
- <li><font><font>Q&A?</font></font></li>
-</ul>
-
-<div class="originaldocinfo">
-<h2 id="Original_Document_Information" name="Original_Document_Information"><font><font>原始文檔信息</font></font></h2>
-
-<ul>
- <li><a class="link-mailto" href="mailto:waterson@netscape.com"><font><font>作者(S):克里斯·沃特森</font></font></a></li>
- <li><font><font>最後更新日期:2002年6月10日,</font></font></li>
- <li><font><font>版權信息:此內容的部分是©1998-2008個別mozilla.org貢獻者; </font><font>|在創作共用許可的可用內容</font></font><a href="http://www.mozilla.org/foundation/licensing/website-content.html"><font><font>詳細信息</font></font></a><font><font>。</font></font></li>
-</ul>
-</div>
diff --git a/files/zh-tw/mozilla/javascript_code_modules/index.html b/files/zh-tw/mozilla/javascript_code_modules/index.html
deleted file mode 100644
index 72f737df9e..0000000000
--- a/files/zh-tw/mozilla/javascript_code_modules/index.html
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: JavaScript code modules
-slug: Mozilla/JavaScript_code_modules
-tags:
- - Add-ons
- - Extensions
- - JavaScript
- - Landing
- - Modules
- - NeedsTranslation
- - TopicStub
- - XPCOM
-translation_of: Mozilla/JavaScript_code_modules
----
-<div>{{gecko_minversion_header("1.9")}}</div>
-
-<p>JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication.</p>
-
-<h2 id="General_topics">General topics</h2>
-
-<dl style="-moz-columns: 2; columns: 2;">
- <dt><a href="/en-US/docs/JavaScript_code_modules/Using" title="./Using">Using JavaScript code modules</a></dt>
- <dd>An introduction to how to use JavaScript code modules.</dd>
- <dt><a href="/en-US/docs/Components.utils.import" title="Components.utils.import">Components.utils.import</a></dt>
- <dd>How to import a JavaScript code module.</dd>
- <dt><a href="/en-US/docs/Components.utils.unload" title="Components.utils.unload">Components.utils.unload</a> {{gecko_minversion_inline("7.0")}}</dt>
- <dd>How to unload a JavaScript code module.</dd>
- <dt><a href="/en-US/docs/Code_snippets/Modules" title="Code_snippets/Modules">Code snippets: Modules</a></dt>
- <dd>Examples of how to use code modules.</dd>
- <dt><a class="external" href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a></dt>
- <dd>This page features a list of JS modules, along with download links and documentation, that extension developers can use in their code.</dd>
-</dl>
-
-<dl>
-</dl>
-
-<h2 id="Standard_code_modules">Standard code modules</h2>
-
-<dl style="-moz-columns: 2; columns: 2;">
- <dt><a href="/en-US/docs/Addons/Add-on_Manager" title="Addons/Add-on_Manager">AddonManager.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
- <dd>Interface to install, manage, and uninstall add-ons.</dd>
- <dt><a href="/en-US/docs/Addons/Add-on_Repository" title="Addons/Add-on Repository">AddonRepository.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
- <dd>Allows searching of the add-ons repository.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Assert.jsm" title="./Assert.jsm">Assert.jsm</a> {{gecko_minversion_inline("28.0")}}</dt>
- <dd>Implements the <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1" title="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification version 1.1</a>, which provides a basic, standardized interface for performing in-code logical assertions with optional, customizable error reporting.</dd>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes" title="./ctypes.jsm">ctypes.jsm</a> {{fx_minversion_inline("3.6")}}</dt>
- <dd>Provides an interface that allows JavaScript code to call native libraries without requiring the development of an XPCOM component.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm" title="./ctypes.jsm">CustomizableUI.jsm</a> {{fx_minversion_inline("29")}}</dt>
- <dd>Allows you to interact with customizable buttons and items in Firefox's main window UI.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm" title="./DeferredTask.jsm">DeferredTask.jsm</a> {{gecko_minversion_inline("18.0")}}</dt>
- <dd>Run a task after a delay.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="./Dict.jsm">Dict.jsm</a> {{gecko_minversion_inline("5.0")}}</dt>
- <dd>Provides an API for key/value pair dictionaries.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/DownloadLastDir.jsm" title="./DownloadLastDir.jsm">DownloadLastDir.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
- <dd>Provides the path to the directory into which the last download occurred.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm" title="./Downloads.jsm">Downloads.jsm</a> {{gecko_minversion_inline("23.0")}}</dt>
- <dd>Provides a single entry point to interact with the downloading capabilities of the platform.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm" title="./FileUtils.jsm"><strong style="font-weight: bold;">FileUtils.jsm</strong></a> {{gecko_minversion_inline("1.9.2")}}</dt>
- <dd>Provides helpers for dealing with files.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">Geometry.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
- <dd>Provides routines for performing basic geometric operations on points and rectangles.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">HTTP.jsm</a> {{gecko_minversion_inline("25.0")}}</dt>
- <dd>A wrapper for XMLHttpRequest that provides convenient and simplified API for dealing with HTTP requests.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a> {{fx_minversion_inline("17.0")}}</dt>
- <dd>Abstracts the js-ctypes to provide an interface that allows JavaScript code to call code running in native JVMs.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/ISO8601DateUtils.jsm" title="./ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</a></dt>
- <dd>Provides routines to convert between JavaScript <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="JavaScript/ Reference/Global Objects/Date"><code>Date</code></a> objects and ISO 8601 date strings.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Log.jsm">Log.jsm</a> (formerly log4moz) {{gecko_minversion_inline("27.0")}}</dt>
- <dd>Provides a <a href="https://en.wikipedia.org/wiki/Log4j">log4j</a> style API for logging log messages to various endpoints, such as the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a> or a file on disk. This module was formerly</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm" title="./NetUtil.jsm"><strong style="font-weight: bold;">NetUtil.jsm</strong></a></dt>
- <dd>Provides helpful networking utility functions, including the ability to easily copy data from an input stream to an output stream asynchronously.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/openLocationLastURL.jsm" title="./openLocationLastURL.jsm">openLocationLastURL.jsm</a> {{gecko_minversion_inline("1.9.1.4")}}</dt>
- <dd>Provides access to the last URL opened using the "Open Location" option in the File menu.</dd>
- <dt><a href="/Mozilla/JavaScript_code_modules/OSFile.jsm" title="/en-US/docs/JavaScript_OS.File">OSFile.jsm</a> {{gecko_minversion_inline("16.0")}}</dt>
- <dd>Provides routines to access files. Read, write, rename, create directories, ...</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm" title="./PerfMeasurement.jsm">PerfMeasurement.jsm</a> {{fx_minversion_inline("4.0")}}</dt>
- <dd>Provides access to low-level hardware and OS performance measurement tools.</dd>
- <dt><a href="/en-US/docs/Localization_and_Plurals" title="Localization and Plurals">PluralForm.jsm</a></dt>
- <dd>Provides an easy way to get the correct plural forms for the current locale, as well as ways to localize to a specific plural rule.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PopupNotifications.jsm" title="./PopupNotifications.jsm">PopupNotifications.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
- <dd>Provides an easy way to present non-modal notifications to users.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="./Promise.jsm">Promise.jsm</a> {{gecko_minversion_inline("25.0")}}</dt>
- <dd>Implements the <a class="external" href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> proposal as known in April 2013.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PromiseWorker.jsm">PromiseWorker.jsm</a> {{gecko_minversion_inline("20.0")}}</dt>
- <dd>A version of {{domxref("ChromeWorker")}} which uses promises to return the worker's result instead of using an event to do so.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm" title="./Services.jsm">Services.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
- <dd>Provides getters for conveniently obtaining access to commonly-used services.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/source-editor.jsm" title="./source-editor.jsm">source-editor.jsm</a> {{fx_minversion_inline("11.0")}}</dt>
- <dd>The Source Editor is used by developer tools such as the Style Editor; this interface implements the editor and lets you interact with it.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm" title="./Sqlite.jsm">Sqlite.jsm</a> {{gecko_minversion_inline("20.0")}}</dt>
- <dd>A Promise-based API to {{ interface("mozIStorage") }}/SQLite.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="./Task.jsm">Task.jsm</a> {{gecko_minversion_inline("17.0")}}</dt>
- <dd>Implements a subset of <a class="external" href="http://taskjs.org/" title="http://taskjs.org/">Task.js</a> to make sequential, asynchronous operations simple, using the power of JavaScript's <code>yield</code> operator.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Timer.jsm </a>{{gecko_minversion_inline("22.0")}}</dt>
- <dd>A pure JS implementation of <code>window.setTimeout</code>.</dd>
- <dt><a href="/en-US/Add-ons/Webapps.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Webapps.jsm </a>{{gecko_minversion_inline("??.0")}}</dt>
- <dd>Provides an interface to manager Open Web Apps.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/WebRequest.jsm">WebRequest.jsm</a> {{gecko_minversion_inline("41.0")}}</dt>
- <dd>Provides an API to add event listeners for the various stages of making an HTTP request. The event listener receives detailed information about the request, and can modify or cancel the request.</dd>
- <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm" title="./XPCOMUtils.jsm">XPCOMUtils.jsm</a></dt>
- <dd>Contains utilities for JavaScript components loaded by the JS component loader.</dd>
-</dl>
diff --git a/files/zh-tw/mozilla/javascript_code_modules/promise.jsm/index.html b/files/zh-tw/mozilla/javascript_code_modules/promise.jsm/index.html
deleted file mode 100644
index fc54b6e846..0000000000
--- a/files/zh-tw/mozilla/javascript_code_modules/promise.jsm/index.html
+++ /dev/null
@@ -1,144 +0,0 @@
----
-title: Promise.jsm
-slug: Mozilla/JavaScript_code_modules/Promise.jsm
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/JavaScript_code_modules/Promise.jsm
----
-<p>{{ gecko_minversion_header("25") }}</p>
-
-<p>The <code>Promise.jsm</code> JavaScript code module implements the <a href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> proposal as known in April 2013.</p>
-
-<div class="warning">
-<p>This module was used before <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">DOM Promises</a> were made globally available in Gecko 29. Its usage is not suggested for new code.</p>
-
-<p>If you just need a Promise, consider using a <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">DOM Promise</a> instead.</p>
-
-<p>If you need a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred">Deferred</a>, because you want to create a Promise and manually resolve or reject it, consider using <a href="/en-US/docs/Mozilla/JavaScript_code_modules/PromiseUtils.jsm">PromiseUtils.jsm</a> instead.</p>
-</div>
-
-<p>To use it, you first need to import the code module into your JavaScript scope:</p>
-
-<pre>Components.utils.import("resource://gre/modules/Promise.jsm");
-</pre>
-
-<div class="note">
-<p><strong>Note:</strong> A preliminary promise module is also available starting from Gecko 17, though it didn't conform to the Promises/A+ proposal until Gecko 25:</p>
-
-<pre>Components.utils.import("<s>resource://gre/modules/commonjs/promise/core.js</s>"); // Gecko 17 to 20
-Components.utils.import("<s>resource://gre/modules/commonjs/sdk/core/promise.js</s>"); // Gecko 21 to 24
-</pre>
-
-<p>This implementation also includes helper functions that are specific to the Add-on SDK. While you may still import this module from the above paths, the recommended way for loading it is through the <a href="https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/toolkit/loader.html" title="https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/toolkit/loader.html">Add-on SDK loader</a>.</p>
-</div>
-
-<h2 id="Introduction">Introduction</h2>
-
-<p>For an introduction to promises, you may start from the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/core_promise">Add-on SDK documentation</a>, keeping in mind that only the core subset is implemented in this module.</p>
-
-<p><u>A promise is an object representing a value that may not be available yet</u>. Internally, a promise can be in one of three states:</p>
-
-<ul>
- <li><strong>Pending</strong>, when the final value is not available yet. This is the only state that may transition to one of the other two states.</li>
- <li><strong>Fulfilled</strong>, when and if the final value becomes available. A <em>fulfillment value</em> becomes permanently associated with the promise. This may be any value, including <code>undefined</code>.</li>
- <li><strong>Rejected</strong>, if an error prevented the final value from being determined. A <em>rejection reason</em> becomes permanently associated with the promise. This may be any value, including <code>undefined</code>, though it is generally an <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Error" title="/en-US/docs/JavaScript/Reference/Global_Objects/Error"><code>Error</code></a> object, like in exception handling.</li>
-</ul>
-
-<p>A reference to an existing promise may be received by different means, for example as the return value of a call into an asynchronous API. In this case, the state of the promise can be observed but not directly controlled.</p>
-
-<p>To observe the state of a promise, its <code>then</code> method must be used. This method registers callback functions that are called as soon as the promise is either fulfilled or rejected. The method returns a new promise, that in turn is fulfilled or rejected depending on the state of the original promise and on the behavior of the callbacks. For example, unhandled exceptions in the callbacks cause the new promise to be rejected, even if the original promise is fulfilled. See the documentation of the <code>then</code> method for details.</p>
-
-<p>Promises may also be created using the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise#Constructor" title="/Mozilla/JavaScript_code_modules/Promise.jsm/Promise#Constructor"><code>new Promise()</code></a> constructor.</p>
-
-<h2 id="Method_overview">Method overview</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred">Deferred</a> <a href="#defer()">defer</a>();</code> {{ obsolete_inline("30") }}</td>
- </tr>
- <tr>
- <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a> <a href="#resolve()">resolve</a>([optional] aValue);</code></td>
- </tr>
- <tr>
- <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a> <a href="#reject()">reject</a>([optional] aReason);</code></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Methods">Methods</h2>
-
-<h3 id="defer()">defer()</h3>
-
-<p>Creates a new pending promise and provides methods to resolve or reject it.</p>
-
-<pre>Deferred defer(); {{ obsolete_inline("30") }}
-</pre>
-
-<h6 id="Parameters">Parameters</h6>
-
-<p>None.</p>
-
-<h6 id="Return_value">Return value</h6>
-
-<p>A new object, containing the new promise in the <code>promise</code> property, and the methods to change its state in the <code>resolve</code> and <code>reject</code> properties. See the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred"><code>Deferred</code></a> documentation for details.</p>
-
-<h3 id="resolve()">resolve()</h3>
-
-<p>Creates a new promise fulfilled with the specified value, or propagates the state of an existing promise.</p>
-
-<pre>Promise resolve(
- aValue
-);
-</pre>
-
-<h6 id="Parameters_2">Parameters</h6>
-
-<dl>
- <dt><code>aValue</code> {{ optional_inline() }}</dt>
- <dd>If this value is not a promise, including <code>undefined</code>, it becomes the fulfillment value of the returned promise. If this value is a promise, then the returned promise will be resolved with the value, i.e. it will eventually assume the same state as the provided promise.</dd>
-</dl>
-
-<h6 id="Return_value_2">Return value</h6>
-
-<p>A promise that can be pending, fulfilled, or rejected.</p>
-
-<h3 id="reject()">reject()</h3>
-
-<p>Creates a new promise rejected with the specified reason.</p>
-
-<pre>Promise reject(
- aReason
-);
-</pre>
-
-<h6 id="Parameters_3">Parameters</h6>
-
-<dl>
- <dt><code>aReason</code> {{ optional_inline() }}</dt>
- <dd>
- <p>The rejection reason for the returned promise. Although the reason can be <code>undefined</code>, it is generally an <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Error" title="/en-US/docs/JavaScript/Reference/Global_Objects/Error"><code>Error</code></a> object, like in exception handling.</p>
-
- <div class="note"><strong>Note:</strong> This argument should not be a promise. Specifying a rejected promise would make the rejection reason equal to the rejected promise itself, and not its rejection reason.</div>
- </dd>
-</dl>
-
-<h6 id="Return_value_3">Return value</h6>
-
-<p>A rejected promise.</p>
-
-<h2 id="Examples">Examples</h2>
-
-<p>See the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Examples">examples</a> page.</p>
-
-<h2 id="See_also">See also</h2>
-
-<ul>
- <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a></li>
- <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred">Deferred</a></li>
- <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Examples">Examples</a></li>
- <li><a class="internal" href="/en-US/docs/JavaScript_code_modules/Using" title="en-US/docs/JavaScript code modules/Using JavaScript code modules">Using JavaScript code modules</a></li>
- <li><a class="internal" href="/en-US/docs/Mozilla/JavaScript_code_modules" title="en-US/docs/Mozilla/JavaScript code modules">JavaScript code modules</a></li>
- <li><a class="internal" href="/en-US/docs/Components.utils.import" title="en-US/docs/Components.utils.import"><code>Components.utils.import</code></a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/javascript_code_modules/promise.jsm/promise/index.html b/files/zh-tw/mozilla/javascript_code_modules/promise.jsm/promise/index.html
deleted file mode 100644
index 44c0b22181..0000000000
--- a/files/zh-tw/mozilla/javascript_code_modules/promise.jsm/promise/index.html
+++ /dev/null
@@ -1,215 +0,0 @@
----
-title: Promise
-slug: Mozilla/JavaScript_code_modules/Promise.jsm/Promise
-tags:
- - JavaScript
- - Promise.jsm
-translation_of: Mozilla/JavaScript_code_modules/Promise.jsm/Promise
----
-<p><strong>一個 <code>Promise</code> 物件代表一個可能還不能使用的值。</strong></p>
-
-<p>可以用不同的方式接收一個 promise 的參照,比如作為一個異步 API 的回傳值。一但你有了 promise 的參照,你就可以呼叫它的 <a href="#then()" title="#then()"><code>then()</code></a> 方法來在它的值準備好後,或是,當錯誤發生時執行一些動作。</p>
-
-<p>Promises 物件也可以透過 <a href="#Constructor" title="#Constructor"><code>new Promise()</code></a> 建構子來創建。當你使用一個 <code>Promise</code> 物件的參照時,並不需要額外引入 <code>Promise.jsm</code> 模組 。</p>
-
-<p>一個 promise 可以處於三種內部狀態:</p>
-
-<ul>
- <li><strong>Pending</strong>, 當最終的值尚未準備好被使用時。這是唯一一個可以轉移到其他兩個狀態的狀態。</li>
- <li><strong>Fulfilled</strong>, 當最終的值準備好被使用時。一個完成值將和 promise 建立永久關聯。它可能是任意的值,包和 <code>undefined</code>。</li>
- <li><strong>Rejected</strong>, 當計算最終的值時有錯誤發生。一個拒絕原因將和 promise 建立永久關聯。它可以是任意的值,包含 <code>undefined</code>,儘管它通常是一個 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Error" title="/en-US/docs/JavaScript/Reference/Global_Objects/Error"><code>Error</code></a> 物件對象,就像例外處理時一樣。</li>
-</ul>
-
-<div class="note">
-<p><strong>註:</strong> 你永遠應該處理、轉送或是回報錯誤(或是拒絕的原因)。如果你看到 "<strong>A promise chain failed to handle a rejection</strong>",那很有可能是程式碼中有東西需要修正。請參考 <a href="#Handling_errors_and_common_pitfalls" title="#Handling_errors_and_common_pitfalls">handling errors and common pitfalls</a> 。</p>
-</div>
-
-<h2 id="文件規範">文件規範</h2>
-
-<p>在說明文件中,完成值的型別通常被定義在角括號中。舉例來說,<code><a href="/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread#OS.File.exists()" title="/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread#OS.File.exists()">OS.File.exists</a></code> 方法回傳的 promise 最終將會履行一個 boolean。</p>
-
-<pre>Promise&lt;boolean&gt; exists(string path);
-</pre>
-
-<p>拒絕原因通常可以分別在方法的文件中定義,而且當沒有特別說明時它將被當作是一個 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Error" title="/en-US/docs/JavaScript/Reference/Global_Objects/Error"><code>Error</code></a> 物件。</p>
-
-<h2 id="方法總覽">方法總覽</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td><code>Promise <a href="#then()">then</a>([optional] <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Function" title="/en-US/docs/JavaScript/Reference/Global_Objects/Function">Function</a> onFulfill, </code><code>[optional] </code><code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Function" title="/en-US/docs/JavaScript/Reference/Global_Objects/Function">Function</a> onReject</code><code>);</code></td>
- </tr>
- <tr>
- <td><code>Promise <a href="#catch">catch</a>([optional] <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Function">Function</a> onReject);</code></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="建構子">建構子</h2>
-
-<p>創建一個新的 promise ,初始化等待狀態,並提供一些 resolving 方法的參照,這些方法將可以用來改變它的狀態。</p>
-
-<pre>new Promise(executor);
-</pre>
-
-<h3 id="參數">參數</h3>
-
-<dl>
- <dt><code>executor</code></dt>
- <dd>
- <p>這個方法將立刻被呼叫,伴隨著兩個 resolving 方法作為其參數:</p>
-
- <pre>executor(resolve, reject);
-</pre>
-
- <p>建構子在 executor 結束之前不會結束。那些 resolving 方法可以在任何時候被使用,包含 executor 完成前和完成後,用來控制 promise 的最終狀態。如果 executor 拋出了例外,例外的值將被當作參數傳入 <code>reject</code> 方法。</p>
- </dd>
-</dl>
-
-<h3 id="Resolving_方法">Resolving 方法</h3>
-
-<h4 id="resolve()">resolve()</h4>
-
-<p>執行將特定值連結到 promise 的工作,或是傳遞狀態到一個已存在的 promise。如果被連結的 promise 已經處於被解決的狀態,無論是被連結到值、拒絕原因、或另外一個 promise,這個方法將不會做任何事。</p>
-
-<div class="note"><strong>註:</strong> 用一個等待中的 promise 當作此方法的 <code>aValue</code> 參數,並在這個 promise 被解決或被拒絕前再次呼叫此方法,第二次的呼叫並不會有任何效果,因為原本的 promise 已經被連結到這個等待中的 promise。</div>
-
-<pre>void resolve(
- aValue
-);
-</pre>
-
-<h6 id="參數_2">參數</h6>
-
-<dl>
- <dt><code>aValue</code> <span class="inlineIndicator optional optionalInline">Optional</span></dt>
- <dd>如果這個值不是一個 promise,包含 <code>undefined</code>,它將成為被連結 promise 的完成值。如果這個值是一個 promise,則被連結的 promise 將會連結到這個傳入的 promise,並和它保持一樣的狀態(包含任何未來的轉變)。</dd>
-</dl>
-
-<h4 id="reject()">reject()</h4>
-
-<p>用指定的原因拒絕被連結的 promise。如果該 promise 已經被解決,無論是連結到值、拒絕原因、或另外一個 promise,這個方法將不會做任何事。</p>
-
-<pre>void reject(
- aReason
-);
-</pre>
-
-<h6 id="參數_3">參數</h6>
-
-<dl>
- <dt><code>aReason</code> <span class="inlineIndicator optional optionalInline">Optional</span></dt>
- <dd>
- <p>被連結 promise 的拒絕原因。雖然原因可以是 <code>undefined</code>,它通常會是一個 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Error" title="/en-US/docs/JavaScript/Reference/Global_Objects/Error"><code>Error</code></a> 物件對象,就像例外處理那樣。</p>
-
- <div class="note"><strong>註:</strong> 這個參數不應該是一個 promise。指定一個拒絕 promise 作為拒絕原因會讓拒絕原因等於這個拒絕 promise 物件本身,而不是該 promise 的拒絕原因。</div>
- </dd>
-</dl>
-
-<h2 id="方法">方法</h2>
-
-<h3 id="then()">then()</h3>
-
-<p>在 promise 被完成或是被拒絕後立刻呼叫提供的方法。一個新的 promise 將被回傳,新 promise 的狀態改變將基於此 promise 和提供的 callback 方法。</p>
-
-<p>一個適當的 callback 總是在這個方法回傳後調用,無論此 promise 是否已經被完成或是被拒絕。你也可以在同一個 promise 上多次呼叫 <code>then</code> 方法,callback 們將被依照它們的註冊順序依序被調用。</p>
-
-<div class="warning">
-<p><strong>警告: </strong>如果 <code>onFulfill</code> callback 拋出例外, <code>onReject</code> callback 並不會被調用,錯誤也不會顯示在 console(你將會看到 promise 鍊失敗錯誤)。作為替代方法,你可以在你準備回傳的 promise 上註冊一個拒絕 callback 方法(使用 catch() 或是 then()),用於處理任何此 promise 上註冊的 callback 中拋出的例外。</p>
-</div>
-
-<div class="note"><strong>註:</strong> 當你在同一個 promise 上呼叫多次 <code>then</code> 方法時,註冊的 callback 們將被獨立的調用。舉例來說,如果任何例外發生在其中一個 callback 中,它將不會影響其餘 callback 的執行。callback 的行為只會影響它註冊的 <code>then</code> 方法回傳的 promise。實際上,每次調用 <code>then</code> 方法將回傳完全不同的 promise。</div>
-
-<pre>Promise then(
- Function onFulfill,
- Function onReject
-);
-</pre>
-
-<h6 id="參數_4">參數</h6>
-
-<dl>
- <dt><code>onFulfill</code> <span class="inlineIndicator optional optionalInline">Optional</span></dt>
- <dd>如果 promise 被完成,這個方法將被調用,完成值將作為它的唯一參數,此方法的回傳值將決定 <code>then</code> 方法回傳的新 promise 的狀態。若此參數不是一個方法(通常為<code>null</code>),<code>then</code> 方法回傳的新 promise 將被用和原本 promise 相同的完成值完成。</dd>
- <dt><code>onReject</code> <span class="inlineIndicator optional optionalInline">Optional</span></dt>
- <dd>
- <p>如果 promise 被拒絕,這個方法將被調用,拒絕原因將作為它的唯一參數,此方法的回傳值將決定 <code>then</code> 方法回傳的新 promise 的狀態。若此參數不是一個方法(通常為<code>null</code>),<code>then</code> 方法回傳的新 promise 將被用和原本 promise 相同的拒絕原因拒絕。</p>
- </dd>
-</dl>
-
-<h6 id="回傳值">回傳值</h6>
-
-<p>一個預設等待的 promise ,接著可以假設其狀態基於 callback 方法的結果:</p>
-
-<ul>
- <li>如果 callback 回傳一個不是 primise 的值,包含 <code>undefined</code>,新的 promise 將被用這個值完成,就算原本的 primise 是被拒絕的。</li>
- <li>如果 callback 拋出例外,新的 promise 將被用這個例外當作拒絕原因拒絕,就算原本的 promise 是被完成的。</li>
- <li>如果 callback 回傳一個 promise ,則可以假設新的 promise 最終將會和該 promise 擁有相同的狀態。</li>
-</ul>
-
-<h3 id="catch()"><a name="catch">catch()</a></h3>
-
-<p>相當於呼叫 <code>then()</code> ,並使用 <code>undefined</code> 作為 <code>onFulfill</code> 參數的值。如果你串接 <code>then(onFulfile).catch(onReject)</code>,<code>onFulfill</code> 拋出的例外將會被攔截並傳入 <code>onReject</code> ,這和直接將 <code>onReject</code> 傳入 <code>then()</code> 中不同。</p>
-
-<pre>Promise catch(
-  Function onReject
-);
-</pre>
-
-<p>因此以下的呼叫是等價的:</p>
-
-<pre>p.then(undefined, logError);
-p.catch(logError);
-</pre>
-
-<h2 id="除錯">除錯</h2>
-
-<p>基於 promise 的設計, promise 對象的狀態和值無法在不調用 <code><a href="#then()" title="#then()">then()</a></code> 的前提下同步地檢視。</p>
-
-<p>為了幫助除錯,只有在手動檢視 promise 對象時,才能看到更多資訊,這些資訊是代碼無法訪問的特殊屬性(目前,這是透過隨機化屬性名稱來實現的,因為缺少更複雜的語言或調適器的支持)。</p>
-
-<p>這些代碼無法訪問,可檢視的屬性為:</p>
-
-<ul>
- <li><code><strong><span>{</span>{private:status}}</strong></code>: <strong>0</strong> 為等待, <strong>1</strong> 為完成, <strong>2</strong> 為拒絕。</li>
- <li><code><strong><span>{</span>{private:value}}</strong></code>: 完成值或是拒絕原因,只對已完成或是已拒絕的 promise 有效。</li>
- <li><code><strong><span>{</span>{private:handlers}}</strong></code>: 一個持有通過 <code><a href="#then()" title="#then()">then()</a></code> 方法註冊之方法的參照的物件陣列,只對等待中的 promise 有效。</li>
-</ul>
-
-<p style="text-align: center;"><img alt="Promise properties are visible in the debugger." src="https://mdn.mozillademos.org/files/6471/Promise-Debug-1.png" style="border-style: solid; border-width: 2px; height: 482px; margin-bottom: 15px; margin-top: 15px; width: 403px;"><img alt="Promise handlers can be watched from the Console." src="https://mdn.mozillademos.org/files/6473/Promise-Debug-2.png" style="border-style: solid; border-width: 2px; height: 161px; width: 977px;"></p>
-
-<h2 id="範例">範例</h2>
-
-<p>參見 <a href="/Mozilla/JavaScript_code_modules/Promise.jsm/Examples">examples</a>.</p>
-
-<h2 id="錯誤處理和常見的陷阱">錯誤處理和常見的陷阱</h2>
-
-<p>你應該回報沒有被處理的錯誤,除非你將 promise 移交給調用者或是交給其他的代碼來處理這些錯誤。</p>
-
-<pre class="brush: js">// ###### WRONG: Silently drops any rejection notified by "OS.File.Exists".
-OS.File.exists(path).then(exists =&gt; { if (exists) myRead(path); });
-
-// ###### WRONG: Silently drops any exception raised by "myRead".
-OS.File.exists(path).then(exists =&gt; { if (exists) myRead(path); }, Components.utils.reportError);
-
-// CORRECT (for example, might report the exception "myRead is not defined")
-OS.File.exists(path).then(exists =&gt; { if (exists) myRead(path); })
- .catch(Components.utils.reportError);
-
-// CORRECT (the function returns a promise, and the caller will handle the rejection)
-function myReadIfExists(path)
-{
- return OS.File.exists(path).then(exists =&gt; { if (exists) myRead(path); });
-}</pre>
-
-<h2 id="參見">參見</h2>
-
-<ul>
- <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm">Promise.jsm</a></li>
- <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred">Deferred</a></li>
- <li><a href="/Mozilla/JavaScript_code_modules/Promise.jsm/Examples">Examples</a></li>
- <li><a href="/en-US/docs/JavaScript_OS.File" title="/en-US/docs/JavaScript_OS.File">JavaScript OS.File</a></li>
- <li><a href="http://kryogenix.org/days/2013/12/12/promises-promises">Promises, Promises</a>: a useful simple explanation by Stuart Langridge</li>
- <li><a href="http://dom.spec.whatwg.org/#promises">WHATWG Living Standard</a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/js-ctypes/index.html b/files/zh-tw/mozilla/js-ctypes/index.html
deleted file mode 100644
index a49961f677..0000000000
--- a/files/zh-tw/mozilla/js-ctypes/index.html
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: js-ctypes
-slug: Mozilla/js-ctypes
-translation_of: Mozilla/js-ctypes
----
-<p>{{jsctypesSidebar("Introduction")}}</p>
-
-<p><strong>js-ctypes</strong> allows application and extension code to call back and forth to native code written in C. C++ support is possible through <code>vtable </code>pointers see <a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">使用 COM</a>. For a discussion on extended C++ support see {{bug("505907")}}. Unlike binary XPCOM components, It allows developers to ship a single binary for use with multiple versions of Firefox.</p>
-
-<div class="note"><strong>Note:</strong> js-ctypes 只能使用在 chrome 的應用程式和擴展裡,</div>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">文件</h2>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes" title="Mozilla/js-ctypes/Using_js-ctypes">使用 JS-Ctypes</a></dt>
- <dd>
- <ul>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open</a>
- <ul>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open#Custom_Native_File">Custom Native File</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries" title="Mozilla/js-ctypes/Standard_Libraries_per_OS">Standard OS Libraries</a>
- <ul>
- <li><a href="/en-US/Add-ons/Code_snippets/Finding_Window_Handles">Finding window handles</a></li>
- </ul>
- </li>
- </ul>
- </li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_data">Working with Data</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_ArrayBuffers">Working with ArrayBuffers</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_types">Declaring Types</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_and_calling_functions">Declaring and Calling Functions</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Callbacks">Declaring and Using Callbacks</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Type_conversion">Type Conversion</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/Memory_Management">Memory Management</a></li>
- <li><a href="/en-US/docs/Web/API/ChromeWorker">ChromeWorker</a></li>
- </ul>
- </dd>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference" title="js-ctypes/js-ctypes_reference">JS-ctypes 參考</a></dt>
- <dd>參考 js-ctypes API.
- <ul>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ABI">ABI</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CData">CData</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CType">CType</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes">ctypes</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/FunctionType">FunctionType</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Int64">Int64</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Library">Library</a></li>
- <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/UInt64">UInt64</a></li>
- </ul>
- </dd>
- </dl>
-
- <p><span class="alllinks"><a href="/en-US/docs/tag/js-ctypes" title="tag/js-ctypes">View All...</a></span></p>
-
- <h2 class="Tools" id="Examples" name="Examples"><a href="/en-US/docs/Mozilla/js-ctypes/Examples" title="Mozilla/js-ctypes/Examples">範例</a></h2>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Add_to_iPhoto" title="Mozilla/js-ctypes/Examples/Add_to_iPhoto">Add to iPhoto</a></dt>
- <dd>A Firefox extension that uses js-ctypes to call Carbon and Core Foundation framework routines on Mac OS X to implement an "Add image to iPhoto" feature in Firefox.</dd>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_C_structs_and_pointers">使用 C 結構和指針</a></dt>
- <dd> </dd>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">使用 COM</a></dt>
- <dd> </dd>
- <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_Objective-C_from_js-ctypes">使用 Objective-C</a></dt>
- </dl>
-
- <p><strong><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_JNI_from_js-ctypes">使用 JNI/Java</a></strong></p>
-
- <dl>
- <dt><a href="https://github.com/ochameau/jscpptypes">Github :: ochameau / jscpptypes</a></dt>
- <dd>A mangling library to use C++ from js-ctypes</dd>
- </dl>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">社群</h2>
-
- <ul>
- <li>View Mozilla forums...{{DiscussionList("dev-extensions", "mozilla.dev.extensions")}}</li>
- <li><a href="irc://moznet/jsctypes">IRC - #jsctypes</a></li>
- <li><a href="http://stackoverflow.com/questions/tagged/jsctypes">Stackoverflow - jsctypes</a></li>
- </ul>
-
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">相關文件</h2>
-
- <ul>
- <li><a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Changes_in_Gecko_2.0#Binary_components">XPCOM in Gecko 2 - Binary Components</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/mozilla/localization/index.html b/files/zh-tw/mozilla/localization/index.html
deleted file mode 100644
index eee1265f5f..0000000000
--- a/files/zh-tw/mozilla/localization/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Mozilla 在地化
-slug: Mozilla/Localization
-tags:
- - Landing
- - Localization
- - Mozilla
- - NeedsTranslation
- - TopicStub
- - Translation
- - l10n
-translation_of: Mozilla/Localization
----
-<p><span class="seoSummary"><strong>在地化</strong>(Localization、L10n)指的是翻譯軟體的使用者介面,從一個語言到另一個語言,並調整到適合該語言的文化。這些資源提供給所有對於在地化的技術層面感興趣的人。</span>像是開發者和貢獻者。</p>
-
-<h2 id="延伸閱讀">延伸閱讀</h2>
-
-<dl>
- <dt><a href="/zh-TW/docs/Project:MDN/Localizing" title="/en-US/docs/Project:MDN/Localizing">Localizing MDN</a></dt>
- <dd>這些資源涵蓋了 MDN 文件的在地化。</dd>
- <dt><a href="/zh-TW/Apps/Build/Localization">App localization</a></dt>
- <dd>這一系列文件特別用於在地化應用程式,包含 Firefox OS 應用程式。</dd>
- <dt><a href="/zh-TW/docs/Web/API/L10n">L10n</a></dt>
- <dd>Mozilla 用於在地化 Firefox OS 的 L10n API 參考文件。</dd>
-</dl>
diff --git a/files/zh-tw/mozilla/localization/localizing_with_pontoon/index.html b/files/zh-tw/mozilla/localization/localizing_with_pontoon/index.html
deleted file mode 100644
index 08461fecd6..0000000000
--- a/files/zh-tw/mozilla/localization/localizing_with_pontoon/index.html
+++ /dev/null
@@ -1,135 +0,0 @@
----
-title: 使用 Pontoon 來在地化
-slug: Mozilla/Localization/Localizing_with_Pontoon
-translation_of: Mozilla/Localization/Localizing_with_Pontoon
----
-<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon</a> 是一個基於web網頁的、所見即所得(WYSIWYG)的在地化(l10n即localization)工具。在Mozilla基金會,我們使用Pontoon本地化Mozilla網站和Firefox OS(火狐移動操作系統)的應用層(app)接口,就是Gaia。 Pontoon是一個非常簡單和直觀的,僅需要很少甚至沒有技術背景,就能在l10n本地化工作流程中,學會使用的工具。以下,我們將討論如何在本地化項目中使用Pontoon,從最初的註冊登錄到最終面對你的貢獻者(參與該項目的志願者或工作人員)。在這個過程中,我們將挑出Pontoon的一些貼心特性,那將使你十分有效率,並將使l10n本地化共享項目變得更容易。</p>
-
-<div class="note">
-<p><strong>你是位開發者嗎?</strong> 閱讀 <a href="/en-US/docs/Implementing_Pontoon_Mozilla">在你的網站上使用 Pontoon</a> 或學習如何在 <a href="https://github.com/mozilla/pontoon">GitHub</a> 上使用。</p>
-</div>
-
-<h2 id="第一步">第一步</h2>
-
-<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon 的首頁</a> is very easy to use. To begin localizing the project, click on the Persona icon and sign in. Next, simply select the project you want to work on and your locale from the dropdown menus. Pontoon will automatically open that locale's project for you to get started. Note that for our purposes here, we'll be using <a href="https://affiliates.mozilla.org/">Firefox Affiliates</a> website to demo Pontoon's functionality and workflow. And there it is, opened inside Pontoon:</p>
-
-<p><em><img alt="Browser app and workspace" src="https://mdn.mozillademos.org/files/8323/affiliates.png" style="height: 558px;"></em></p>
-
-<h3 id="主要工具列">主要工具列</h3>
-
-<p>如你所見,most of the interface is taken by the website being translated. Only the toolbar on top belongs to Pontoon, containing the following items (from left to right):</p>
-
-<p><img alt="Main toolbar" src="https://mdn.mozillademos.org/files/8325/toolbar.png"></p>
-
-<h4 id="字串列表">字串列表</h4>
-
-<p>Opens a sidebar with a list of all strings to localize.</p>
-
-<h4 id="Project_selector_(Affiliates)"><span id="cke_bm_939S" style="display: none;"> </span>Project selector (Affiliates)</h4>
-
-<p>Switches between projects to localize.</p>
-
-<h4 id="Resource_selector_(Homepage)"><span id="cke_bm_940S" style="display: none;"> </span>Resource selector (Homepage)</h4>
-
-<p>Switches between project resources to localize, like subpages or localization files. Hidden if no resources available for project.</p>
-
-<h4 id="sect1"><span id="cke_bm_941S" style="display: none;"> </span></h4>
-
-<dl>
-</dl>
-
-<h4 id="Locale_selector_(Slovenian)">Locale selector (Slovenian)</h4>
-
-<p>Switches between languages to localize.</p>
-
-<h4 id="Go">Go</h4>
-
-<p>Opens project-resource-locale selection.</p>
-
-<h4 id="Progress_indicator">Progress indicator</h4>
-
-<p>Displays your progress on the resource being localized. More details are available in the popup.</p>
-
-<dl>
-</dl>
-
-<h4 id="使用者清單"><span id="cke_bm_943S" style="display: none;"> </span>使用者清單</h4>
-
-<p>Allows for user-specific tasks, like commiting to repository, downloading files and signing out.</p>
-
-<h4 id="資訊清單">資訊清單</h4>
-
-<p>Gives important information, like the anticipated project timeline and a list of keyboard shortcuts.</p>
-
-<dl>
-</dl>
-
-<p>好了,我們現在是不是該來翻譯啦~<span id="cke_bm_608E" style="display: none;"> </span></p>
-
-<dl>
-</dl>
-
-<h2 id="翻譯字串">翻譯字串</h2>
-
-<p>當使用 Pontoon 來在地化時,你有多種選擇來翻譯你的字串,你可以直接修改內容、在內容外或是兩種混和。We'll start with looking at in-context translation.</p>
-
-<h3 id="內容中">內容中</h3>
-
-<p>Pontoon's in-context translation mode is what puts it above others. It opens a web page (or web app) and enables real-time editing of that page. Here's how you translate your first string:</p>
-
-<p><img alt="In-context localization" src="https://mdn.mozillademos.org/files/8331/in-context.png"></p>
-
-<ol>
- <li>Hover over the text you want to translate with your mouse.</li>
- <li>An edit button appears over that text. Click on it to enable the translate mode.</li>
- <li>Replace the original text with its translation into your language.</li>
- <li>Click the save button to save your translation.</li>
-</ol>
-
-<div>
-<h3 id="內容外">內容外</h3>
-
-<p>Some strings are impossible to translate in-context, e.g. the contents of the &lt;title&gt; tag in websites and strings with placeables or different plural forms. By clicking on the hamburger icon in the main toolbar, a list of all strings and available translations will open in the sidebar. You can also use the sidebar for out-of-context localization:</p>
-
-<p><img alt="Out-of-context localization: list" src="https://mdn.mozillademos.org/files/8337/out-of-context-1.png"> <img alt="Out-of-context localization: translate" src="https://mdn.mozillademos.org/files/8335/out-of-context-2.png"></p>
-
-<ol>
- <li>點擊你想要翻譯的字串。</li>
- <li>Translation panel with original string and its details (e.g. comments) opens.</li>
- <li>Translate the string in the translation area below.</li>
- <li>按下儲存按鈕來儲存你的翻譯。</li>
-</ol>
-
-<p>當你在內容外翻譯,成果將會直接在內容上呈現,if they could also be translated in-context.</p>
-
-<h3 id="翻譯小助手">翻譯小助手</h3>
-</div>
-
-<p>如你所見,suggestions from history, translation memory, machine translation and other locales are also available in the out-of-context translation panel. We call all of these translation helpers and here's how each of them will help you as you translate strings:</p>
-
-<p><img alt="Translation helpers: History" src="https://mdn.mozillademos.org/files/8339/helpers-history.png"> <img alt="Translation helpers: Machinery" src="https://mdn.mozillademos.org/files/8341/helpers-machinery.png"> <img alt="Translation helpers: Other locales" src="https://mdn.mozillademos.org/files/8343/helpers-locales.png"> <img alt="Translation helpers: Search" src="https://mdn.mozillademos.org/files/8345/helpers-menu.png"></p>
-
-<h4 id="歷史紀錄">歷史紀錄</h4>
-
-<p>Displays previously suggested translations, including from other users.</p>
-
-<h4 id="Machinery">Machinery</h4>
-
-<p>Displays matches from various services: internal translation memory, <a href="http://transvision.mozfr.org/">Mozilla Transvision</a>, <a href="https://amagama-live.translatehouse.org/">open source translation memory</a>, <a href="http://www.microsoft.com/Language/">Microsoft terminology</a> and <a href="http://www.bing.com/translator">machine translation</a>.</p>
-
-<h4 id="其他語言">其他語言</h4>
-
-<p>Displays matching translations from other locales.</p>
-
-<h4 id="搜尋">搜尋</h4>
-
-<p>Almost like machinery, but takes provided keyword as input parameter instead of the original string.</p>
-
-<p>By clicking a suggestion, it gets copied into translation area.</p>
-
-<dl>
-</dl>
-
-<h2 id="發布你的在地化">發布你的在地化</h2>
-
-<p>Suppose you now want to publish your l10n work by committing it to a repo. Pontoon lets you do that too! Actually, it does that for you by automatically syncing with repositories on hourly basis. You can now pat yourself on the back, do a little dance, go to sleep or do something else to celebrate your work!</p>
diff --git a/files/zh-tw/mozilla/mathml_project/index.html b/files/zh-tw/mozilla/mathml_project/index.html
deleted file mode 100644
index dea19cfe6f..0000000000
--- a/files/zh-tw/mozilla/mathml_project/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: Mozilla MathML Project
-slug: Mozilla/MathML_Project
-tags:
- - MathML
- - MathML Project
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/MathML_Project
----
-<p>The Mozilla MathML project is Mozilla's project to build and enhance <a href="/en-US/docs/Web/MathML" title="/en-US/docs/Web/MathML">MathML</a> support within Firefox and other Mozilla-based applications. For a quick overview, see the <a href="http://fred-wang.github.io/MozSummitMathML/index.html">slides for the innovation fairs at Mozilla Summit 2013</a>.</p>
-<h2 id="Updates">Updates</h2>
-<p><img alt="Mathzilla" class="internal default" height="150" src="https://mdn.mozillademos.org/files/6281/mathzilla.svg" style="float: right;" width="150"></p>
-<ul>
- <li><a href="/docs/Mozilla/MathML_Project/Status" title="Mozilla MathML Project/Status">Status of each tag</a></li>
- <li><a href="/docs/Mozilla/MathML_Project/MathML3Testsuite" title="Mozilla MathML Project/MathML3Testsuite">Result of the MathML 3 Testsuite</a></li>
- <li><a class="external" href="https://www.wg9s.com/mozilla/firefox/">Unofficial nightly builds with MathML patches applied</a> (maintained by Bill Gianopoulos)</li>
- <li><a href="/docs/Mozilla/MathML_Project/Updates" title="Mozilla_MathML_Project/Updates">More updates and archived content</a></li>
-</ul>
-<h2 id="Community">Community</h2>
-<ul>
- <li>View Mozilla forums... {{DiscussionList("dev-tech-mathml", "mozilla.dev.tech.mathml")}}</li>
- <li><a class="link-irc" href="irc://irc.mozilla.org/%23mathml" rel="external" title="irc://irc.mozilla.org/%23mathml">IRC channel</a></li>
- <li><a class="link-https" href="https://wiki.mozilla.org/MathML:Home_Page">Wiki used by contributors</a> - check out the latest developments and help us improving MathML in Mozilla.</li>
-</ul>
-<h2 id="Links">Links</h2>
-<ul>
- <li>Installing <a href="/docs/Mozilla/MathML_Project/Fonts" title="Mozilla MathML Project/Fonts">fonts for Mozilla's MathML engine</a></li>
- <li><a class="external" href="http://www.w3.org/TR/MathML3/">MathML Version 3.0</a> - W3C Recommendation, 21 October 2010</li>
- <li><a class="external" href="http://www.w3.org/Math/testsuite/"><abbr>W3C</abbr> <abbr>MathML</abbr> Test Suite</a> - Designed to check the implementation of each element one attribute (or built-in rendering behavior) at a time in a fairly thorough manner.</li>
- <li><a href="/docs/Web/MathML" title="MathML">MathML in Mozilla Developer Network</a></li>
-</ul>
-<h3 id="Sample_MathML_Documents">Sample <abbr>MathML</abbr> Documents</h3>
-<ul>
- <li><a href="/docs/Mozilla/MathML_Project/Screenshots" title="Mozilla MathML Project/Screenshots">Screenshots</a></li>
- <li><a href="/docs/Mozilla/MathML_Project/Start" title="Mozilla_MathML_Project/Start"><abbr>MathML</abbr> Start Page</a> - with translations in different languages ( <a href="/ar/docs/Mozilla_MathML_Project/Start" title="/ar/Mozilla_MathML_Project/Start">Arabic</a>, <a href="/zh-CN/docs/Mozilla_MathML_Project/Start" title="/zh-CN/Mozilla_MathML_Project/Start">Chinese</a>, <a href="/he/docs/Mozilla_MathML_Project/Start" title="/he/Mozilla_MathML_Project/Start">Hebrew</a>, <a href="/th/docs/Mozilla_MathML_Project/Start" title="/th/Mozilla_MathML_Project/Start">Thai</a>)</li>
- <li><a class="external" href="/docs/Mozilla/MathML_Project/Basics">MathML Basics</a> - Document tailored to display correctly with just the Symbol font that is pre-installed by default on most OS configurations.</li>
- <li><a class="external" href="/docs/Mozilla/MathML_Project/MathML_Torture_Test"><abbr>MathML</abbr> Torture Test</a> - Comparative testing of MathML rendering against TeX.</li>
- <li>Demo of some MathML tags: <a class="external" href="/docs/Mozilla/MathML_Project/mfrac">mfrac</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mo">mo</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mtable">mtable</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mspace">mspace</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mmultiscripts">mmultiscripts</a>, <a class="external" href="/docs/Mozilla/MathML_Project/roots">msqrt-mroot</a>.</li>
- <li><a class="external" href="/docs/Mozilla/MathML_Project/Extras">MathML Extras</a> - Technology demonstration of some interesting upshots from building natively upon the browser environment.</li>
- <li><a href="/docs/Mozilla/MathML_Project/Various" title="Mozilla_MathML_Project/Various">Various MathML Tests</a> - These pages were imported from <code>layout/mathml/tests/</code>.</li>
- <li><a class="external" href="http://golem.ph.utexas.edu/~distler/blog/archives/000104.html">Blog</a> with comments that include MathML.</li>
-</ul>
-<h3 id="Create_MathML_Documents">Create <abbr>MathML</abbr> Documents</h3>
-<ul>
- <li><a href="/docs/Web/MathML/Authoring" title="Mozilla MathML Project/Authoring">Authoring MathML</a></li>
- <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_editors.html">Editors</a></li>
- <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_converters.html">Converters</a></li>
- <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_stylesheets.html">Stylesheets</a></li>
-</ul>
-<div class="originaldocinfo">
- <h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
- <ul>
- <li>Author(s): Roger B. Sidje</li>
- <li>Other Contributors: Frédéric Wang</li>
- <li>Last Updated Date: April 4, 2010</li>
- <li>Copyright Information: Portions of this content are © 1999–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li>
- </ul>
-</div>
-<p> </p>
diff --git a/files/zh-tw/mozilla/mathml_project/screenshots/index.html b/files/zh-tw/mozilla/mathml_project/screenshots/index.html
deleted file mode 100644
index 880c0ddd35..0000000000
--- a/files/zh-tw/mozilla/mathml_project/screenshots/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: MathML 快照
-slug: Mozilla/MathML_Project/Screenshots
-translation_of: Mozilla/MathML_Project/Screenshots
----
-<ul>
- <li><a href="https://developer.mozilla.org/docs/Mozilla/MathML_Project/Start">起始</a>的<a href="https://developer.mozilla.org/@api/deki/files/5690/=start.png" title="start.png">快照畫面</a></li>
- <li><a href="https://developer.mozilla.org/docs/Mozilla/MathML_Project/Basics">基礎</a>的<a href="https://developer.mozilla.org/@api/deki/files/5518/=basics.png">快照畫面</a></li>
- <li><a class="external" href="/docs/Mozilla/MathML_Project/mfrac" title="http://www.mozilla.org/projects/mathml/demo/mfrac.xhtml">mfrac</a>的<a href="https://developer.mozilla.org/@api/deki/files/5509/=demo-mfrac.png">快照畫面</a>。 此網頁同時顯示MathML如何整合網頁功能,例如:影像背景的透明度。</li>
- <li><a class="external" href="/docs/Mozilla/MathML_Project/mtable" title="http://www.mozilla.org/projects/mathml/demo/mtable.xhtml">mtable</a>的<a href="https://developer.mozilla.org/@api/deki/files/5512/=demo-mtable-1.png">快照畫面</a>,這些畫面展示二維數學公式的排版。</li>
- <li><a href="https://developer.mozilla.org/docs/Mozilla/MathML_Project/roots">根</a>與<a href="https://developer.mozilla.org/docs/Mozilla/MathML_Project/Various#Maxwell's_Equations">物理公式</a>(馬克斯公式及愛因斯坦磁場公式)的<a href="https://developer.mozilla.org/@api/deki/files/5508/=roots-maxwell-einstein.png">快照畫面</a>,這些畫面展現出利用mtable與彈性運算元進階佈局功能。</li>
- <li>你可以獲取關於<a href="https://developer.mozilla.org/@api/deki/files/5510/=view_mathml_source.png">數學公式</a>或<a href="https://developer.mozilla.org/@api/deki/files/5511/=view_selection_source.png">選取的算術式</a>的原始碼。這些都是你自己的選擇!</li>
- <li>一些關於MathML的<a href="https://developer.mozilla.org/@api/deki/files/4240/=mail_client_blog.png">網誌貼文</a>及<a href="https://developer.mozilla.org/@api/deki/files/5519/=mathmail.png">郵件</a>。</li>
-</ul>
diff --git a/files/zh-tw/mozilla/mathml_project/開頭/index.html b/files/zh-tw/mozilla/mathml_project/開頭/index.html
deleted file mode 100644
index 6572d9e913..0000000000
--- a/files/zh-tw/mozilla/mathml_project/開頭/index.html
+++ /dev/null
@@ -1,91 +0,0 @@
----
-title: 使用 MathML
-slug: Mozilla/MathML_Project/開頭
-tags:
- - MathML
-translation_of: Mozilla/MathML_Project/Start
----
-<h2 id="使用_MathML">使用 MathML</h2>
-<p>你有看到這頁面理那些精巧的數學算式嗎? 沒有嗎? 太糟糕了, 來<a href="https://developer.mozilla.org/@api/deki/files/5690/=start.png">這邊</a>看一下你錯過了什麼東西吧。 並快<a href="https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/">下載</a>支援這個功能的 Mozilla 板本來補救這哀傷的場面!</p>
-<p>還是你發現你看到的畫面根螢幕截圖不一樣呢? 這牆況通常是因為你少了某些關鍵的 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/fonts/">MathML 字型</a>。</p>
-<p>現在準備萬全了, 你應該看得到這個行內等式的尖角符號: <math> <mrow> <mover> <mi>x</mi> <mo>^</mo> </mover> <mo>+</mo> <mover> <mrow><mi>x</mi><mo>⁢</mo><mi>y</mi></mrow> <mo>^</mo> </mover> <mo>+</mo> <mover> <mrow><mi>x</mi><mo>⁢</mo><mi>y</mi><mo>⁢</mo><mi>z</mi></mrow> <mo>^</mo> </mover> <mo>.</mo>  </mrow></math>旁邊這個則是小小的公式, <math> <mrow> <mo>det</mo> <mo lspace="0" rspace="0" symmetric="false">|</mo> <mfrac linethickness="0"> <mi>a</mi> <mi>c</mi> </mfrac> <mfrac linethickness="0"> <mi>b</mi> <mi>d</mi> </mfrac> <mo lspace="0" rspace="0" symmetric="false">|</mo> <mo>=</mo> <mi>a</mi> <mi>d</mi> <mo>-</mo> <mi>b</mi> <mi>c</mi> <mo>,</mo> </mrow></math>也可以被設定成這樣的顯示方式: <math display="block"> <mrow> <mo>det</mo> <mo>|</mo> <mtable> <mtr> <mtd> <mi>a</mi> </mtd> <mtd> <mi>b</mi> </mtd> </mtr> <mtr> <mtd> <mi>c</mi> </mtd> <mtd> <mi>d</mi> </mtd> </mtr> </mtable> <mo>|</mo> <mo>=</mo> <mi>a</mi> <mi>d</mi> <mo>-</mo> <mi>b</mi> <mi>c</mi> <mo>.</mo> </mrow> </math></p>
-<p>數學的排版非常的挑剔。 <a href="./">MathML in Mozilla</a> 正是著眼於實踐 <a href="http://www.w3.org/Math/">MathML 標準</a>
- <i>
- </i>
- 以能達到<em> 所標記即所得</em> 、或者說 <em>所製即所得</em>
- <i>
- </i>
- ,簡短點就是所謂的 "WYSIWYM"。 而這兩者的差異可以在下面的兩行算式表現出來!<math display="block"><msup><mrow><mo minsize="3" symmetric="false">(</mo> <mo>...</mo> <msup> <mrow> <mo minsize="2" symmetric="false">(</mo> <msup> <mrow> <mo symmetric="false">(</mo> <msub> <mi>a</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <mo symmetric="false">)</mo> </mrow> <msub> <mi>n</mi> <mn>1</mn> </msub> </msup> <mo>+</mo> <msub> <mi>a</mi> <mn>2</mn> </msub> <mo minsize="2" symmetric="false">)</mo> </mrow> <msub> <mi>n</mi> <mn>2</mn> </msub> </msup> <mo>+</mo> <mo>...</mo> <mo>+</mo> <msub> <mi>a</mi> <mi>p</mi> </msub> <mo minsize="3" symmetric="false">)</mo> </mrow> <msub> <mi>n</mi> <mi>p</mi> </msub> </msup> </math> <math display="block"> <msup> <mrow> <mo>(</mo> <mo>...</mo> <msup> <mrow> <mo>(</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>n</mi> <mn>1</mn> </msub> </msup> <mo>+</mo> <msub> <mi>a</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>n</mi> <mn>2</mn> </msub> </msup> <mo>+</mo> <mo>...</mo> <mo>+</mo> <msub> <mi>a</mi> <mi>p</mi> </msub> <mo>)</mo> </mrow> <msub> <mi>n</mi> <mi>p</mi> </msub> </msup> </math></p>
-<p>而這粗體等式的根 <math><mstyle mathvariant="bold"><msup><mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn>  </mstyle></math>也用粗體呈現 <math display="block"> <mstyle mathvariant="bold"> <mi>y</mi> <mo>=</mo> <mroot> <mrow> <mo>-</mo> <mfrac> <mi>q</mi> <mn>2</mn> </mfrac> <mo>+</mo> <mroot> <mrow> <mfrac> <msup> <mi>q</mi> <mn>2</mn> </msup> <mn>4</mn> </mfrac> <mo>+</mo> <mfrac> <msup> <mi>p</mi> <mn>3</mn> </msup> <mn>27</mn> </mfrac> </mrow> <mn>2</mn> </mroot> </mrow> <mn>3</mn> </mroot> <mo>+</mo> <mroot> <mrow> <mo>-</mo> <mfrac> <mi>q</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mroot> <mrow> <mfrac> <msup> <mi>q</mi> <mn>2</mn> </msup> <mn>4</mn> </mfrac> <mo>+</mo> <mfrac> <msup> <mi>p</mi> <mn>3</mn> </msup> <mn>27</mn> </mfrac> </mrow> <mn>2</mn> </mroot> </mrow> <mn>3</mn> </mroot> <mo>.</mo> </mstyle> </math></p>
-<p>而等式 <math><mrow><mi>a</mi> <msup> <mi>x</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>b</mi> <mi>x</mi> <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn> <mo>,</mo>  </mrow> </math>的根 在下面的黃色區域內點可以縮放它</p>
-<div style="display: none;">
- <h2 id="Zoomable_Math" name="Zoomable_Math">Zoomable Math</h2>
- <h3 id="HTML_Content">HTML Content</h3>
- <pre class="brush: html"> &lt;p&gt;
- &lt;math display="block"&gt;
- &lt;mstyle id="zoomableMath" mathbackground="yellow"&gt;
- &lt;mrow&gt;
- &lt;mi&gt;x&lt;/mi&gt;
- &lt;mo&gt;=&lt;/mo&gt;
- &lt;mfrac&gt;
- &lt;mrow&gt;
- &lt;mrow&gt;
- &lt;mo&gt;-&lt;/mo&gt;
- &lt;mi&gt;b&lt;/mi&gt;
- &lt;/mrow&gt;
- &lt;mo&gt;&amp;#xB1;&lt;/mo&gt;
- &lt;msqrt&gt;
- &lt;mrow&gt;
- &lt;msup&gt;
- &lt;mi&gt;b&lt;/mi&gt;
- &lt;mn&gt;2&lt;/mn&gt;
- &lt;/msup&gt;
- &lt;mo&gt;-&lt;/mo&gt;
- &lt;mrow&gt;
- &lt;mn&gt;4&lt;/mn&gt;
- &lt;mi&gt;a&lt;/mi&gt;
- &lt;mi&gt;c&lt;/mi&gt;
- &lt;/mrow&gt;
- &lt;/mrow&gt;
- &lt;/msqrt&gt;
- &lt;/mrow&gt;
- &lt;mrow&gt;
- &lt;mn&gt;2&lt;/mn&gt;
- &lt;mi&gt;a&lt;/mi&gt;
- &lt;/mrow&gt;
- &lt;/mfrac&gt;
- &lt;/mrow&gt;
- &lt;/mstyle&gt;
- &lt;/math&gt;
- &lt;/p&gt;
-
-</pre>
- <h3 id="JavaScript_Content">JavaScript Content</h3>
- <pre class="brush: js"> function zoomToggle()
- {
- if (this.hasAttribute("mathsize")) {
- this.removeAttribute("mathsize");
- } else {
- this.setAttribute("mathsize", "200%");
- }
- }
-
- function load()
- {
- document.getElementById("zoomableMath").
- addEventListener("click", zoomToggle, false);
- }
-
- window.addEventListener("load", load, false);</pre>
-</div>
-<p style="text-align: center;">{{ EmbedLiveSample('Zoomable_Math') }}</p>
-<p>還這邊這個有趣的筆記<math display="block"> <mrow><mo>{</mo> <mtable> <mtr> <mtd> <mrow> <msub> <mi>u</mi> <mi>t</mi> </msub> <mo>+</mo> <msub> <mrow> <mi>f</mi> <mo>(</mo> <mi>u</mi> <mo>)</mo> </mrow> <mi>x</mi> </msub> <mo>=</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>u</mi> <mo stretchy="false">(</mo> <mn>0</mn> <mo>,</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow> <mo>{</mo> <mtable> <mtr> <mtd> <mrow> <msup> <mi>u</mi> <mo>-</mo> </msup> </mrow> </mtd> <mtd> <mrow> <mtext>if </mtext> <mi>x</mi> <mo>&lt;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>u</mi> <mo>+</mo> </msup> </mrow> </mtd> <mtd> <mrow> <mtext>if </mtext> <mi>x</mi> <mo>&gt;</mo> <mn>0</mn> </mrow></mtd></mtr></mtable></mrow></mrow></mtd></mtr></mtable></mrow></math></p>
-<p>或是這個複雜的筆記 <math display="block"> <mrow> <msub> <mover> <mi>Ell</mi> <mo>^</mo> </mover> <mi>Y</mi> </msub> <mo stretchy="false">(</mo> <mi>Z</mi> <mo>;</mo> <mi>z</mi> <mo>,</mo> <mi>τ</mi> <mo stretchy="false">)</mo> <mo>:=</mo> <msub> <mo>∫</mo> <mi>Y</mi> </msub> <mo>(</mo> <munder> <mo>∏</mo> <mi>l</mi> </munder> <mfrac> <mrow> <mrow> <mo>(</mo> <mfrac> <msub> <mi>y</mi> <mi>l</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>)</mo> </mrow> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>y</mi> <mi>l</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>-</mo> <mi>z</mi> <mo>)</mo> </mrow> <msup> <mi>θ</mi> <mo>′</mo> </msup> <mo stretchy="false">(</mo> <mn>0</mn> <mo stretchy="false">)</mo> </mrow> <mrow> <mi>θ</mi> <mo stretchy="false">(</mo> <mo>-</mo> <mi>z</mi> <mo stretchy="false">)</mo> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>y</mi> <mi>l</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> <mo>×</mo> <mo>(</mo> <munder> <mo>∏</mo> <mi>k</mi> </munder> <mfrac> <mrow> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>e</mi> <mi>k</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>-</mo> <mo stretchy="false">(</mo> <msub> <mi>α</mi> <mi>k</mi> </msub> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> <mi>z</mi> <mo>)</mo> </mrow> <mi>θ</mi> <mo stretchy="false">(</mo> <mo>-</mo> <mi>z</mi> <mo stretchy="false">)</mo> </mrow> <mrow> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>e</mi> <mi>k</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>-</mo> <mi>z</mi> <mo>)</mo> </mrow> <mi>θ</mi> <mo stretchy="false">(</mo> <mo>-</mo> <mo stretchy="false">(</mo> <msub> <mi>α</mi> <mi>k</mi> </msub> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> <mi>z</mi> <mo stretchy="false">)</mo> </mrow> </mfrac> <mo>)</mo> </mrow> </math> <math display="block"> <mrow> <mi>π</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑</mo> <mrow> <mi>m</mi> <mo>=</mo> <mn>2</mn> </mrow> <mi>n</mi> </munderover> <mrow> <mo>⌊</mo> <msup> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mrow> <mo minsize="1.5">⌊</mo> <mo>(</mo> <mi>m</mi> <mo>/</mo> <mi>k</mi> <mo>)</mo> <mo minsize="2">/</mo> <mo>⌈</mo> <mi>m</mi> <mo>/</mo> <mi>k</mi> <mo>⌉</mo> <mo minsize="1.5">⌋</mo> </mrow> </mrow> <mo>)</mo> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mo>⌋</mo> </mrow> </mrow> </math> <math display="block"> <mrow> <msub> <mrow> <mo>‖</mo> <mi>ϕ</mi> <mo>‖</mo> </mrow> <mrow> <msubsup> <mi>W</mi> <mi>s</mi> <mi>k</mi> </msubsup> <mo stretchy="false">(</mo> <msub> <mi>Ω</mi> <mi>g</mi> </msub> <mo stretchy="false">)</mo> </mrow> </msub> <mo>≝</mo> <msup> <mrow> <mo>(</mo> <munder> <mo>∑</mo> <mrow> <mo>|</mo> <mi>α</mi> <mo>|</mo> <mo>≦</mo> <mi>k</mi> </mrow> </munder> <msubsup> <mfenced close="‖" open="‖"> <mfrac> <mrow> <msup> <mo>∂</mo> <mi>α</mi> </msup> <mi>ϕ</mi> </mrow> <mrow> <mo>∂</mo> <msup> <mi>ξ</mi> <mi>α</mi> </msup> </mrow> </mfrac> </mfenced> <mrow> <msup> <mi>L</mi> <mi>s</mi> </msup> <mo stretchy="false">(</mo> <msub> <mi>Ω</mi> <mi>g</mi> </msub> <mo stretchy="false">)</mo> </mrow> <mi>s</mi> </msubsup> <mo>)</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mi>s</mi> </mrow> </msup> </mrow> </math></p>
-<p>想要看更多的範例你可以點 <a href="./">MathML Project</a> 頁面的任一連結; 如果你有在編譯自己的版本,可以看一下這個資料夾
- <i>
- mozilla/layout/mathml/tests</i>
- 。</p>
-<p>所以你可以做些什麼呢? 你在 Mozilla 上使用時有沒有遇到任何 MathML 標準是沒正常運作的? 或者是一些煩人的東西你覺得需要改進? 或是你之前做的某些東西沒辦法正常運作了(像是 <em>迴歸</em> )? 如果有遇到這些狀況,快去 BugZilla 回報這些異常吧。BugZilla 世有辦法收錄這些東西的。而且,如果你遇到問題不回報,我們也沒辦法去修正啊?!</p>
-<p>如果你想要讓 Gecko 成為一個更精巧更完善的 MathML 繪製引擎,<a href="https://developer.mozilla.org/en-US/docs/get-involved.html">加入我們</a>。 你的回應可以以 網站上的 MathML 內容呈現、或者去 <a href="https://developer.mozilla.org/en-US/docs/quality/bug-writing-guidelines.html">BugZilla</a> 回報錯誤。或者,如果你能在在程式碼方面提供協助, 來 <a href="http://lxr.mozilla.org/seamonkey/source/layout/mathml/">檢查或改進目前的程式碼</a> , 或者是處理我們<a href="https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/update.html">待處理清單</a>的項目。</p>
-<div id="cke_pastebin" style="position: absolute; top: 1775.63px; width: 1px; height: 1px; overflow: hidden; left: -1000px;">
-  </div>
diff --git a/files/zh-tw/mozilla/performance/about_colon_memory/index.html b/files/zh-tw/mozilla/performance/about_colon_memory/index.html
deleted file mode 100644
index f9895899dd..0000000000
--- a/files/zh-tw/mozilla/performance/about_colon_memory/index.html
+++ /dev/null
@@ -1,188 +0,0 @@
----
-title: 'about:memory'
-slug: 'Mozilla/Performance/about:memory'
-translation_of: 'Mozilla/Performance/about:memory'
----
-<p>about:memory 在Firefox 裡是個特別分頁可讓你你看、存、讀、Firefox 的記憶體處理詳細測量出的差異。 此頁也讓你進行其他記憶體相關的操作例如觸發垃圾回收 (GC) 和循環回收 (CC)、轉存 GC &amp; CC 紀錄和轉存無效堆疊偵測 ( DMD) 報告。 此頁出現在所有版本且不須任何準備即可用它。</p>
-
-<h2 id="如何產生記憶體報告">如何產生記憶體報告</h2>
-
-<p>讓我們假設你想去量測 Firefox 的記憶體使用量。 或許你想自己去調查它、也或許某人要球你使用 about:memory 去產生"記憶體報告"以讓他們可以研究你碰到的問題。 跟著下列步驟走:</p>
-
-<ul>
- <li>在意的那刻 起(例如只要 Firefox's 記憶體用量偏高了) 在網址欄開新分頁且輸入 "about:memory" 並按下 "Enter".</li>
- <li>如果你正在用的交流管道可傳送檔案,例如 Bugzilla 或 email,按在 "Measure and save..." 按鈕。 將打開一個檔案交談窗讓你存記憶體報告成一個你指定的檔案。 (檔名將有 <code>.json.gz</code> 的副檔名) 你可以順便附加或上傳。接受者將能在他們的 Firefox 中看到 about:memory 中的內容。</li>
- <li>如你可用的交流管道只有文字可被傳送,例如在網站的意見條中,按在 "Measure..." 按鈕。 這將會造成 about:memory 中樹狀結構目錄文字產生。這個結構只有文字,所以你可以複製貼上部份或全部的文字到任何種類的文字欄(你不必進行擷圖)。這文字包含一些比 memory reports 檔較少的量測值,但通常已經足夠去診斷問題。不要重複地按下 "Measure..." ,因為這將造成 about:memory 記憶體用量提高,由於它釋放並產生大量的文件物件模型(DOM) 節點。</li>
-</ul>
-
-<p>注意在兩個例子中產生的資料含有私人敏感的細節例如你開在其他分頁的完整清單。如果你不想分享這些訊息,你可以選擇 "anonymize" 核取格,在按下 "Measure and save..." 或 "Measure..."之前。 這將造成私人敏感資料被剝掉,但也可能會造成其他人難以去研究記憶體用量。</p>
-
-<h2 id="從檔案讀取記憶體報告">從檔案讀取記憶體報告</h2>
-
-<p>最簡單的方法從檔案讀取記憶體報告就是用 "Load..." 按鈕。 你也可以用 "Load and diff..." 按鈕去獲得在兩個記憶體報告檔中的差異。</p>
-
-<p>單一記憶體報告檔也可以自動被讀取,當附加一個檔案查詢字串,例如:</p>
-
-<pre>about:memory?file=/home/username/reports.json.gz
-</pre>
-
-<p>這是從其他Firefox裝置系統讀取記憶體報告檔最有用的。</p>
-
-<p>記憶體報告被儲存到壓縮的格式 (gzipped JSON)。 這些檔案可以被直接讀或解壓縮後讀入。</p>
-
-<h2 id="解釋記憶體報告">解釋記憶體報告</h2>
-
-<p>幾乎在 about:memory 中你看到東西都有工具提示的解釋。停留在任何按鈕將看到它作用的描述。停留在任何文字量測值上將看到它意義的描述。</p>
-
-<h3 id="量測基本"><span class="mw-headline" id="Basics">量測基本</span></h3>
-
-<p>大多數量測使用位元組為他們的單位,但某些是百分比計算。</p>
-
-<p>多數量測值表示在樹狀目錄結構中。例如:</p>
-
-<pre> 585 (100.0%) -- preference-service
- └──585 (100.0%) -- referent
- ├──493 (84.27%) ── strong
- └───92 (15.73%) -- weak
- ├──92 (15.73%) ── alive
- └───0 (00.00%) ── dead
-</pre>
-
-<p>枝葉節點表示實際量測值:每個內部節點值是子節點的總和。</p>
-
-<p>樹狀目錄的使用允許量測值分成進一步的目錄、次目錄、次次目錄…….如果需要可到任意深度。一個目錄中所有的量測值不會重疊。</p>
-
-<p>樹狀可以用斜線 '/' 作為分隔符號被描寫。 例如, <code>preference/referent/weak/dead</code> 表示上列中到最後枝葉節點的路徑。</p>
-
-<p>次目錄按它可以被縮起或展開。如果你發現任何特別的樹狀目錄,這可以幫你馬上縮起主根下所有分枝,然後慢慢展開感興趣的。</p>
-
-<h3 id="報告區間_Sections"><span class="mw-headline" id="Sections">報告區間 Sections</span></h3>
-
-<p>記憶體報告依照每個預處理原則、每個區間一個程序被顯示,在每個程序的量測值中,還有更多小區間。</p>
-
-<h4 id="Explicit_Allocations">Explicit Allocations</h4>
-
-<p>這個區間包含一個單一樹狀目錄,叫做 "explicit",量測所有經由表層呼叫(explicit calls)去堆疊配置函數和非堆疊配置函數(例如 <code>mmap</code> and <code>VirtualAlloc</code>)的記憶體。</p>
-
-<p>這裡是瀏覽器區間的例子,分頁打開了 cnn.com、 techcrunch.com、 和 arstechnica.com。不同的次目錄被展開,其他的因展示緣故被縮起。</p>
-
-<pre>191.89 MB (100.0%) -- explicit
-├───63.15 MB (32.91%) -- window-objects
-│ ├──24.57 MB (12.80%) -- top(http://edition.cnn.com/, id=8)
-│ │ ├──20.18 MB (10.52%) -- active
-│ │ │ ├──10.57 MB (05.51%) -- window(http://edition.cnn.com/)
-│ │ │ │ ├───4.55 MB (02.37%) ++ js-compartment(http://edition.cnn.com/)
-│ │ │ │ ├───2.60 MB (01.36%) ++ layout
-│ │ │ │ ├───1.94 MB (01.01%) ── style-sheets
-│ │ │ │ └───1.48 MB (00.77%) -- (2 tiny)
-│ │ │ │ ├──1.43 MB (00.75%) ++ dom
-│ │ │ │ └──0.05 MB (00.02%) ── property-tables
-│ │ │ └───9.61 MB (05.01%) ++ (18 tiny)
-│ │ └───4.39 MB (02.29%) -- js-zone(0x7f69425b5800)
-│ ├──15.75 MB (08.21%) ++ top(http://techcrunch.com/, id=20)
-│ ├──12.85 MB (06.69%) ++ top(http://arstechnica.com/, id=14)
-│ ├───6.40 MB (03.33%) ++ top(chrome://browser/content/browser.xul, id=3)
-│ └───3.59 MB (01.87%) ++ (4 tiny)
-├───45.74 MB (23.84%) ++ js-non-window
-├───33.73 MB (17.58%) ── heap-unclassified
-├───22.51 MB (11.73%) ++ heap-overhead
-├────6.62 MB (03.45%) ++ images
-├────5.82 MB (03.03%) ++ workers/workers(chrome)
-├────5.36 MB (02.80%) ++ (16 tiny)
-├────4.07 MB (02.12%) ++ storage
-├────2.74 MB (01.43%) ++ startup-cache
-└────2.16 MB (01.12%) ++ xpconnect</pre>
-
-<p>某些專家才需要瞭解這裡所有的細節,但有很多東西值得解釋。</p>
-
-<ul>
- <li>這個 "explicit" 值在樹狀圖的根表示所有記憶體經由explicit call 去配置函數。</li>
- <li> "window-objects" 次目錄表示所有 JavaScript 視窗物件, 包括瀏覽器分頁和使用者界面視窗。 例如, "top(http://edition.cnn.com/, id=8)" 次目錄表示分頁打開到 cnn.com,且 "top(chrome://browser/content/browser.xul, id=3)" 表示主瀏覽器 UI 視窗。</li>
- <li>在每個視窗的有次目錄關於 JavaScript ("js-compartment(...)" 和 "js-zone(...)")、 layout、 style-sheets、 the DOM, and other things.</li>
- <li>很清楚的分頁一 cnn.com 用更多記憶體於分頁二 techcrunch.com ,二又用更多記憶體於分頁三 arstechnica.com 。</li>
- <li>次目錄有個名字叫 "(2 tiny)" 是人工節點預設允許不重要的次目錄縮起來。如果在測量前你將額外資訊 "verbose" 核取盒勾起, 所有目錄將完全展開並且沒有人工節點被插入。</li>
- <li> "js-non-window" 次目錄表示 JavaScript 記憶體用量不從視窗來而來自瀏覽器核心。</li>
- <li> "heap-unclassified" 值表示堆疊配置的記憶體( heap-allocated memory) 它是不被任何記憶體記錄列量測的。通常是 "explicit" 的 10--20% 。 如果它偏高,也表示該多加個記憶體紀錄列。無效堆疊偵測 (<a href="/en-US/docs/Mozilla/Performance/DMD" title="Performance/MemShrink/DMD">DMD)</a> 可被用來決定哪些記憶體報告列該被添加。</li>
- <li>有其他量測值有其他內容例如 images 和 workers,和瀏覽器次系統像啟動快取 Startup cache 和 XPConnect.</li>
-</ul>
-
-<p>某些附加元件 add-ons 的記憶體用量有識別性, 像下列例子所示:</p>
-
-<pre>├───40,214,384 B (04.17%) -- add-ons
-│ ├──21,184,320 B (02.20%) ++ {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}/js-non-window/zones/zone(0x100496800)/compartment([System Principal], jar:file:///Users/njn/Library/Application%20Support/Firefox/Profiles/puna0zr8.new/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D.xpi!/bootstrap.js (from: resource://gre/modules/addons/XPIProvider.jsm:4307))
-│ ├──11,583,312 B (01.20%) ++ jid1-xUfzOsOFlzSOXg@jetpack/js-non-window/zones/zone(0x100496800)
-│ ├───5,574,608 B (00.58%) -- {59c81df5-4b7a-477b-912d-4e0fdf64e5f2}
-│ │ ├──5,529,280 B (00.57%) -- window-objects
-│ │ │ ├──4,175,584 B (00.43%) ++ top(chrome://chatzilla/content/chatzilla.xul, id=4293)
-│ │ │ └──1,353,696 B (00.14%) ++ top(chrome://chatzilla/content/output-window.html, id=4298)
-│ │ └─────45,328 B (00.00%) ++ js-non-window/zones/zone(0x100496800)/compartment([System Principal], file:///Users/njn/Library/Application%20Support/Firefox/Profiles/puna0zr8.new/extensions/%7B59c81df5-4b7a-477b-912d-4e0fdf64e5f2%7D/components/chatzilla-service.js)
-│ └───1,872,144 B (00.19%) ++ treestyletab@piro.sakura.ne.jp/js-non-window/zones/zone(0x100496800)</pre>
-
-<p>更多細節值得解釋如下:</p>
-
-<ul>
- <li>某些附加元件以名子被識別,像 Tree Style Tab。 其他的僅用16進位識別字。 你可以去看 about:support 裡哪個添入列特別識別字屬於那類。例如, <code>59c81df5-4b7a-477b-912d-4e0fdf64e5f2</code> 屬於 Chatzilla 。</li>
- <li>所有 JavaScript 記憶體用量由附加元件來的被量測並顯示在次目錄中。</li>
- <li>附加元件使用不同視窗,例如 Chatzilla,這些視窗的記憶體用量將顯示在不同次目錄。</li>
- <li>自附加元件使用 XUL overlays覆蓋的,如 AdBlock Plus, 這些覆蓋的記憶體使用量將不顯示在這個次目錄中; 它將反而在 non-add-on 次目錄且將不像由附加元件所造成的那般是可識別的。</li>
-</ul>
-
-<h4 id="其他量測值">其他量測值</h4>
-
-<p>這個區間包含多目錄,包括許多在 "explicit" 目錄中橫跨的量測值。 例如, 在 "explicit"目錄所有的 DOM 和 layout 量測值是被打散成一個又一個視窗, 但在 "Other Measurements" 這些量測值是整合為由整個瀏覽器來的總和, 如下例所示:</p>
-
-<pre>26.77 MB (100.0%) -- window-objects
-├──14.59 MB (54.52%) -- layout
-│ ├───6.22 MB (23.24%) ── style-sets
-│ ├───4.00 MB (14.95%) ── pres-shell
-│ ├───1.79 MB (06.68%) ── frames
-│ ├───0.89 MB (03.33%) ── style-contexts
-│ ├───0.62 MB (02.33%) ── rule-nodes
-│ ├───0.56 MB (02.10%) ── pres-contexts
-│ ├───0.47 MB (01.75%) ── line-boxes
-│ └───0.04 MB (00.14%) ── text-runs
-├───6.53 MB (24.39%) ── style-sheets
-├───5.59 MB (20.89%) -- dom
-│ ├──3.39 MB (12.66%) ── element-nodes
-│ ├──1.56 MB (05.84%) ── text-nodes
-│ ├──0.54 MB (02.03%) ── other
-│ └──0.10 MB (00.36%) ++ (4 tiny)
-└───0.06 MB (00.21%) ── property-tables</pre>
-
-<p>在這區間的某些目錄量測那些在 "explicit" 目錄中不是橫跨目錄的量測值,例如在上上個例子中的這個 "preference-service" 。</p>
-
-<p>最後, 在這區間結尾是獨立的量測值, 如下例所示:</p>
-
-<pre> 0.00 MB ── canvas-2d-pixels
- 5.38 MB ── gfx-surface-xlib
- 0.00 MB ── gfx-textures
- 0.00 MB ── gfx-tiles-waste
- 0 ── ghost-windows
- 109.22 MB ── heap-allocated
- 164 ── heap-chunks
- 1.00 MB ── heap-chunksize
- 114.51 MB ── heap-committed
- 164.00 MB ── heap-mapped
- 4.84% ── heap-overhead-ratio
- 1 ── host-object-urls
- 0.00 MB ── imagelib-surface-cache
- 5.27 MB ── js-main-runtime-temporary-peak
- 0 ── page-faults-hard
- 203,349 ── page-faults-soft
- 274.99 MB ── resident
- 251.47 MB ── resident-unique
-1,103.64 MB ── vsize</pre>
-
-<p>某些量測值標示如下:</p>
-
-<ul>
- <li>"resident" 常駐記憶體. 實體記憶體用量。 如你想要單一量測值去總計記憶體用量, 這也許是最好的選擇。</li>
- <li>"vsize". 虛擬記憶體用量。 這通常高於任一個其他量測值 (特別在 Mac 上)。 唯有它是問題在 32 位元平台例如 Win32。 也有 "vsize-max-contiguous" (在所有平台上不量測的且在此例中不顯示), 它指出可用虛擬記憶體空間中最大的一塊。 如果這數值很低, 或許不久之後記憶體配置將失敗由於缺乏虛擬位址空間。</li>
- <li>許多繪圖顯示相關量測值 ("gfx-*")。 這些值在平台上是佔大量的。 顯示相關通常是高記憶體用量的來源, 所以這些量測職能幫助偵測這些案例。</li>
-</ul>
-
-<h4 id="系統_System">系統 System</h4>
-
-<p>這區間只顯示在Firefox OS。 它包含全裝置從操作系統所測得值。在其之中, 這些區間有助於精確瞭解裝置的記憶體如何被使用。</p>
-
-<p>......翻譯完雖然瞭解不少,卻僅知哪些資訊可以給改善者參考,要解決使用者記憶體的問題,還是建議各位設計師可以整合One Tab之類的軟體,限制記憶體使用例如最大800MB,如果超過了,依使用者習慣分為100個分頁中有20個維持開啟活動、剩下的逐步變成例如完整保存的網頁檔之類,平時留個分頁籤名字只是看看而已,點到了才載入,就不會讓人難忍受了,也不會吃太多記憶體就依照個人使用狀況自行分配就好,畢竟閒置的除了影像外,很多只是在播放廣告,一點感想。</p>
diff --git a/files/zh-tw/mozilla/performance/index.html b/files/zh-tw/mozilla/performance/index.html
deleted file mode 100644
index f8261ab133..0000000000
--- a/files/zh-tw/mozilla/performance/index.html
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: Performance
-slug: Mozilla/Performance
-tags:
- - NeedsTranslation
- - Performance
- - TopicStub
-translation_of: Mozilla/Performance
----
-<p>被連接到此的這篇文章將幫助你改進效能,不論你是開發 Mozilla 核心碼或附加元件。</p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h3 id="Documentation">Documentation</h3>
-
- <dl>
- <dt><a href="/en/Performance/Reporting_a_Performance_Problem" title="en/Performance/Reporting_a_Performance_Problem">回報性能問題 Rorting a Performance Problem</a></dt>
- <dd>對使用者友善的指導以報告性能問題。不需要開發環境。</dd>
- <dt><a href="/en/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">性能最好的實踐在擴充元件中</a></dt>
- <dd>給擴充元件開發者性能"最好的實踐"指引。</dd>
- <dt><a href="/en/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">測量附加元件啟動效能</a></dt>
- <dd>給附加元件開發者指引如何設定測試環境。</dd>
- <dt><a href="/en/XUL_School/Appendix_A:_Add-on_Performance" title="en/XUL School/Appendix A: Add-on Performance">XUL School: 附加元件效能</a></dt>
- <dd>給附加元件開發者提示去幫他們避免損害應用效能。</dd>
- <dt><a href="/en/Performance/GPU_performance" title="en/GPU performance">GPU 效能</a></dt>
- <dd>當使用GPU時給研究和改進效能的可靠建議</dd>
- </dl>
-
- <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Performance" title="Special:Tags?tag=Performance">查看所有頁面以 "Performance" 標籤的...</a></span></p>
-
- <h3 id="記憶體研究和漏洞偵測工具">記憶體研究和漏洞偵測工具</h3>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/Performance/about:memory">about:memory</a></dt>
- <dd>about:memory 是最輕巧使用工具給量測記憶體用量使用在 Mozilla 程式碼,且是最好出發地。它也讓你進行其他記憶體相關的操作像觸發垃圾回收 (GC) 和循環回收 (CC)、轉存 GC &amp; CC 紀錄和轉存無效堆疊偵測 ( DMD) 報告。 about:memory 是建立在 Firefox's <a href="/en-US/docs/Mozilla/Performance/Memory_reporting">memory reporting</a> 構造上.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/DMD">DMD</a></dt>
- <dd>無效堆疊偵測 (DMD) 是個可識別在about:memory中的量測值問題點,而且可以作各式各樣的一般堆疊研究。</dd>
- <dt><a href="https://areweslimyet.com/">areweslimyet.com</a></dt>
- <dd>areweslimyet.com (又名 AWSY) 是記憶體用和回歸偵測系統。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/BloatView">BloatView</a></dt>
- <dd>BloatView 在配置和引用計數時列印按類別統計資料,且依類別提供記憶體中洩漏的分解總數目。它常用為 Mozilla持續整合測試的一部分。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Refcount_tracing_and_balancing">引用計數追蹤與平衡 </a></dt>
- <dd>引用計數追蹤與平衡是個手段要追蹤由引用計數不正確的使用造成的洩漏。 他們遲緩又不那麼容易使用,且因此大多數適合專家級開發者使用。</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/GC_and_CC_logs">GC and CC logs</a></dt>
- <dd>觸發垃圾回收 (GC) 和循環回收 (CC)紀錄可被產生與分析以不同方式。特別是,他們能幫助瞭解為何特定勿建一直保持存在記憶體。</dd>
- <dt><a href="/en-US/docs/Mozilla/Testing/Valgrind">Valgrind</a></dt>
- <dd><a class="external text" href="http://valgrind.org/" rel="nofollow">Valgrind</a> 是個即時偵測種種記憶體相關的問題含洩漏的工具。 Valgrind 常作為Mozilla's持續整合測試的 <a class="external text" href="/en-US/docs/Valgrind_test_job" rel="nofollow">部份</a>  ,雖然Valgrind的遲緩讓應用範圍受限。</dd>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer#LeakSanitizer">LeakSanitizer</a></dt>
- <dd><span class="external text">LeakSanitizer</span> (又叫 LSAN) 相似於 Valgrind。 但它跑得快一些因為它使用靜態來源碼架構。LSAN常作為Mozilla's持續整合測試的一部分,雖然多數測試執行時它也是 AddressSanitizer (又叫 ASAN) 測試工作的一部分。</dd>
- <dt><a href="http://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Apple tools</a></dt>
- <dd>Apple provides <span class="external text">some tools</span> for Mac OS X that report similar problems to those reported by LSAN and Valgrind. The "leaks" tool is not recommended for use with SpiderMonkey or Firefox, because it gets confused by tagged pointers and thinks objects have leaked when they have not (see <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=390944" rel="nofollow">bug 390944</a>).</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/Leak_Gauge">Leak Gauge</a></dt>
- <dd>Leak Gauge is a tool that can be used to detect certain kinds of leaks in Gecko, including those involving documents, window objects, and docshells.</dd>
- <dt><a href="http://dxr.mozilla.org/mozilla-central/source/memory/replace/logalloc/README">LogAlloc</a></dt>
- <dd>LogAlloc is a tool that dumps a log of memory allocations in Gecko. That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/Memory_Profiler">Memory Profiler</a></dt>
- <dd>The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.</dd>
- </dl>
-
- <p>See also the documentation on <a href="/en-US/docs/Mozilla/Performance/Leak-hunting_strategies_and_tips">Leak-hunting strategies and tips.</a></p>
- </td>
- <td>
- <h3 id="Profiling_and_performance_tools">Profiling and performance tools</h3>
-
- <dl>
- <dt><a href="https://developer.mozilla.org/en-US/docs/Tools/Performance" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Developer Tools Profiler</a></dt>
- <dd>The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.</dd>
- </dl>
-
- <dl>
- <dt><a href="/en/Performance/Profiling_with_the_Built-in_Profiler" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Gecko Profiler Addon</a> {{ gecko_minversion_inline("16.0") }}</dt>
- <dd>The Gecko Profiler Addon is a good tool to start with.</dd>
- <dt><a href="/en/Performance/Profiling_with_Instruments" title="en/Performance/Profiling with Instruments">Profiling with Instruments</a></dt>
- <dd>How to use Apple's Instruments tool to profile Mozilla code.</dd>
- <dt><a href="/en/Performance/Profiling_with_Xperf" title="en/Performance/Profiling with Xperf">Profiling with Xperf</a></dt>
- <dd>How to use Microsoft's Xperf tool to profile Mozilla code.</dd>
- <dt><a href="/en-US/docs/Performance/Profiling_with_Concurrency_Visualizer" title="en/Performance/Profiling with Concurrency Visualizer">Profiling with Concurrency Visualizer</a></dt>
- <dd>How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.</dd>
- <dt><a href="/en/Performance/Profiling_with_Zoom" title="en/Performance/Profiling with Zoom">Profiling with Zoom</a></dt>
- <dd>Zoom is a profiler for Linux done by the people who made Shark</dd>
- <dt><a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> {{ gecko_minversion_inline("2.0") }}</dt>
- <dd>Using <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm" title="en/JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> to measure performance data in your JavaScript code.</dd>
- <dt><a href="/en-US/docs/Performance/Adding_a_new_Telemetry_probe" title="https://developer.mozilla.org/en-US/docs/Performance/Adding_a_new_Telemetry_probe">Adding a new Telemetry probe</a></dt>
- <dd>Information on how to add a new measurement to the Telemetry performance-reporting system</dd>
- <dt><a href="/en/Performance/Profiling_JavaScript_with_Shark" title="en/Performance/Profiling JavaScript with Shark">Profiling JavaScript with Shark</a> {{ gecko_minversion_inline("1.9") }}</dt>
- <dd>How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.</dd>
- <dt><a href="/en/Performance/Profiling_with_Shark" title="en/Performance/Profiling with Shark">Profiling with Shark</a></dt>
- <dd>How to use Apple's Shark tool to profile Mozilla code.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/Investigating_CSS_Performance">Investigating CSS Performance</a></dt>
- <dd>How to figure out why restyle is taking so long</dd>
- </dl>
-
- <h3 id="Power_profiling">Power profiling</h3>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/Performance/Power_profiling_overview">Power profiling overview</a></dt>
- <dd>This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.</dd>
- <dt><code><a href="/en-US/docs/Mozilla/Performance/tools_power_rapl">tools/power/rapl</a></code> (Mac, Linux)</dt>
- <dd><code>tools/power/rapl</code> is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.</dd>
- <dt><code><a href="/en-US/docs/Mozilla/Performance/powermetrics">powermetrics</a></code> (Mac-only)</dt>
- <dd><code>powermetrics</code> is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/TimerFirings_logging">TimerFirings logging</a> (All platforms)</dt>
- <dd>TimerFirings logging is a built-in logging mechanism that prints data on every time fired.</dd>
- <dt><code><a href="/en-US/docs/Mozilla/Performance/dtrace">dtrace</a></code> (Mac-only)</dt>
- <dd><code>dtrace</code> is a powerful kernel instrumentation tool. One of its many features is the ability to instrument wakeups in a high-context fashion.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/Activity_Monitor_and_top">Activity Monitor, Battery Status Menu and <code>top</code></a> (Mac-only)</dt>
- <dd>The battery status menu, Activity Monitor and <code>top</code> are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/Intel_Power_Gadget">Intel Power Gadget</a> (Windows, Mac, Linux)</dt>
- <dd>Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.</dd>
- <dt><code><a href="/en-US/docs/Mozilla/Performance/perf">perf</a></code> (Linux-only)</dt>
- <dd><code>perf</code> is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.</dd>
- <dt><code><a href="/en-US/docs/Mozilla/Performance/turbostat">turbostat</a></code> (Linux-only)</dt>
- <dd><code>turbostat</code> is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.</dd>
- <dt><code><a href="https://01.org/powertop">powertop</a></code> (Linux-only)</dt>
- <dd><code>powertop</code> is an interactive command-line utility that gathers and displays various power-related measurements.</dd>
- </dl>
-
- <h3 id="Related_Topics">Related Topics</h3>
-
- <dl>
- <dd><a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a>, <a href="/en/Extensions" title="en/Extensions">Extensions</a>, <a href="/en/Addons" title="en/Addons">Addons</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
diff --git a/files/zh-tw/mozilla/preferences/index.html b/files/zh-tw/mozilla/preferences/index.html
deleted file mode 100644
index 1169ecabf1..0000000000
--- a/files/zh-tw/mozilla/preferences/index.html
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: Preferences
-slug: Mozilla/Preferences
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Preferences
----
-<p>The preference system makes it possible to store data for Mozilla applications using a key/value pairing system. These articles provide information about how to use the preference system.</p>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
- <dl>
- <dt><a href="/en-US/docs/Preferences/Preferences_system" title="Preferences/Preferences system">Preferences system</a></dt>
- <dd>An introduction to using the preference system in Mozilla.</dd>
- <dt><a href="/en-US/docs/XUL_School/Handling_Preferences" title="XUL School/Handling Preferences">XUL School: Handling preferences</a></dt>
- <dd>The XUL School tutorial chapter on preferences.</dd>
- <dt><a href="/en-US/docs/Preferences/Preference_reference" title="Preferences/Preference_reference">Mozilla preference reference</a></dt>
- <dd>A reference guide to all Mozilla preferences; currently a work in progress.</dd>
- <dt><a href="/en-US/docs/Preferences/A_brief_guide_to_Mozilla_preferences" title="Preferences/A brief guide to Mozilla preferences">A brief guide to Mozilla preferences</a></dt>
- <dd>An introductory guide to where preferences are stored and other useful information about the core preference system.</dd>
- <dt><a href="/en-US/docs/Preferences/Using_preferences_from_application_code" title="Preferences/Using preferences from application code">Using preferences from application code</a> {{gecko_minversion_inline("6.0")}}</dt>
- <dd>Firefox 6 introduced static functions for accessing preferences efficiently from within application code. This API is not available for add-ons, but if you're working on a Gecko application, this API is the preferred way to access preferences.</dd>
- <dt><a href="/en-US/docs/Preferences/Mozilla_networking_preferences" title="Preferences/Mozilla networking preferences">Mozilla networking preferences</a></dt>
- <dd>A guide to key networking-related preferences.</dd>
- <dt><a href="/en-US/docs/Preferences/Mozilla_preferences_for_uber-geeks" title="Preferences/Mozilla preferences for uber-geeks">Mozilla preferences for uber-geeks</a></dt>
- <dd>A guide to preferences that only truly elite geeks should play with.</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/Preferences" title="tag/Preferences">View all pages tagged with "Preferences"...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Examples" name="Examples">Examples</h2>
- <dl>
- <dt><a href="/en-US/docs/Code_snippets/Preferences" title="Code snippets/Preferences">Code snippets</a></dt>
- <dd>Preference-related code snippets.</dd>
- <dt><a href="/en-US/docs/Adding_preferences_to_an_extension" title="Adding preferences to an extension">Adding preferences to an extension</a></dt>
- <dd>How to add preferences to an existing extension.</dd>
- </dl>
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
- <ul>
- <li><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>, <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a>, <a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Developing Mozilla</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
diff --git a/files/zh-tw/mozilla/preferences/preferences_system/index.html b/files/zh-tw/mozilla/preferences/preferences_system/index.html
deleted file mode 100644
index 965cd97480..0000000000
--- a/files/zh-tw/mozilla/preferences/preferences_system/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Preferences system
-slug: Mozilla/Preferences/Preferences_system
-tags:
- - NeedsTranslation
- - Preferences system
- - TopicStub
- - XUL
-translation_of: Mozilla/Preferences/Preferences_system
----
-<p>This document describes Toolkit's preferences system. Using this system it is possible to create preferences windows that display and operate appropriately on various platforms (Windows, MacOS X and GNOME).</p>
-
-<p>The system is implemented through a few <a href="/en/XUL" title="en/XUL">XUL</a> elements and attributes. Reference information about them is available below:</p>
-<div class="moreinfo"> <p><strong><a href="/en-US/docs/Preferences_System">Preferences System</a> documentation:</strong></p> <ul> <li>Introduction: <a href="/en-US/docs/Preferences_System/Getting_Started">Getting Started</a> | <a href="/en-US/docs/Preferences_System/Examples">Examples</a> | <a href="/en-US/docs/Preferences_System/Troubleshooting">Troubleshooting</a></li> <li>Reference: <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/prefwindow" title="prefwindow">prefwindow</a></code> | <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/prefpane" title="prefpane">prefpane</a></code> | <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/preferences" title="preferences">preferences</a></code> | <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/preference" title="preference">preference</a></code> | <a href="/en-US/docs/Preferences_System/New_attributes">XUL attributes</a></li> </ul></div>
-<h3 id="Use">Use</h3>
-<p>Code for a typical preferences window may look like this:</p>
-<pre>&lt;prefwindow id="appPreferences"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;
- &lt;prefpane id="pane1" label="&amp;pane1.title;"&gt;
- &lt;preferences&gt;
- &lt;preference id="pref1" name="pref.name" type="bool"/&gt;
- &lt;/preferences&gt;
-
- .. UI elements that refer to the preferences above, e.g.:
- &lt;checkbox id="check1" preference="pref1"
- label="&amp;check1.label;" accesskey="&amp;check1.accesskey;"/&gt;
- &lt;/prefpane&gt;
-
- &lt;prefpane id="pane2" label="&amp;pane2.title;" src="chrome://uri/to/pane.xul"/&gt;
-&lt;/prefwindow&gt;
-</pre>
-<p>Pane content can be specified inline or an external chrome URI supplied for pane content to be loaded in via a dynamic overlay. You should be careful to read the <a class="external" href="http://en.wikipedia.org/wiki/Human_interface_guidelines" title="http://en.wikipedia.org/wiki/Human_interface_guidelines">HIGs</a> for the platforms you are targeting and use the XUL preprocessor if necessary to set different window titles as appropriate. You should also be careful to specify the width of the window (in em) as appropriate using the preprocessor for each targeted platform, as well as the height (in em) for platforms where the window size does not change as the selected panel is changed (e.g. Windows).</p>
-<h3 id="Usage_in_XULRunner_applications" name="Usage_in_XULRunner_applications">Usage in XULRunner applications</h3>
-<p>When calling openDialog() to open a preferences dialog, "toolbar" should be included in the features string.  Not using "toolbar" will cause the preferences dialog to only display one preference pane.</p>
-<p>Example:</p>
-<pre class="eval">var features = "chrome,titlebar,toolbar,centerscreen,modal";
-window.openDialog(url, "Preferences", features);
-</pre>
-<h3 id="Bugzilla">Bugzilla</h3>
-<p>The component for bugs in the Preferences bindings (but not in Firefox/Thunderbird Options UI) is Toolkit:Preferences (<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Toolkit">file a bug</a> <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;product=Toolkit&amp;component=Preferences&amp;resolution=---&amp;chfieldto=Now">list open bugs</a>)</p>
diff --git a/files/zh-tw/mozilla/preferences/preferences_system/new_attributes/index.html b/files/zh-tw/mozilla/preferences/preferences_system/new_attributes/index.html
deleted file mode 100644
index f583b29b26..0000000000
--- a/files/zh-tw/mozilla/preferences/preferences_system/new_attributes/index.html
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Preference XUL Attributes
-slug: Mozilla/Preferences/Preferences_system/New_attributes
-translation_of: Mozilla/Preferences/Preferences_system/New_attributes
----
-<p> </p>
-<p><code><a href="/en-US/docs/XUL/prefwindow">&lt;prefwindow&gt;</a></code> 裡的 Widgets 可能有下述屬性 (除此以外,尚有標準屬性).</p>
-<h3 id="preference" name="preference">preference</h3>
-<p>Specifies id of the linked <code><a href="/en-US/docs/XUL/preference">&lt;preference&gt;</a></code> element. preference 和 widget 兩者的 <code>value</code> 將保持同步.</p>
-<p>如下例,當 pane 被載入時, textbox 從名稱 extensions.example.mypref 的 preference 來自動初始化它的 <code>value</code> ;反過來說,當使用者改變 textbox 的 value 時,<code>&lt;preference&gt;</code>元素的 value 會同步更新,並將在適當的時候儲存至 preferences system.</p>
-<pre class="eval">&lt;preference id="my_pref" name="extensions.example.mypref" type="unichar"/&gt;
-&lt;textbox preference="my_pref"/&gt;
-</pre>
-<h3 id="preference-editable" name="preference-editable">preference-editable</h3>
-<p>By default, the <code><a href="/en-US/docs/XUL/preference">&lt;preference&gt;</a></code> element will automatically modify the value of a few standard widgets: checkbox, colorpicker, radiogroup, textbox, listitem, listbox, and menulist.</p>
-<p>If you wish it to update the value of an element with different local name, for example your own XBL widget, you need to set the <code>preference-editable="true"</code> attribute on it.</p>
-<p>For your widget to modify the <code>&lt;preference&gt;</code>'s value, you need to make sure a <code>change</code>, <code>command</code>, or <code>input</code> event is fired after the widget's value changes.</p>
-<p><span class="comment">bug # or any testcases ? Note: this does not currently work on the tree widget. It may not work on anything so far (the API says it is to be available in version 1.8).</span></p>
-<h3 id="onsyncfrompreference.2Fonsynctopreference" name="onsyncfrompreference.2Fonsynctopreference">onsyncfrompreference/onsynctopreference</h3>
-<p>Often you will have UI whose construction does not map easily to a given preference type. 例如,你可能有一個 checkbox,當一個整數值是 3 時它被打勾,是 2 時不被打勾。為了初始化這個 UI 元素,你不能依賴預設的 initialization routine,因為這兩個數值對 checkbox 元素來說是無意義的. 你需要寫轉換函數來轉換 preference value 成 UI 元素可用的初始值,並且也轉換 UI 元素的 value 成某些格式來儲存至 preferences file. 這就是 onsyncfrompreference/onsynctopreference 的作用.</p>
-<p><code>onsyncfrompreference</code> 被呼叫,當一個元素從 preferences 被初始化。 明確地說, 當一個 preference 元素的 value 被載入, 所有使用那個 preference 的元素將使他們的 <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">onsyncfrompreference </span><span style="line-height: 1.5;">handler 被呼叫.</span></p>
-<div class="warning">
- Be careful when writing <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">onsyncfrompreference </span><span style="line-height: 1.5;">handlers.  </span><span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">&lt;preference&gt; </span><span style="line-height: 1.5;">elements defined after the preference<em> <strong>element</strong></em>  being dealt with will not yet have their </span><span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">value</span><span style="line-height: 1.5;"> set, so referring to them from the handler will lead to a null result. Reorder the </span><span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">&lt;preference&gt; </span><span style="line-height: 1.5;">elements or directly fetch the preference value via </span><span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">Services.prefs</span></div>
-<p><span style="line-height: 1.5;">If you supply an implementation of this event, your implementation will be invoked during initialization and you can return the value with which to initialize the UI element with, or </span><code style="font-size: 14px;">undefined</code><span style="line-height: 1.5;"> to tell the preferences system to initialize the UI element with the default value (i.e. to attempt to initialize with the preference value). In the above example, you might write the checkbox like this:</span></p>
-<pre>&lt;checkbox preference="foo.bar" onsyncfrompreference="return onsyncfrompreference();"/&gt;
-
-.. script:
-function onsyncfrompreference()
-{
- var preference = document.getElementById("foo.bar");
- // .value === undefined means the preference is set to the default value
- var actualValue = preference.value !== undefined ?
- preference.value : preference.defaultValue;
- // actualValue may be |null| here if the pref didn't have the default value.
- return preference.value == 3;
-
- // If foo.bar was boolean and we wanted to use its value to initialize
- // the checkbox, we could still implement this method if we wanted to
- // perform any other initialization actions at this time.
-}
-</pre>
-<p><code>onsynctopreference</code> is called when preferences are being written - the preferences system asks each element to translate its current state into a value suitable for writing to the specified preference. You can return a special value or <code>undefined</code> to tell the preferences system to use its standard means for obtaining the value. In the above example:</p>
-<pre>&lt;checkbox preference="foo.bar" onsynctopreference="return onsynctopreference();"/&gt;
-.. script:
-function onsynctopreference()
-{
- var checkbox = document.getElementById("checkbox");
- return checkbox.checked ? 3 : 2;
-}
-
-// If foo.bar was boolean and we wanted to use its value to write to
-// preferences, we could still implement this method if we wanted to
-// perform any other initialization actions at this time.
-</pre>
-<div class="moreinfo"> <p><strong><a href="/en-US/docs/Preferences_System">Preferences System</a> documentation:</strong></p> <ul> <li>Introduction: <a href="/en-US/docs/Preferences_System/Getting_Started">Getting Started</a> | <a href="/en-US/docs/Preferences_System/Examples">Examples</a> | <a href="/en-US/docs/Preferences_System/Troubleshooting">Troubleshooting</a></li> <li>Reference: <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/prefwindow" title="prefwindow">prefwindow</a></code> | <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/prefpane" title="prefpane">prefpane</a></code> | <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/preferences" title="preferences">preferences</a></code> | <code><a href="/zh-TW/docs/Mozilla/Tech/XUL/preference" title="preference">preference</a></code> | <a href="/en-US/docs/Preferences_System/New_attributes">XUL attributes</a></li> </ul></div>
diff --git a/files/zh-tw/mozilla/projects/index.html b/files/zh-tw/mozilla/projects/index.html
deleted file mode 100644
index 7e832a9616..0000000000
--- a/files/zh-tw/mozilla/projects/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Projects
-slug: Mozilla/Projects
-tags:
- - Landing
- - Mozilla
- - NeedsContent
- - NeedsTranslation
- - Projects
- - TopicStub
-translation_of: Mozilla/Projects
----
-<p>Below you'll find links to documentation about various Mozilla projects; these are often parts of Firefox or other products, but may also be used in other projects as well.</p>
-<p>{{ LandingPageListSubpages() }}</p>
diff --git a/files/zh-tw/mozilla/projects/nss/getting_started_with_nss/index.html b/files/zh-tw/mozilla/projects/nss/getting_started_with_nss/index.html
deleted file mode 100644
index 83eb55baba..0000000000
--- a/files/zh-tw/mozilla/projects/nss/getting_started_with_nss/index.html
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Getting Started With NSS
-slug: Mozilla/Projects/NSS/Getting_started_with_NSS
-translation_of: Mozilla/Projects/NSS/Getting_started_with_NSS
----
-<h2 id="如何參與NSS">如何參與NSS</h2>
-
-<p>網絡安全服務(NSS)是Mozilla軟件使用的加密算法和安全網絡協議的基礎庫。<br>
- <br>
- 您想參與並幫助我們改善Mozilla Firefox和其他使用NSS的應用程序的核心安全性嗎?我們期待著您的貢獻!<br>
- <br>
- 我們有大量任務等待您關注,我們很樂意協助您確定與您的興趣或技能相匹配的領域。您可以在<a href="/en-US/docs/Mozilla/QA/Getting_Started_with_IRC" title="Mozilla IRC">Mozilla IRC</a>的<a href="irc://irc.mozilla.org/#nss" title="irc://irc.mozilla.org/nss">#nss</a>頻道中找到我們,也可以在<a href="https://lists.mozilla.org/listinfo/dev-tech-crypto/" title="https://lists.mozilla.org/listinfo/dev-tech-crypto/">mozilla.dev.tech.crypto</a>新聞組中提問。</p>
-
-<p>NSS庫及其支持的命令行工具使用C編程語言編寫。它的構建系統和自動化測試基於makefile和bash腳本。</p>
-
-<p>隨著時間的流逝,已經產生了許多描述NSS各個方面的文檔。您可以從以下內容開始:</p>
-
-<ul>
- <li>當前的<a href="/en-US/docs/NSS" title="/ zh-CN / docs / NSS">主要NSS文檔頁面</a>,從中可以鏈接到其他文檔。</li>
- <li>一個<a href="/en-US/docs/Overview_of_NSS" title="/ zh-CN / docs / Overview_of_NSS">總體概述</a>使用NSS和它提供的功能的應用程序。</li>
- <li>高水平<a href="/en-US/docs/An_overview_of_NSS_Internals" title="/ zh-CN / docs / An_overview_of_NSS_Internals">介紹NSS的內部</a>。</li>
- <li>了解有關獲取<a href="/en-US/docs/NSS_Sources_Building_Testing" title="/ en-US / docs / NSS_Sources_Building_Testing">NSS來源,構建和測試的信息。</a></li>
- <li>歸檔的mozilla.org網站上的<a href="https://www-archive.mozilla.org/projects/security/pki/nss/">舊文檔</a>。</li>
-</ul>
-
-<p>(不幸的是,NSS項目目前沒有技術撰稿人,因此我們的文檔沒有我們想要的那樣井井有條。您可以通過更好的組織方式來做出貢獻。)</p>
-
-<h2 id="NSS示例代碼">NSS示例代碼</h2>
-
-<p>由NSS開發人員維護的命令行工具是開始學習如何編寫NSS應用程序的好地方。您可以在子目錄mozilla / security / nss / cmd中找到它們</p>
-
-<p>或看看一些基本的<a href="/docs/Mozilla/Projects/NSS/NSS_Sample_Code">NSS示例代碼</a>。</p>
-
-<p>目前正在開發和審查一組新的樣本,請參閱<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">創建新的NSS樣本</a>。</p>
-
-<p>歡迎您通過以下方式下載示例:hg clone https://hg.mozilla.org/projects/nss; cd nss; hg更新SAMPLES_BRANCH</p>
-
-<h2 id="如何貢獻">如何貢獻</h2>
-
-<p>...(此部分仍在建設中,但是有很多貢獻的機會)</p>
-
-<p>如果您沒有,請先在<a href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org上</a>打開一個bugzilla帳戶。</p>
-
-<p>NSS ::庫組件可解決您要處理的問題。我們維護了一個<a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&amp;keywords_type=allwords&amp;classification=Components&amp;query_format=advanced&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;component=Libraries&amp;product=NSS">標記為“ good-first-bug”</a>的<a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&amp;keywords_type=allwords&amp;classification=Components&amp;query_format=advanced&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;component=Libraries&amp;product=NSS">NSS錯誤</a>列表<a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&amp;keywords_type=allwords&amp;classification=Components&amp;query_format=advanced&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;component=Libraries&amp;product=NSS">,您可以查看這些錯誤</a>。</p>
-
-<h3 id="創建補丁">創建補丁</h3>
-
-<p>請參閱有關<a href="/en-US/docs/NSS_Sources_Building_Testing" title="/ en-US / docs / NSS_Sources_Building_Testing">NSS來源,構建和測試的部分,</a>以開始製作補丁。當您對此感到滿意時,就需要進行代碼審查。</p>
-
-<h3 id="代碼審查">代碼審查</h3>
-
-<p><a href="https://phabricator.services.mozilla.com">http://phabricator.services.mozilla.com/</a>是我們的代碼審查工具,它使用您的Bugzilla帳戶。使用我們的<a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">Phabricator用戶說明上傳補丁進行審核</a>。</p>
-
-<p><a href="https://github.com/mozilla/nss-tools/blob/master/nss-code-review-checklist.yaml">Github上的清單形式列出了</a>一些在代碼審查期間將要評估的項目<a href="https://github.com/mozilla/nss-tools/blob/master/nss-code-review-checklist.yaml">。</a></p>
-
-<p>通過審查後,您的補丁程序可以由NSS小組的成員登陸。您可以在<a href="/en-US/docs/Mozilla/QA/Getting_Started_with_IRC" title="Mozilla IRC">Mozilla IRC</a>的<a href="irc://irc.mozilla.org/#nss" title="irc://irc.mozilla.org/nss">#nss</a>頻道中找到我們。</p>
-
-<p>請注意,我們不會發布未經審查和測試的代碼。代碼僅在具有測試的情況下才有效,而測試僅在它們屬於自動化的一部分時才有效。</p>
diff --git a/files/zh-tw/mozilla/projects/nss/index.html b/files/zh-tw/mozilla/projects/nss/index.html
deleted file mode 100644
index 186df02c73..0000000000
--- a/files/zh-tw/mozilla/projects/nss/index.html
+++ /dev/null
@@ -1,180 +0,0 @@
----
-title: Network Security Services
-slug: Mozilla/Projects/NSS
-tags:
- - JSS
- - NSS
- - NeedsMigration
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Projects/NSS
----
-<p><strong>Network Security Services</strong> (<strong>NSS</strong>) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards.</p>
-
-<p>For detailed information on standards supported, see <a href="/en-US/docs/Overview_of_NSS" title="Overview_of_NSS">Overview of NSS</a>. For a list of frequently asked questions, see the <a href="/en-US/docs/NSS_FAQ" title="NSS_FAQ">FAQ</a>.</p>
-
-<p>NSS is available under the Mozilla Public License. For information on downloading NSS releases as tar files, see <a href="https://developer.mozilla.org/en-US/docs/NSS_Sources_Building_Testing">Download PKI Source</a>.</p>
-
-<p>If you're a developer and would like to contribute to NSS, you might want to read the documents <a href="/en-US/docs/An_overview_of_NSS_Internals" title="/en-US/docs/An_overview_of_NSS_Internals">highlevel overview of internal details of NSS</a> and <a href="/en-US/docs/Getting_Started_With_NSS" title="/en-US/docs/Getting_Started_With_NSS">getting started with NSS</a>.</p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
-
- <h3 id="Background_Information">Background Information</h3>
-
- <dl>
- <dt><a href="/en-US/docs/Overview_of_NSS">Overview of NSS</a></dt>
- <dd>Provides a brief summary of NSS and its capabilities.</dd>
- <dt><a href="/en-US/docs/NSS_FAQ">NSS FAQ</a></dt>
- <dd>Answers basic questions about NSS.</dd>
- <dt><a href="/en-US/docs/Introduction_to_Public-Key_Cryptography">Introduction to Public-Key Cryptography</a></dt>
- <dd>Explains the basic concepts of public-key cryptography that underlie NSS.</dd>
- <dt><a href="/en-US/docs/Introduction_to_SSL">Introduction to SSL</a></dt>
- <dd>Introduces the SSL protocol, including information about cryptographic ciphers supported by SSL and the steps involved in the SSL handshake.</dd>
- </dl>
-
- <h3 id="Getting_Started">Getting Started</h3>
-
- <dl>
- <dt><a href="/en-US/docs/NSS/NSS_Releases" title="NSS_releases">NSS Releases</a></dt>
- <dd>This page contains information about the current and past releases of NSS.</dd>
- <dt><a href="/en-US/docs/NSS_Sources_Building_Testing">Get the source code and Build it</a></dt>
- <dd>Instructions on how to build NSS on the different supported platforms.</dd>
- <dt><a href="/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Get Mozilla Source Code Using Mercurial</a></dt>
- <dd>Information about with working with Mercurial.</dd>
- <dt><a href="/en-US/docs/Mozilla/Developer_guide/Source_Code/CVS">Get Mozilla Source Code Using CVS (deprecated)</a></dt>
- <dd>Old deprecated CVS documentation.</dd>
- </dl>
-
- <h3 id="NSS_APIs">NSS APIs</h3>
-
- <dl>
- <dt><a href="/en-US/docs/Introduction_to_Network_Security_Services">Introduction to Network Security Services</a></dt>
- <dd>Provides an overview of the NSS libraries and what you need to know to use them.</dd>
- <dt><a href="NSS/SSL_functions">NSS SSL Public Functions</a></dt>
- <dd>Summarizes the SSL APIs exported by the NSS shared libraries.</dd>
- <dt><a href="/en-US/docs/NSS_reference">NSS SSL Reference</a></dt>
- <dd>API used to invoke SSL operations.</dd>
- <dt><a href="NSS/NSS_API_GUIDELINES">NSS API Guidelines</a></dt>
- <dd>Explains how the libraries and code are organized, and guidelines for developing code (naming conventions, error handling, thread safety, etc.)</dd>
- <dt><a href="NSS/nss_tech_notes">NSS Technical Notes</a></dt>
- <dd>Links to NSS technical notes, which provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.</dd>
- </dl>
-
- <h3 id="Tools_testing_and_other_technical_details">Tools, testing, and other technical details</h3>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/Projects/NSS/Building">Build Instructions for NSS</a></dt>
- <dd>Describe how to check out and build NSS releases.</dd>
- </dl>
-
- <dl>
- <dt><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Developer_Tutorial">NSS Developer Tutorial</a></dt>
- <dd>How to make changes in NSS. Coding style, maintaining ABI compatibility.</dd>
- </dl>
-
- <dl>
- <dt><a href="NSS/Tools">NSS Tools</a></dt>
- <dd>Tools for developing, debugging, and managing applications that use NSS.</dd>
- <dt><a href="NSS/NSS_Sample_Code">Sample Code</a></dt>
- <dd>Demonstrates how NSS can be used for cryptographic operations, certificate handling, SSL, etc.</dd>
- <dt><a href="NSS/NSS_Third-Party_Code">Third-Party Code</a></dt>
- <dd>A list of third-party code included in the NSS library.</dd>
- <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">NSS 3.2 Test Suite</a></dt>
- <dd><strong>Archived version.</strong> Describes how to run the standard NSS tests.</dd>
- <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">NSS Performance Reports</a></dt>
- <dd><strong>Archived version.</strong> Links to performance reports for NSS 3.2 and later releases.</dd>
- <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a></dt>
- <dd><strong>Archived version.</strong> Lists the cryptographic algorithms used by NSS 3.11.</dd>
- <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">NSS 3.1 Loadable Root Certificates</a></dt>
- <dd><strong>Archived version.</strong> Describes the scheme for loading root CA certificates.</dd>
- <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt>
- <dd><strong>Archived version.</strong> General format of the cert7.db database.</dd>
- </dl>
-
- <h3 id="PKCS_11_information">PKCS #11 information</h3>
-
- <ul>
- <li><a href="/en-US/docs/PKCS11" title="PKCS11">Documentation on PKCS #11 modules</a></li>
- <li><a href="/en-US/docs/PKCS11_Implement">Implementing PKCS #11 for NSS</a></li>
- <li><a href="/en-US/docs/PKCS11_Module_Specs" title="PKCS11_Module_Specs">The strings NSS uses to load PKCS #11 modules</a></li>
- <li><a href="/en-US/docs/PKCS11_FAQ">PKCS #11 FAQ</a></li>
- <li><a href="/en-US/docs/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li>
- <li><a href="https://www-archive.mozilla.org/projects/security/pki/pkcs11/">PKCS #11 Conformance Testing - Archived version</a></li>
- </ul>
-
- <dl>
- </dl>
-
- <h3 id="CA_certificates_pre-loaded_into_NSS">CA certificates pre-loaded into NSS</h3>
-
- <ul>
- <li><a href="https://www.mozilla.org/projects/security/certs/policy/">Mozilla CA certificate policy</a></li>
- <li><a href="https://wiki.mozilla.org/CA/Included_Certificates">List of pre-loaded CA certificates</a>
- <ul>
- <li>Consumers of this list must consider the trust bit setting for each included root certificate. <a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">More Information</a>, <a href="https://github.com/agl/extract-nss-root-certs">Extracting roots and their trust bits</a></li>
- </ul>
- </li>
- </ul>
-
- <dl>
- </dl>
-
- <h3 id="NSS_is_built_on_top_of_Netscape_Portable_Runtime_NSPR">NSS is built on top of Netscape Portable Runtime (NSPR)</h3>
-
- <dl>
- <dt><a href="NSPR">Netscape Portable Runtime</a></dt>
- <dd>NSPR project page.</dd>
- <dt><a href="/en-US/docs/Mozilla/Projects/NSPR/Reference">NSPR Reference</a></dt>
- <dd>NSPR API documentation.</dd>
- </dl>
-
- <h3 id="Additional_Information">Additional Information</h3>
-
- <ul>
- <li><a href="/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Using the window.crypto object from JavaScript</a></li>
- <li><a href="/en-US/docs/HTTP_Delegation" title="HTTP_Delegation">Delegation of HTTP download for OCSP</a></li>
- <li><a href="/en-US/docs/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li>
- <li><a href="/en-US/docs/NSS_Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">NSS Certificate Download Specification</a></li>
- <li><a href="/en-US/docs/NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">FIPS Mode - an explanation</a></li>
- <li><a href="/en-US/docs/NSS_Key_Log_Format" title="NSS Key Log Format">Format of key log files</a></li>
- <li>View <a href="/en-US/docs/tag/NSS" title="/en-US/docs/tag/NSS">all NSS-related articles on MDN</a></li>
- </ul>
-
- <h3 id="Planning">Planning</h3>
-
- <p>Information on NSS planning can be found at <a class="external" href="https://wiki.mozilla.org/NSS">wiki.mozilla.org</a>, including:</p>
-
- <ul>
- <li><a class="external" href="https://wiki.mozilla.org/FIPS_Validation">FIPS Validation</a></li>
- <li><a class="external" href="https://wiki.mozilla.org/NSS:Roadmap">NSS Roadmap page</a></li>
- <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">NSS Improvement Project</a></li>
- </ul>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">Community</h2>
-
- <ul>
- <li>View Mozilla Security forums...</li>
- </ul>
-
- <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p>
-
- <ul>
- <li>View Mozilla Cryptography forums...</li>
- </ul>
-
- <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p>
-
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
-
- <ul>
- <li><a href="/en-US/docs/Security" title="Security">Security</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
diff --git a/files/zh-tw/mozilla/projects/rhino/index.html b/files/zh-tw/mozilla/projects/rhino/index.html
deleted file mode 100644
index 9167cbfaac..0000000000
--- a/files/zh-tw/mozilla/projects/rhino/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Rhino
-slug: Mozilla/Projects/Rhino
-tags:
- - JavaScript
- - Mozilla
- - NeedsTranslation
- - NeedsUpdate
- - Rhino
- - TopicStub
-translation_of: Mozilla/Projects/Rhino
----
-<p><img alt="Image:rhino.jpg" class="internal" src="/@api/deki/files/832/=Rhino.jpg"></p>
-
-<p><span class="seoSummary"><strong>Rhino</strong> is an open-source implementation of <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> written entirely in Java. It is typically embedded into Java applications to provide scripting to end users. It is embedded in J2SE 6 as the default Java scripting engine.</span></p>
-
-<h4 id="Rhino_downloads" name="Rhino_downloads">Rhino downloads</h4>
-
-<p>How to <a class="internal" href="/en/RhinoDownload" title="en/RhinoDownload">get source and binaries</a>. </p>
-
-<h4 id="Rhino_documentation" name="Rhino_documentation">Rhino documentation</h4>
-
-<p><a href="/en/Rhino_documentation" title="en/Rhino_documentation">Information on Rhino</a> for script writers and embedders.</p>
-
-<h4 id="Rhino_help" name="Rhino_help">Rhino help</h4>
-
-<p><a href="/en/Rhino/Community" title="en/Rhino/Community">Some resources</a> if you get stuck.</p>
diff --git a/files/zh-tw/mozilla/projects/rhino/license/index.html b/files/zh-tw/mozilla/projects/rhino/license/index.html
deleted file mode 100644
index 951430039e..0000000000
--- a/files/zh-tw/mozilla/projects/rhino/license/index.html
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Rhino license
-slug: Mozilla/Projects/Rhino/License
-translation_of: Mozilla/Projects/Rhino/License
----
-<p><font><font>Rhino可在開源許可下使用。</font></font></p>
-
-<h2 id="MPL.2FGPL_License" name="MPL.2FGPL_License"><font><font>MPL / GPL許可</font></font></h2>
-
-<p><font><font>Rhino的大部分源代碼都是在</font></font><a class="external" href="http://www.mozilla.org/MPL/"><font><font>MPL 1.1 / GPL 2.0</font></font></a><font><font>許可下提供的。</font></font></p>
-
-<h2 id="License_for_portions_of_the_Rhino_debugger" name="License_for_portions_of_the_Rhino_debugger"><font><font>部分Rhino調試器的許可證</font></font></h2>
-
-<p><font><font>此外,一些文件(目前是toolsrc / org / mozilla / javascript / tools / debugger / treetable /的內容)在以下許可下可用:</font></font></p>
-
-<pre><font><font> *版權所有1997,1998 Sun Microsystems,Inc。保留所有權利。</font></font><font><font>
- *</font></font><font><font>
- *重新分發和使用源和二進制形式,有或沒有</font></font><font><font>
- *修改,如果滿足以下條件,則允許</font></font><font><font>
- *符合:</font></font><font><font>
- *</font></font><font><font>
- * - 源代碼的重新分發必須保留上述版權</font></font><font><font>
- *通知,此條件清單和以下免責聲明。</font></font><font><font>
- *</font></font><font><font>
- * - 二進制形式的再分發必須複製上述版權</font></font><font><font>
- *通知,此條件清單和以下免責聲明</font></font><font><font>
- *隨分發提供的文件和/或其他材料。</font></font><font><font>
- *</font></font><font><font>
- * - Sun Microsystems的名稱和名稱</font></font><font><font>
- *貢獻者可用於支持或推廣衍生產品</font></font><font><font>
- *未經事先書面許可,不得使用本軟件。</font></font><font><font>
- *</font></font><font><font>
- *本軟件由版權所有者和貢獻者“提供</font></font><font><font>
- *“是”以及任何明示或暗示的擔保,包括但不限於,</font></font><font><font>
- *對適銷性和特定適用性的暗示保證</font></font><font><font>
- *目的不承擔任何責任。</font><font>在任何情況下都不應該是版權所有者或</font></font><font><font>
- *貢獻者對任何直接,間接,偶然,特殊的,</font></font><font><font>
- *示範性或後續性損害(包括但不限於,</font></font><font><font>
- *購買替代商品或服務; </font><font>丟失使用,數據或</font></font><font><font>
- *利潤; </font><font>或商業中斷)然而,導致和任何理論</font></font><font><font>
- *責任,無論是合同,嚴格責任還是侵權(包括</font></font><font><font>
- *疏忽或以其他方式)以任何方式使用此產品</font></font><font><font>
- *軟件,即使被告知此類損害的可能性。</font></font>
-</pre>
-
-<hr>
-<p><a href="/User:Norrisboyd" title="用戶:Norrisboyd"><font><font>Norrisboyd</font></font></a><font><font> 2008年4月14日06:16(PDT)</font></font></p>
diff --git a/files/zh-tw/mozilla/qa/bug_writing_guidelines/index.html b/files/zh-tw/mozilla/qa/bug_writing_guidelines/index.html
deleted file mode 100644
index 57d1cc41db..0000000000
--- a/files/zh-tw/mozilla/qa/bug_writing_guidelines/index.html
+++ /dev/null
@@ -1,246 +0,0 @@
----
-title: Bug writing guidelines
-slug: Mozilla/QA/Bug_writing_guidelines
-tags:
- - 錯誤回報
-translation_of: Mozilla/QA/Bug_writing_guidelines
----
-<div class="note">
-<p><strong>If you need help with Mozilla software (for example with Firefox, Seamonkey or Thunderbird), use one of the available <a href="http://www.mozilla.org/support/">support options</a>.</strong> Do not edit this page!</p>
-</div>
-
-<p><span class="seoSummary">This page assumes you'd like to contribute to the Mozilla project by collecting enough information to enter a useful bug report in Bugzilla, the Mozilla bug tracking system.</span> Thank you!</p>
-
-<p>If you're new to reporting bugs, you may want to try getting help from the more experienced contributors. See the Community section on the <a href="/en-US/docs/QA">QA</a> page for pointers. If you're going to report a Firefox bug, you can also get assistance in the <span style="font-family: monospace;">#firefox</span> channel on <a href="irc://irc.mozilla.org/firefox">irc.mozilla.org</a>. For other projects (e.g., Thunderbird, SeaMonkey)  you can find the appropriate channel on <a href="https://wiki.mozilla.org/IRC">IRC</a>.</p>
-
-<h2 id="如何回報錯誤">如何回報錯誤</h2>
-
-<h3 id="每次回報一個錯誤">每次回報一個錯誤</h3>
-
-<p>如此一來能夠有效率地處理每個錯誤。</p>
-
-<h3 id="其他需要您注意的事項">其他需要您注意的事項</h3>
-
-<ol>
- <li>釐清如何 <strong>重現您遇到的錯誤</strong>:
-
- <ul>
- <li>如果能夠 <a href="#Writing_precise_steps_to_reproduce">完整描述重現錯誤過程</a> —太棒了! — 您將提供有收穫的錯誤回報。</li>
- <li>有時能夠重現問題,但不確定是用什麼特定的方法,則您需要提供有幫助的<a href="#specific-types">額外資訊。</a></li>
- <li>如果無法重現問題,回報該問題可能沒有太大的幫助,除非在發現錯誤時,您有獨特的發現。</li>
- </ul>
- </li>
- <li>檢查軟體是否已更新至最新版本。建議先測試開發中版本來確認錯誤是不是早就修正(例如:<a href="http://www.mozilla.com/en-US/firefox/channel/">Firefox Beta, Aurora</a>, 或是走在科技前端的 <a class="link-https" href="https://nightly.mozilla.org/">Nightly</a>)</li>
- <li>When reporting a Firefox bug, first check if you can reproduce the bug in a <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">new Firefox profile</a>. If the bug only happens in your existing profile, try to figure out what <a href="https://support.mozilla.org/en-US/kb/troubleshoot-extensions-themes-to-fix-problems">settings, extensions</a>, or <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">files in your profile</a> are needed to reproduce the bug.
- <ul>
- <li>If the bug seems egregious (i.e. obviously affecting a large portion of users), there's probably something unusual about your setup that's a necessary part of the steps to reproduce the bug. You have much better chances of figuring it out than a developer who does not have access to your system.</li>
- <li>If the bug falls into one of <a href="#specific-types">specific types of bugs listed in a section below</a>, it may still be useful even if you can't reproduce it in a new Firefox profile.</li>
- </ul>
- </li>
- <li>Open the <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?format=guided">Enter a new bug</a> form, which will guide you through most of the bug reporting process:
- <ul>
- <li>Create a Bugzilla account if you don't have one already, select the product having the bug.</li>
- <li>Enter a <strong>clear unique summary</strong> as <a href="#Writing_a_clear_summary">described below</a>; check if the bug has already been reported (if you want to be more thorough, there's an advanced guide on <a href="/en-US/docs/Screening_duplicate_bugs">screening duplicate bugs</a>).</li>
- <li>Provide <strong>precise steps to reproduce</strong>, <strong>expected results</strong> and <strong>actual results</strong> as <a href="#Writing_precise_steps_to_reproduce">described in the following section</a>.</li>
- <li>Provide additional information (also <a href="#Providing_additional_information">described below</a>), especially if you can't reproduce the bug in a new profile; and/or by reporting a <strong>crash</strong>, <strong>memory usage</strong>, <strong>performance</strong>, <strong>regression</strong> bug; or if the problem is with a specific web site.</li>
- </ul>
- </li>
- <li>如果遇到多個錯誤時,請分開一個一個回報。</li>
-</ol>
-
-<h2 id="簡短明確描述問題">簡短明確描述問題</h2>
-
-<p>您會怎麼用大概十幾個字描述問題? 開發者會先看到這一部分文字。</p>
-
-<p>好的錯誤回報會快速且清楚說明錯誤。這是用來解釋問題的來龍去脈,請不要給予針對問題的建議。</p>
-
-<ul>
- <li>好: "在複製檔案時按取消會讓檔案管理員當掉"</li>
- <li>不夠好: "當掉了"</li>
-</ul>
-
-<ul>
- <li>好: "Down-arrow scrolling doesn't work in &lt;textarea&gt; styled with overflow:hidden"</li>
- <li>不夠好: "瀏覽器應該要可以正常顯示我的網站"</li>
-</ul>
-
-<h2 id="描述可以重現問題的詳細的步驟">描述可以重現問題的詳細的步驟</h2>
-
-<p>How can a developer reproduce the bug on his or her own computer?</p>
-
-<p>Steps to reproduce are the <strong>most important part of any bug report</strong>. If a developer is able to reproduce the bug, the bug is very likely to be fixed. If the steps are unclear, it might not even be possible to know whether the bug has been fixed.</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th>在問題回報裡應該寫些什麼 ?</th>
- <th>好的例子(描述細節)</th>
- <th>
- <p>不好的例子(敘述籠統)</p>
- </th>
- </tr>
- <tr>
- <td>
- <p>說說你能不能控制卡 bug 的時機。</p>
-
- <p>可以故意卡、偶爾遇到、不能控制。</p>
- </td>
- <td>照著下面的步驟做問題就出現了:</td>
- <td> </td>
- </tr>
- <tr>
- <td>
- <p>描述如何命令 Firefox 做你想做的事。</p>
- </td>
- <td>
- <p>1. 點桌面捷徑打開 Firefox<br>
- 2. 按下 Cmd+N (Windows 系統按 Ctrl+N )來打開新的視窗。</p>
-
- <p>3. 把 <a class="link-https" href="https://mail.google.com/" rel="freelink">https://mail.google.com/</a> 複製貼上到網址列然後按Enter。</p>
- </td>
- <td>在新視窗打開Gmail</td>
- </tr>
- <tr>
- <td>
- <p>照著步驟做後,清楚地描述<strong>你看到的 (實際) 結果</strong> 和 <strong>預期結果。</strong> 請將這兩項分開來寫。</p>
- </td>
- <td><strong>預期結果</strong>: 我的收件匣正常顯示。<br>
- <strong>實際結果</strong>: 我的收件匣顯示 '您的瀏覽器不支援 Cookies (錯誤 -91)'。</td>
- <td>
- <p> </p>
-
- <p>"網頁跑不出來"</p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="提供額外的資訊">提供額外的資訊</h2>
-
-<p>The following information is requested for most bug reports. You can save time by providing this information below the Expected results. If you need to attach multiple files, you can do so after submitting the report.</p>
-
-<h3 id="For_specific_types_of_bugs"><a name="specific-types">For specific types of bugs</a></h3>
-
-<p>If you are reporting a <strong>crash bug</strong>, please <a href="/en-US/docs/How_to_get_a_stacktrace_for_a_bug_report">include a Breakpad ID or attach stack trace</a>, and include the crash signature in the bug summary as well as in the <strong>Crash Signature</strong> field.</p>
-
-<p>If you are reporting a <strong>memory use or leak bug</strong>, please <a href="/en-US/docs/Mozilla/Performance/about:memory">attach the output of about:memory</a>. Ideally, find steps to reproduce an increase in what is shown in about:memory (even after clicking the "Minimize memory usage" button at the bottom). If you have trouble finding steps to reproduce, try the Firefox Support page titled <a href="https://support.mozilla.org/en-US/kb/firefox-uses-too-much-memory-ram">Firefox Uses Too Much Memory (Ram) - How to Fix</a>. If you are a C++ developer, <a class="link-https" href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance">more precise tools are available</a>.</p>
-
-<p>If you are reporting a <strong>bug about slowness or high CPU usage</strong>, please <a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">provide a link to the performance profile in the bug</a>.</p>
-
-<p>If you are reporting a <strong>hang</strong> (beachball on OS X or "not responding" on Windows), please follow the instructions in <a href="/en-US/docs/How_to_Report_a_Hung_Firefox">How to Report a Hung Firefox</a>.</p>
-
-<p>If you are reporting a bug involving a <strong>Flash hang</strong>, please visit <a href="https://wiki.mozilla.org/Flash/Hang_Debugging">https://wiki.mozilla.org/Flash/Hang_Debugging</a> to learn how to provide useful information for developers.</p>
-
-<p>If you are reporting a <strong>bug involving a specific web page</strong>, please try to make a <a href="/en-US/docs/Reducing_testcases">reduced testcase</a> and attach it to the bug report. If you don't have time or expertise, please report the issue to <a href="https://webcompat.com/">webcompat.com</a> instead, where our volunteers will do this for you.</p>
-
-<p>If the bug was <strong>recently introduced</strong>, finding a <a href="http://mozilla.github.io/mozregression/quickstart.html">regression window</a> can help identify the cause of the bug.</p>
-
-<p><a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html#intermittent">What if my bug seems "random" or "intermittent"?</a></p>
-
-<h3 id="For_most_Firefox_bugs">For most Firefox bugs</h3>
-
-<p>You should provide the following information for most Firefox bugs.</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th>What should you include in a bug report?</th>
- <th>Example</th>
- </tr>
- <tr>
- <td>Indicate if the problem can be reproduced using a <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">new Firefox profile</a> and any changes you need to make in order to reproduce.</td>
- <td>The problem can be reproduced in a new profile, but only if Preferences -&gt; Privacy &amp; Security -&gt; Tracking Protection is selected.</td>
- </tr>
- <tr>
- <td>If you can only reproduce with an existing profile try to figure out what <a href="https://support.mozilla.org/en-US/kb/troubleshoot-extensions-themes-to-fix-problems">settings, extensions</a>, or <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">files in your profile</a> are needed to reproduce the bug. If you skip the step, <a href="https://support.mozilla.org/en-US/kb/use-troubleshooting-information-page-fix-firefox">save the troubleshooting information from about:support</a> to a file and attach it to the bug report.</td>
- <td>I can't reproduce in a new profile, about:support information from the offending profile is attached.</td>
- </tr>
- <tr>
- <td>
- <p>Indicate if the problem can be reproduced using the <a href="https://nightly.mozilla.org/">latest Nightly build</a>. Include the <strong>Build ID</strong> from <a href="https://support.mozilla.org/en-US/kb/use-troubleshooting-information-page-fix-firefox">about:support</a>.</p>
-
- <p>If possible, test using the new Firefox profile you created. If you need to test the Nightly build with your regular profile, you might want to <a href="https://support.mozilla.org/en-US/kb/back-and-restore-information-firefox-profiles">back up the profile</a> first, since the pre-release build may corrupt your data.</p>
- </td>
- <td>The problem can be reproduced on the latest Nightly (Build ID 20170416100136).</td>
- </tr>
- </tbody>
-</table>
-
-<p> </p>
-
-<div class="originaldocinfo">
-<h2 id="Original_document_information">Original document information</h2>
-
-<ul>
- <li>Author(s): Jesse Ruderman, Gervase Markham</li>
- <li>Other Contributors: Eli Goldberg, Claudius Gayle, Jan Leger, Felix Miata, Peter Mock, Chris Pratt, Chris Yeh, and others.</li>
-</ul>
-</div>
-
-<p> </p>
-
-<hr>
-<h2 id="Advanced">Advanced</h2>
-
-<h3 id="Finding_the_correct_product_and_component" name="Finding_the_correct_product_and_component"><strong style="font-weight: bold;">Finding the correct product and component</strong></h3>
-
-<p>You will be asked to categorize your bug into a "product" and a "component" within that product, in order to direct your report to the correct developers.</p>
-
-<p>If you're using Firefox, the bug is most likely in "Firefox", "Toolkit", or "Core".</p>
-
-<ul>
- <li><a class="link-https" href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Firefox">List of components in the "Firefox" product</a> - Most parts of Firefox that you interact with directly</li>
- <li><a class="link-https" href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Toolkit">List of components in the "Toolkit" product</a> - Interface widgets and some frontend features</li>
- <li><a class="link-https" href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Core">List of components in the "Core" product</a> - Web page rendering, networking, etc.</li>
-</ul>
-
-<p>When in doubt, search for similar bugs and see which component they are in.</p>
-
-<p>If none of the components seem appropriate, look for a "General" component in the most appropriate product.</p>
-
-<h3 id="General_Outline_of_a_Bug_Report">General Outline of a Bug Report</h3>
-
-<div class="note">
-<p>Most of the following article has been merged into this page from QMO: How to write a proper bug</p>
-</div>
-
-<ul>
- <li><strong>Summary</strong>: How would you describe the bug in less than 60 characters? It should quickly and uniquely identify a bug report as well as explain the problem, not your suggested solution. Good: "Canceling a File Copy dialog crashes File Manager" Bad: "Software crashes" Bad: "Browser should work with my web site"</li>
- <li><strong>Component</strong>: In which sub-part of the software does it exist? This field is a requirement to submit any bug report. Click the word "Component" to see a description of each component. If none seems appropriate, highlight the "General" component.</li>
- <li><a name="version"> </a><strong>Version</strong>: select the earliest Version with what the problem can be reproduced:
- <ul>
- <li>Developers will use that information to narrow down the commit what introduced a regression</li>
- <li>QA staff needs that information to distinguish bugs with similar symptoms, but different roots.
- <ul>
- <li>Bugs that definitively appeared in different <em>Product</em> <em>Versions</em> probably will have different roots</li>
- <li>But Bugs that started with the same <em>Product</em> <em>Version</em> probably are DUPLICATEs</li>
- </ul>
- </li>
- <li><em>Trunk</em> does not allow any useful query. We have <em>Trunk</em> version bugs from beginning of the project until today, no common characteristics at all what can be tagged with this version. Avoid Trunk, replace it by precise information with what version the problem appeared if you can.</li>
- </ul>
- </li>
- <li><strong>OS</strong>: On which operating system (OS) did you find it? (E.g. Linux, Windows, and Mac.) Example: "<em>If you know the bug happens on more than one type of operating system, choose "All". If your OS isn't listed, choose Other".</em></li>
- <li><strong>Description</strong>: The details of your problem report, including:
- <ul>
- <li><u>Overview</u>: This is a larger detailed restatement of the summary. An example would be: <em>"Drag-selecting any page crashes Mac builds in the NSGetFactory function"</em>.</li>
- <li><u>Build Id</u>: To find this either go to the "about:support" page via the location bar or, if you have MozQA's <a href="https://addons.mozilla.org/en-US/firefox/addon/nightly-tester-tools/">Nightly Tester Tools</a> extension, then go to Tools | Nightly Tester Tools and select the option that contains the output of the build Id. It should look something like this: <em>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0 ID:20150330004006 CSet: 9e57e9776571"</em>.</li>
- <li><u>Additional Builds and Platforms</u>: Whether or not the bug takes place on other platforms (or browsers, if applicable). It should look something like this: <em>"Doesn't Occur On Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0 ID:20150330004006 CSet: 9e57e9776571"</em>.</li>
- </ul>
- </li>
- <li><strong>Steps to Reproduce</strong>: Minimized, easy-to-follow steps that will trigger the bug. If they're necessary, make sure to include any special setup steps. A good example of this would look like the following:<br>
- 1) View any web page. (I used the default sample page, http://www.google.com/).<br>
- 2) Drag-select the page. Specifically, while holding down the mouse button, drag the mouse pointer downwards from any point in the browser's content region to the bottom of the browser's content region.</li>
- <li><strong>Actual Results</strong>: What the application did after performing the above steps. An example would be: <em>The application crashed.</em></li>
- <li><strong>Expected Results</strong>: What the application should have done, were the bug not present. An example would be: <em>The window should scroll downwards. Scrolled content should be selected. Or, at least, the application should not crash.</em></li>
-</ul>
-
-<p> </p>
-
-<div class="originaldocinfo">
-<h4 id="Original_document_information_2">Original document information</h4>
-
-<ul>
- <li>Author(s): Aakash Desai</li>
- <li>Date last modified: June 3, 2013 at 2:41 am PST</li>
-</ul>
-</div>
diff --git a/files/zh-tw/mozilla/qa/index.html b/files/zh-tw/mozilla/qa/index.html
deleted file mode 100644
index 99a8a38dd2..0000000000
--- a/files/zh-tw/mozilla/qa/index.html
+++ /dev/null
@@ -1,251 +0,0 @@
----
-title: 'QA: Quality assurance at Mozilla'
-slug: Mozilla/QA
-tags:
- - Landing
- - NeedsTranslation
- - QA
- - Testing
- - TopicStub
-translation_of: Mozilla/QA
----
-<p>The Mozilla Quality Assurance (QA) team drives software quality assurance activities across Mozilla and plays a key role in releasing a diverse range of software products on schedule. Within each project in Mozilla, we work to explore new features, write and execute tests, uncover and file bugs, build and maintain tools, collect and analyze metrics, and support the release world-class products that promote the open Web.</p>
-
-<p><span class="seoSummary">Here you'll find articles and tools to help you gear up to join the QA team testing Firefox to ensure that each release is as good as it can be.</span></p>
-
-<h2 id="Get_started">Get started</h2>
-
-<ul class="card-grid">
- <li><span>How can I help test?</span>
-
- <p>There are lots of ways for you to become a <a href="/en-US/docs/Mozilla/QA/How_can_I_help_test_">community contributor</a> to the Mozilla quality team.</p>
- </li>
- <li><span>Bugs</span>
- <p>All Mozilla projects use <a href="https://bugzilla.mozilla.org/">Bugzilla</a> to track bugs. Learn how to <a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">report a bug</a> and get familiar with <a href="/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla">what to do in Bugzilla</a>.</p>
- </li>
- <li><span>Events</span>
- <p>Get involved in our weekly <a href="/en-US/docs/Mozilla/QA/Bug_Verification_Day">Bug Verification Day</a> or <a href="/en-US/docs/Mozilla/QA/Bug_Triage_Day">Bug Triage Day</a>. You may even <a href="/en-US/docs/Mozilla/QA/Organizing_a_Testday">organize a testday</a> for your local community!</p>
- </li>
- <li><span>IRC</span>
- <p><a href="/en-US/docs/Mozilla/QA/Getting_Started_with_IRC">Get started with IRC</a>, the primary form of communication for members of the Mozilla community.</p>
- </li>
-</ul>
-
-<h2 id="Bugs">Bugs</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<h3 id="Reporting_bugs">Reporting bugs</h3>
-
-<dl>
- <dt><a href="/en-US/docs/Mozilla/Bugzilla">Bugzilla</a></dt>
- <dd>All Mozilla projects use <a href="https://bugzilla.mozilla.org/">Bugzilla</a> to track bugs. You will need to <a href="https://bugzilla.mozilla.org/createaccount.cgi">create an account with Bugzilla</a> in order to report bugs and triage them.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Bug writing guidelines</a></dt>
- <dd>The more effectively a bug is reported, the more likely that an engineer will actually fix it. By following these guidelines, you can help ensure that your bugs stay at the top of the Mozilla engineers' heap, and get fixed.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/A_Bugs_Life" title="/en-US/docs/Mozilla/QA/A_Bugs_Life">A Bug's Life</a></dt>
- <dd>This tutorial will give an overview of what happens in the states that a bug will go through as well as how it will go from one to the next within its total life. It also explains the meaning of flags/keywords used in QA.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Filing_Crash_Bugs">Filing Crash Bugs</a></dt>
- <dd>This document lists guidelines and tips on how to file bug reports for crashes in a way that helps in debugging and fixing the reported issue.</dd>
-</dl>
-</div>
-
-<div class="section">
-<h3 id="Triaging_bugs">Triaging bugs</h3>
-
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Confirming_unconfirmed_bugs" title="en-US/docs/Confirming unconfirmed bugs">Confirming unconfirmed bugs</a></dt>
- <dd>Identify useful bug reports and close the rest.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox" title="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox">Triaging Bugs for Firefox</a></dt>
- <dd>Information about the entire bug triaging process – from processing incoming bugs to narrowing down the steps to reproducing bugs.</dd>
- <dt><a href="/en-US/docs/Screening_duplicate_bugs">Screening duplicate bugs</a></dt>
- <dd>Help get bugs fixed faster by screening incoming reports for duplicates.</dd>
- <dt><a href="/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla">General Guidelines</a></dt>
- <dd>What to do and what not to do in Bugzilla.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Manual_testing">Manual testing</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Test_Case_Writing_Primer">Manual Test Case Writing Primer</a></dt>
- <dd>How to write proper manual test cases</dd>
-</dl>
-</div>
-
-<div class="section">
-<dl>
- <dt><a href="https://testrail.stage.mozaws.net/">TestRail</a></dt>
- <dd>Mozilla QA's manual test cases reside in TestRail. You will need an LDAP account in order to login and execute test cases. Learn more on the <a href="https://wiki.mozilla.org/TestEngineering/Testrail">TestRail wiki page</a>.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Automated_testing">Automated testing</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Automated_testing" title="/en-US/docs/Mozilla/QA/Automated_testing">Automated testing at Mozilla</a></dt>
- <dd>Documentation about creating and using automated tests for Mozilla code.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Running_automated_tests">Running automated tests</a></dt>
- <dd>
- <p>This page lists the steps required to run Mozilla's automated test suites.</p>
- </dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Developing_tests" title="en-US/docs/Developing_Tests">Developing tests</a></dt>
- <dd>Ensure that future changes to Mozilla don't break things that currently work correctly.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Avoiding_intermittent_oranges" title="en-US/docs/QA/Avoiding intermittent oranges">Avoiding intermittent test failures</a></dt>
- <dd>Suggestions for ways to make your tests more reliable, thereby helping to avoid random, intermittent test failures.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Test_Verification">Test Verification</a></dt>
- <dd>When a changeset adds a new test, or modifies an existing test, the test verification (TV) test suite performs additional testing to help find intermittent failures in the modified test as quickly as possible.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Mozharness_FAQ">Mozharness FAQ</a></dt>
- <dd>Answers to common questions about Mozharness.</dd>
-</dl>
-</div>
-
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Robocop" title="/en-US/docs/Mozilla/QA/Robocop">Robocop</a></dt>
- <dd>Robocop is the automated testing system used for Firefox for Android. Learn its <a href="/en-US/docs/Mozilla/QA/Robocop/Code_style_guidelines">code style guidelines</a></dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Marionette">Marionette</a></dt>
- <dd>Get started with Marionette UI testing.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/web-platform-tests">web-platform-tests</a></dt>
- <dd>Learn how to use the industry standard, cross-browser, cross-platform <a href="http://testthewebforward.org/docs/">Web runtime testing system</a> from the <a href="https://www.w3.org/">W3C</a> used by Mozilla and others to ensure browser interoperability.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/external-media-tests">External Media Tests</a></dt>
- <dd>Get started testing HTML5-based video elements using VideoPuppeteer, a <a href="/en-US/docs/Mozilla/QA/Marionette">Marionette</a>- -based test suite used to test sites like YouTube and Netflix.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Chrome_tests">Chrome tests</a></dt>
- <dd>A chrome test is basically a <a href="https://developer.mozilla.org/en-US/docs/Mochitest" title="en/Mochitest">Mochitest</a> running with chrome privileges.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Firefox_QE">Firefox QE</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox" title="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox">Triaging Bugs for Firefox</a></dt>
- <dd>Information about the entire bug triaging process – from processing incoming bugs to narrowing down the steps to reproduce a bug.</dd>
-</dl>
-
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Tips_and_Tricks">Tips and Tricks</a></dt>
- <dd>These tips and tricks will make your life easier when you are testing.</dd>
-</dl>
-<a href="/en-US/docs/Downloading_Nightly_or_Trunk_Builds">Downloading Nightly or Trunk Builds</a>
-
-<dl>
- <dd>Every 24 hours, a "nightly" build is created that testers all over the world download and test, reporting as they go along on any bugs that hit them. </dd>
-</dl>
-</div>
-
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/Command_Line_Options">Command Line Options</a></dt>
- <dd>Command line options are used to specify various startup options for Firefox.</dd>
- <dt><a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">Reporting a Performance Problem</a></dt>
- <dd>This article will guide you in reporting a performance problem using the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler extension</a>.</dd>
- <dt><a href="/en-US/docs/Mozilla/Projects/Crash_reporting">Crash reporting</a></dt>
- <dd>Firefox ships with an open-source crash reporting system.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Firefox_for_Android">Firefox for Android</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Mobile_Firefox">Mobile Firefox</a></dt>
- <dd>Firefox for Android is the mobile version of Firefox with a native Android look and feel.</dd>
- <dt><a href="/en-US/Firefox_for_Android/Compatibility_Testing">Compatibility Testing</a></dt>
- <dd>Help us identify websites that do not work well in Firefox by reporting the specific issues that you find in your investigation.</dd>
-</dl>
-</div>
-
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Fennec_Android:_Logging_with_the_Android_Debug_and_Logcat">Logging with the Android Debug Bridge and Logcat</a></dt>
- <dd>This article will provide a walkthrough in downloading and setting up an environment to which one can gain access to and view Android system logs.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Firefox_Mobile:_Enabling_the_Error_Console">Enabling the Error Console</a></dt>
- <dd>See the Mozilla Hacks article on <a class="external external-icon" href="https://hacks.mozilla.org/2012/08/remote-debugging-on-firefox-for-android/">Remote Debugging on Firefox for Android</a> for web content. If you need to debug the Firefox browser itself use Android's <a class="external external-icon" href="http://developer.android.com/tools/help/logcat.html">adb logcat</a>.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Firefox_OS">Firefox OS</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<h3 id="Manual_testing_2">Manual testing</h3>
-
-<dl>
- <dt><a href="/en-US/Firefox_OS/Simulator_vs_Emulator_vs_Device">Simulator vs Emulator vs Device</a></dt>
- <dd>These are three basic options when it comes to getting a Firefox OS environment in order to work on, or developing for, Firefox OS.</dd>
- <dt><a href="/en-US/Firefox_OS/Debugging">Debugging</a></dt>
- <dd>Discover the different tools at your disposal to debug your Firefox OS code.</dd>
- <dt><a href="/en-US/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Reporting Bugs</a></dt>
- <dd>This article provides a guide to filing bugs against the Firefox OS project, including Gaia and B2G.</dd>
-</dl>
-</div>
-
-<div class="section">
-<h3 id="Platform_(Gecko)">Platform (Gecko)</h3>
-
-<dl>
- <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing">Automated Testing</a></dt>
- <dd>Learn various aspects of testing Firefox OS, including running different tests, automation, and result reporting and tracking.</dd>
- <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Gaia Performance Tests</a></dt>
- <dd>This article provides information about running performance tests on Gaia, as well as how to create new tests.</dd>
- <dt><a href="/en-US/Firefox_OS/Platform/Feature_support_chart">Feature Support Chart</a></dt>
- <dd>There are several different builds of Firefox OS you can download or build for yourself, and there are some differences between the types of features available on each device.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Web_QA">Web QA</h2>
-
-<div class="row topicpage-table">
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Reducing_testcases" title="en-US/docs/Reducing testcases">Reducing testcases</a></dt>
- <dd>Improve bug reports by turning broken web pages into simple testcases, which can help developers understand the bug and can also be used for creating automated tests.</dd>
- <dt><a href="/en-US/docs/Mozilla/QA/Managing_Web_QA_XFails">Managing XFails</a></dt>
- <dd>One of the ongoing tasks of the Web QA department is managing xfails. This document will explain what xfails are, and describe the steps one can take to investigate and update them.</dd>
-</dl>
-</div>
-
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Mozilla/QA/Running_Web_QA_automated_tests">Running Automated Tests</a></dt>
- <dd>So you’re interested in contributing to Mozilla Web QA automation projects but don’t know where to start? This doc will help you get up and running a set of tests locally.</dd>
-</dl>
-</div>
-</div>
-
-<hr>
-<h2 id="Glossary">Glossary</h2>
-
-<div class="section">
-<dl>
- <dt><a href="/en-US/docs/Glossary/Smoke_Test">Smoke Test</a></dt>
- <dd></dd>
-</dl>
-</div>
-
-<h2 id="See_also">See also</h2>
-
-<ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-quality">Mailing list</a></li>
- <li><a href="https://quality.mozilla.org/">Blog</a></li>
- <li><a href="/en-US/docs/tag/QA" title="en-US/docs/tag/QA">View all documents tagged QA</a></li>
- <li><a href="/en-US/docs/tag/QA:Tools" title="en-US/docs/tag/QA:Tools">View all documents tagged QA:Tools</a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/rust/index.html b/files/zh-tw/mozilla/rust/index.html
deleted file mode 100644
index 28f46deb33..0000000000
--- a/files/zh-tw/mozilla/rust/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Rust 程式語言
-slug: Mozilla/Rust
-translation_of: Mozilla/Rust
----
-<p><img alt="Rust logo" src="https://www.rust-lang.org/logos/rust-logo-blk.svg" style="float: left; height: 150px; width: 150;"><a href="https://www.rust-lang.org/">Rust</a> 是個由 Mozilla 及社區志願者所建立的開源系統程式語言,旨在幫助開發者建立快速安全,並充分使用當代多核心處理器強大功能的程式。它會阻止記憶體區段錯誤(segmentation fault)並確保執行緒(thread)安全、並使用簡單明瞭的語法。</p>
-
-<p>另外,Rust 提供了 zero-cost abstractions, move semantics, guaranteed memory safety, threads with no data races, trait-based generics, pattern matching, type inference, and efficient C bindings, with a minimum runtime size.</p>
-
-<p>要學習 Rust,可以透過:</p>
-
-<ul>
- <li>觀看下面的影片,仔細觀察 Rust 提供的功能與優勢。</li>
- <li>閱讀網路上的電子書 <em><a href="https://doc.rust-lang.org/book/">The Rust Programming Language</a></em>。</li>
- <li>下載 Rust 編譯器、看看範例、學習你可以、希望在 <a href="https://www.rust-lang.org/">Rust 官方網站</a> 學到的一切。</li>
-</ul>
-
-<h2 id="Rust_and_the_future_of_systems_programming">Rust and the future of systems programming</h2>
-
-<p>{{EmbedYouTube("8EPsnf_ZYU0")}}</p>
-
-<h2 id="Unlocking_the_power_of_parallelism_with_Rust">Unlocking the power of parallelism with Rust</h2>
-
-<p>{{EmbedYouTube("cNeIOt8ZdAY")}}</p>
-
-<h2 id="Rust_for_web_developers">Rust for web developers</h2>
-
-<p>{{EmbedYouTube("FfoXFnzZbBM")}}</p>
-
-<h2 id="Safe_systems_programming_with_Rust">Safe systems programming with Rust</h2>
-
-<p>{{EmbedYouTube("P3sfNGtpuxc")}}</p>
-
-<h2 id="Growing_the_Rust_community">Growing the Rust community</h2>
-
-<p>{{EmbedYouTube("duv0tuPAnO0")}}</p>
-
-<h2 id="Putting_Rust_into_production_at_Mozilla">Putting Rust into production at Mozilla</h2>
-
-<p>{{EmbedYouTube("2RhbYpgVpg0")}}</p>
diff --git a/files/zh-tw/mozilla/tech/index.html b/files/zh-tw/mozilla/tech/index.html
deleted file mode 100644
index f9682e62e1..0000000000
--- a/files/zh-tw/mozilla/tech/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Mozilla technologies
-slug: Mozilla/Tech
-tags:
- - Landing
- - Mozilla
- - NeedsTranslation
- - Reference
- - TopicStub
- - XUL
-translation_of: Mozilla/Tech
----
-<p>Mozilla has several technologies used as components of its projects. These are documented here. (flesh out this text).</p>
-<p>{{LandingPageListSubpages}}</p>
diff --git a/files/zh-tw/mozilla/tech/xpcom/reference/index.html b/files/zh-tw/mozilla/tech/xpcom/reference/index.html
deleted file mode 100644
index 29d07953d6..0000000000
--- a/files/zh-tw/mozilla/tech/xpcom/reference/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: XPCOM reference
-slug: Mozilla/Tech/XPCOM/Reference
-tags:
- - Add-ons
- - Extensions
- - Landing
- - Mozilla
- - NeedsTranslation
- - Reference
- - TopicStub
- - XPCOM
-translation_of: Mozilla/Tech/XPCOM/Reference
----
-<p>This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</p>
-
-<div class="warning">
-<p><strong>WebExtensions are becoming the new standard for creating add-ons. </strong>Eventually support for XPCOM add-ons will be deprecated, so you should begin to investigate porting your add-ons to use the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> API, and <a href="https://mzl.la/webext-feature-needed">report any missing functionality</a> so we can be sure to address your concerns. Work is ongoing on WebExtension capabilities, so your input will help prioritize and plan the work. To learn more about the kinds of changes that will be needed, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparison with XUL/XPCOM extensions</a>. In addition, any binaries you use will then need to be converted for use with the WebExtensions <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">native messaging</a> API, or compiled using <a href="https://webassembly.github.io/">WebAssembly</a> or <a href="/en-US/docs/Mozilla/Projects/Emscripten">Emscripten</a>.</p>
-</div>
-
-<div class="note">
-<p>If you're working on a module in the Mozilla codebase that's compiled with the <code>MOZILLA_INTERNAL_API</code> flag set, some of these APIs -- the string functions and classes in particular -- are not the ones you should be using. See the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Internal_strings">XPCOM internal string guide</a> for documentation of the internal string API used within the Mozilla codebase.</p>
-</div>
-
-<p>{{LandingPageListSubpages}}</p>
-
-<p>Many XPCOM pages return an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Core_functions/nsresult">nsresult</a></code>. Prior to Gecko 19 {{geckoRelease(19)}}, this was an integer that simply returned an error code. It is now a strongly typed <code>enum</code> when XPCOM is built using a C++11 compiler. This causes compile-time errors to occur when improper values are returned as nsresult values, thereby making it easier to catch many bugs.</p>
diff --git a/files/zh-tw/mozilla/tech/xpcom/reference/interface/index.html b/files/zh-tw/mozilla/tech/xpcom/reference/interface/index.html
deleted file mode 100644
index d098cf8402..0000000000
--- a/files/zh-tw/mozilla/tech/xpcom/reference/interface/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: XPCOM Interface Reference
-slug: Mozilla/Tech/XPCOM/Reference/Interface
-tags:
- - NeedsTranslation
- - TopicStub
- - XPCOM
- - XPCOM Interface Reference
-translation_of: Mozilla/Tech/XPCOM/Reference/Interface
----
-<p><span class="seoSummary">This is a reference to the XPCOM interfaces provided by the Mozilla platform.</span></p>
-
-<div class="cols-3">{{tree('','1')}}</div>
-
-<h2 id="See_also" name="See_also">See also</h2>
-
-<ul>
- <li><a href="/en-US/docs/XPCOM_Interface_Reference_group" title="XPCOM_Interface_Reference_group">Interfaces grouped by function</a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/tech/xpcom/reference/interface/nsicontentpolicy/index.html b/files/zh-tw/mozilla/tech/xpcom/reference/interface/nsicontentpolicy/index.html
deleted file mode 100644
index 6ed47b6c80..0000000000
--- a/files/zh-tw/mozilla/tech/xpcom/reference/interface/nsicontentpolicy/index.html
+++ /dev/null
@@ -1,491 +0,0 @@
----
-title: nsIContentPolicy
-slug: Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy
-translation_of: Archive/Mozilla/nsIContentPolicy
----
-<p><font><font>{{IFSummaryStart(“DOM /鹼/ nsIContentPolicy.idl”,“編寫腳本”)}}接口用於實現內容策略的機制。</font><font>這個接口的實現可以被用來控制各種類型的外的線的內容,或者某些類型的內聯內容的處理的負荷。{{IFSummaryEnd(“nsIContentPolicyBase”,42,“1.0”)}}</font></font></p>
-
-<p><font><font>可以觀察到,正在通過實施{{接口(“nsIContentPolicy”)}}加載到瀏覽器中的內容。</font><font>如果你正在開發一個內容感知的插件(攔截廣告或改變內容的外觀,例如)該接口是非常有用的,或者如果你想停止或允許用戶瀏覽的網址。</font></font></p>
-
-<p><font><font>{{WarningStart()}}不要阻塞調用者在你的實施方式{{manch(“shouldLoad”)}}或{{manch(“為ShouldProcess”)}}(例如,通過啟動一個對話框,以提示用戶東西)。“){{WarningEnd()}}</font></font></p>
-
-<div class="note">
-<p><strong><font><font>注:</font></font></strong><font><font>在現實中,很多這種接口在{{接口(“nsIContentPolicyBase”)}}接口定義,但現在,直到有人有時間來拆東西記錄在這裡。</font></font></p>
-</div>
-
-<h2 id="Method_overview" name="Method_overview"><font><font><font><font>方法概述</font></font></font></font></h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td><code>short <a href="#shouldLoad()">shouldLoad</a>(in unsigned long aContentType, in nsIURI aContentLocation, in nsIURI aRequestOrigin, in nsISupports aContext, in ACString aMimeTypeGuess, in nsISupports aExtra, in nsIPrincipal aRequestPrincipal);</code></td>
- </tr>
- <tr>
- <td><code>short <a href="#shouldProcess()">shouldProcess</a>(in unsigned long aContentType, in nsIURI aContentLocation, in nsIURI aRequestOrigin, in nsISupports aContext, in ACString aMimeType, in nsISupports aExtra, in nsIPrincipal aRequestPrincipal);</code></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Constants" name="Constants"><font><font><font><font>常量</font></font></font></font></h2>
-
-<h3 id="內容類型"><font><font>內容類型</font></font></h3>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header"><font><font>不變</font></font></td>
- <td class="header"><font><font><font><font>值</font></font></font></font></td>
- <td class="header"><font><font><font><font>描述</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_OTHER</code></td>
- <td><code>1</code></td>
- <td><font><font>指示內容,其類型是未知的,或者是不感興趣的一個有限的使用情況之外。</font><font>在一般情況下,你應該盡量不要使用這種類型的,除非沒有其他人是合適的。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_SCRIPT</code></td>
- <td><code>2</code></td>
- <td><font><font>表示的可執行</font></font><code>script</code><font><font>(例如JavaScript)。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_IMAGE</code></td>
- <td><code>3</code></td>
- <td><font><font><font><font>指示</font></font></font></font><code>image</code><font><font><font><font>(例如,{{HTMLElement的(“IMG”)}}的元素)。</font></font></font><font><font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_STYLESHEET</code></td>
- <td><code>4</code></td>
- <td><font><font>指示</font></font><code>stylesheet</code><font><font>(例如,{{HTMLElement的(“風格”)}}的元素)。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_OBJECT</code></td>
- <td><code>5</code></td>
- <td><font><font>代表一個普通</font></font><code>object</code><font><font>(插件,處理內容通常這一類下降)。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_DOCUMENT</code></td>
- <td><code>6</code></td>
- <td><font><font>表示DOM {{domxref(“文件”)}}在頂層(即,直接在瀏覽器標籤)。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_SUBDOCUMENT</code></td>
- <td><code>7</code></td>
- <td>
- <p><font><font>表示包含在另一個一{{domxref(“文件”)}} </font></font><code>document</code><font><font>(</font><font>例如,{{HTMLElement的(“IFRAME”)}}和{{HTMLElement的(“幀”)}}的元素)。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></p>
-
- <div class="note">
- <p><strong><font><font>注:</font></font></strong><font><font>壁虎使用</font></font><code>TYPE_INTERNAL_FRAME</code><font><font>,並</font></font><code>TYPE_INTERNAL_IFRAME</code><font><font>以內部辨別其差異。</font><font>這些類型映射到</font></font><code>TYPE_SUBDOCUMENT</code><font><font>被傳遞到內容政策實施前,不應外壁虎代碼中使用。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_REFRESH</code></td>
- <td><code>8</code></td>
- <td>
- <p><font><font>指示定時刷新。</font></font></p>
-
- <p><font><font>{{manch(“shouldLoad”)}}將永遠不會得到這個,因為它並不代表內容被加載(通過刷新觸發的實際負載將通過{{manch(“shouldLoad”)}}如預期)。</font></font></p>
- <font><font>{{manch(“為ShouldProcess”)}}將收到此為,例如{{HTMLElement的(“元”)}}刷新元件和HTTP刷新頭。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_XBL</code></td>
- <td><code>9</code></td>
- <td><font><font>指示XBL綁定請求,觸發或者通過{{cssxref(“ - MOZ結合”)}} CSS屬性或{{domxref(“Document.addBinding()”)}}方法。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_PING</code></td>
- <td><code>10</code></td>
- <td><font><font>表示通過在{{HTML元素(“A”)}}使用元素{{htmlattrxref(“平”,“一”)}}屬性的點擊觸發的平。</font><font>{{gecko_minversion_inline(“1.9”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_XMLHTTPREQUEST</code></td>
- <td><code>11</code></td>
- <td><font><font>表示{{domxref(“XMLHttpRequest的”)}}。</font><font>也用於{{domxref(“Document.load()”)}} {{gecko_minversion_inline(“1.9”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_OBJECT_SUBREQUEST</code></td>
- <td><code>12</code></td>
- <td><font><font>表示由一個插件的請求。</font><font>{{gecko_minversion_inline(“1.9”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_DTD</code></td>
- <td><code>13</code></td>
- <td><font><font>表示通過XML加載的DTD </font></font><code>document</code><font><font>。</font><font>{{gecko_minversion_inline(“1.9”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_FONT</code></td>
- <td><code>14</code></td>
- <td><font><font>指示經由{{cssxref(“@字體面”)}}規則加載的字體。</font><font>{{gecko_minversion_inline(“1.9.1”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_MEDIA</code></td>
- <td><code>15</code></td>
- <td><font><font>表示視頻或音頻負載。</font><font>{{gecko_minversion_inline(“1.9.1”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_WEBSOCKET</code></td>
- <td><code>16</code></td>
- <td><font><font><font><font>表示</font></font></font></font><a href="/en-US/docs/Web/API/WebSocket_API"><font><font><font><font>的WebSocket的</font></font></font></font></a><font><font><font><font>負荷。</font></font></font><font><font><font>{{gecko_minversion_inline(“11”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_CSP_REPORT</code></td>
- <td><code>17</code></td>
- <td><font><font>表示一個</font></font><a href="/en-US/docs/Web/Security/CSP"><font><font>內容安全策略</font></font></a><font><font>報告。</font><font>{{gecko_minversion_inline(“20”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_XSLT</code></td>
- <td><code>18</code></td>
- <td><font><font>表示一個樣式表轉換。</font><font>{{gecko_minversion_inline(“27”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_BEACON</code></td>
- <td><code>19</code></td>
- <td><font><font>表示信標後。</font><font>{{gecko_minversion_inline(“30”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_FETCH</code></td>
- <td><font><font><font><font>20</font></font></font></font></td>
- <td><font><font>指示通過發起的負載的{{domxref(“GlobalFetch.fetch()”)}}方法,其可作為在全球都{{domxref(“窗口”)}}和{{domxref(“工人”)} }上下文。</font><font>{{gecko_minversion_inline(36)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_IMAGESET</code></td>
- <td><font><font><font><font>21</font></font></font></font></td>
- <td><font><font>指示要加載的{{HTML元素(“IMG”)}}(與該{{htmlattrxref(“srcset”,“IMG”)}}屬性或{{HTMLElement的(“圖片”)}}。{{gecko_minversion_inline(請求36)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_WEB_MANIFEST</code></td>
- <td><font><font><font><font>22</font></font></font></font></td>
- <td><font><font>指示要加載一個Web清單的請求。</font><font>{{gecko_minversion_inline(41)}}</font></font></td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_SCRIPT</code></td>
- <td><font><font><font><font>23</font></font></font></font></td>
- <td>
- <p><font><font>用於表示使用{{HTMLElement的(“腳本”)}}元素加載的腳本的內部常數。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font>重要說明:</font></font></strong><font><font>此類型映射到</font></font><code>TYPE_SCRIPT</code><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_WORKER</code></td>
- <td><font><font><font><font>24</font></font></font></font></td>
- <td>
- <p><font><font>用於表示通過專用工人加載的腳本的內部常數。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_SCRIPT</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_SHARED_WORKER</code></td>
- <td><font><font><font><font>25</font></font></font></font></td>
- <td>
- <p><font><font>用於表示通過共享工人加載的腳本的內部常數。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_SCRIPT</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_EMBED</code></td>
- <td><font><font><font><font>26</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTML元素(“嵌入”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_OBJECT</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_OBJECT</code></td>
- <td><font><font><font><font>27</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTMLElement的(“對象”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_OBJECT</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_FRAME</code></td>
- <td><font><font><font><font>28</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTML元素(“幀”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_SUBDOCUMENT</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_IFRAME</code></td>
- <td><font><font><font><font>29</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTML元素(“IFRAME”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_SUBDOCUMENT</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_AUDIO</code></td>
- <td><font><font><font><font>30</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTML元素(“音頻”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_MEDIA</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_VIDEO</code></td>
- <td><font><font><font><font>31</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTML元素(“視頻”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_MEDIA</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>TYPE_INTERNAL_TRACK</code></td>
- <td><font><font><font><font>32</font></font></font></font></td>
- <td>
- <p><font><font>內部常量用於表示從{{HTML元素(“軌道”)}}元素加載的內容。</font><font>{{gecko_minversion_inline(41)}}</font></font></p>
-
- <div class="warning">
- <p><strong><font><font><font><font>重要說明:</font></font></font></font></strong><font><font><font><font>此類型映射到</font></font></font></font><code>TYPE_MEDIA</code><font><font><font><font>傳遞給內容政策實施之前,不宜在室外的Gecko內核代碼中使用。</font></font></font></font></p>
- </div>
- </td>
- </tr>
- <tr>
- <td><code>REJECT_REQUEST</code></td>
- <td><code>-1</code></td>
- <td><font><font>從{{manch(“shouldLoad”)}}或{{manch(“為ShouldProcess”)}}返回如果負載或處理請求是基於所述請求的細節拒絕。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>REJECT_TYPE</code></td>
- <td><code>-2</code></td>
- <td>
- <p><font><font>從{{manch(“shouldLoad”)}}或{{manch(“為ShouldProcess”)}}返回如果負載/過程僅僅基於(上述標誌)它的類型拒絕。</font></font></p>
- <font><font>{{注(“這甩只適用於該服務器上的當前請求,而不是同一類型的未來需求。”)}} {{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>REJECT_SERVER</code></td>
- <td><code>-3</code></td>
- <td>
- <p><font><font>從{{manch(“shouldLoad”)}}或{{manch(“為ShouldProcess”)}}如果負載/過程是基於在服務器上拒絕它託管在或從請求(返回</font></font><code>aContentLocation</code><font><font>或</font></font><code>aRequestOrigin</code><font><font>),例如,如果塊的</font></font><code>IMAGE</code><font><font>,因為它是從goatse.cx服務(即使你不一定阻止</font></font><code>other</code><font><font>從該服務器/域類型)。</font></font></p>
- <font><font><font><font>{{注(“這甩只適用於該服務器上的當前請求,而不是同一類型的未來需求。”)}} {{gecko_minversion_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>REJECT_OTHER</code></td>
- <td><code>-4</code></td>
- <td>
- <p><font><font>從{{manch(“shouldLoad”)}}或返回{{manch(“為ShouldProcess”)}}如果負載/過程是基於一些拒絕</font></font><code>other</code><font><font>標準。</font><font>Mozilla的呼叫者會處理這個喜歡</font></font><code>REJECT_REQUEST</code><font><font>; </font><font>第三方實現者,例如,用這個來指導自己的來電諮詢額外參數的更多細節。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></p>
-
- <p><font><font>{{注(“這甩只適用於該服務器上的當前請求,而不是同一類型的未來需求。”)}}</font></font></p>
- </td>
- </tr>
- <tr>
- <td><code>ACCEPT</code></td>
- <td><code>1</code></td>
- <td><font><font>從{{manch(“shouldLoad”)}}或{{manch(“為ShouldProcess”)}}如果負載或處理請求不被拒絕返回。</font><font>{{gecko_minversion_inline(“1.8”)}}</font></font></td>
- </tr>
- <tr>
- <td><code>OTHER</code></td>
- <td><code>0</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>SCRIPT</code></td>
- <td><code>1</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>IMAGE</code></td>
- <td><code>2</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>STYLESHEET</code></td>
- <td><code>3</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>OBJECT</code></td>
- <td><code>4</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>SUBDOCUMENT</code></td>
- <td><code>5</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>CONTROL_TAG</code></td>
- <td><code>6</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>RAW_URL</code></td>
- <td><code>7</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- <tr>
- <td><code>DOCUMENT</code></td>
- <td><code>8</code></td>
- <td><font><font><font><font>{{obsolete_inline(“1.8”)}}</font></font></font></font></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Methods" name="Methods"><font><font><font><font>方法</font></font></font></font></h2>
-
-<h3 id="shouldLoad()" name="shouldLoad()"><font><font><font><font>shouldLoad()</font></font></font></font></h3>
-
-<p><font><font>打電話讓自己的內容政策的執行決定在給定位置的資源是否應該被加載。</font><font>這種方法是通過加載指定aContentLocation的資源,以確定是否要開始加載所請求的資源之前調用。</font></font></p>
-
-<p class="note"><code>shouldLoad()</code><font><font>可以稱為同時所涉及的文檔的DOM和佈局是不一致的狀態。</font><font>這意味著,該方法的實施者</font></font><strong><font><font>不得</font></font></strong><font><font>做任何以下內容:</font></font></p>
-
-<ol>
- <li class="note"><font><font>以任何方式修改DOM中(例如,設置屬性是一個沒有沒有)。</font></font></li>
- <li class="note"><font><font>查詢依賴於佈局(例如,任何DOM屬性</font></font><code>offset*</code><font><font>屬性)。</font></font></li>
- <li class="note"><font><font>查詢依賴於任何風格的DOM屬性(例如,計算方式)。</font></font></li>
- <li class="note"><font><font>查詢依賴於DOM的當前狀態的“上下文”節點(例如,節點列表的長度)之外的任何DOM屬性。</font></font></li>
- <li class="note"><font><font>[JavaScript實現僅]不使用XPCNativeWrapper(顯式或隱式地)的任何對象上的任何類型的訪問屬性。</font><font>由於各種DOM0的事情,這會導致項目4。</font></font></li>
-</ol>
-
-<p class="note"><font><font>如果你在做這些事情</font></font><code>shouldLoad()</code><font><font>的實現,期望不可預知的行為,可能包括死機,沒有顯示出來的內容,內容顯示了一倍,等等。如果你不需要做任何的事情上面,做他們關閉超時或事件。</font></font></p>
-
-<div class="note"><strong><font><font>注</font></font></strong><font><font>:當多個內容策略用於(例如,通過幾個擴展),如果其中一人拒絕的請求,該政策的其餘部分不叫。</font><font>參考:</font></font><a class="external" href="http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsContentPolicy.cpp#146" title="http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsContentPolicy.cpp#146"><font><font>http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsContentPolicy.cpp#146</font></font></a><font><font>。</font></font></div>
-
-<div class="note"><strong><font><font>注</font></font></strong><font><font>:內容政策在上述情況下的順序取決於安裝的優先級。</font></font></div>
-
-<pre class="eval"><font><font>短shouldLoad(</font></font><font><font>
- 在無符號長aContentType,</font></font><font><font>
- 在nsIURI aContentLocation,</font></font><font><font>
- 在nsIURI aRequestOrigin,</font></font><font><font>
- 在nsISupports aContext,</font></font><font><font>
- 在ACString aMimeTypeGuess,</font></font><font><font>
- 在nsISupports aExtra,</font></font><font><font>
- 在nsIPrincipal aRequestPrincipal</font></font><font><font>
-);</font></font>
-</pre>
-
-<h6 id="Parameters" name="Parameters"><font><font>參數</font></font></h6>
-
-<dl>
- <dt><code>aContentType</code></dt>
- <dd><font><font>的類型的內容進行測試。</font><font>這將是一個一個{{ANCH(“內容類型”)}}在上面列出。</font></font></dd>
- <dt><code>aContentLocation</code></dt>
- <dd><font><font>的內容的URI被檢查; </font><font>一定不能</font></font><code>null</code><font><font>。</font></font></dd>
- <dt><code>aRequestOrigin</code><font><font><font><font> {optional_inline}}</font></font></font></font></dt>
- <dd><font><font>啟動此加載請求的資源的位置; </font><font>可</font></font><code>null</code><font><font>如果不適用。</font></font></dd>
- <dt><code>aContext</code><font><font><font><font> {optional_inline}}</font></font></font></font></dt>
- <dd><font><font>的{{接口(“nsIDOMNode”)}}或{{接口(“nsIDOMWindow”)}}發起請求,或一些可以</font></font><code>QueryInterface()</code><font><font>向其中的一個; </font><font>可</font></font><code>null</code><font><font>如果不適用。</font></font></dd>
- <dt><font><font>{{音符(“aContext是當用戶使用的上下文菜單中的新選項卡/窗口或CMD / CTRL +打開鏈接的新選項卡/窗口點擊鏈接(即,aContext不是該鏈路是在拉片在這些情況下)。“)}}</font></font></dt>
- <dt> </dt>
- <dt> </dt>
- <dt><code>aMimeTypeGuess</code></dt>
- <dd><font><font>可選的。</font><font>用於所請求的內容的MIME類型猜測,基於可用於請求發起(例如,信息</font></font><code>OBJECT</code><font><font>的類型屬性); </font><font>不能可靠地反映實際的MIME類型所請求的內容。</font></font></dd>
- <dt><code>aExtra</code></dt>
- <dd><font><font>一個可選的參數,直通非壁虎呼叫者額外的數據傳遞給被調用者。</font></font></dd>
-</dl>
-
-<dl>
- <dt><code style="font-size: 14px;">aRequestPrincipal</code></dt>
- <dd><font><font>可選的。</font><font>定義了導致負載的主體。</font><font>這僅適用於可選</font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=803765#c9"><font><font>的非壁虎</font></font></a><font><font>代碼:所有的壁虎代碼應該設置此參數。</font><font>對於導航事件,這是導致該加載頁面的主體。</font></font></dd>
-</dl>
-
-<h6 id="Return_value" name="Return_value"><font><font><font><font>返回值</font></font></font></font></h6>
-
-<p><code>ACCEPT</code><font><font><font><font> 要么 </font></font></font></font><code>REJECT_*</code></p>
-
-<h3 id="shouldProcess()" name="shouldProcess()"><font><font>為ShouldProcess()</font></font></h3>
-
-<p><font><font>如果資源被處理?</font><font>{{manch(“為ShouldProcess”)}}將被調用一次傳遞給它的所有資料已被確定有關資源,資源的一部分已經被加載後一般。</font><font>“處理”是指通過處理應用程序。</font><font>例如,為ShouldProcess可以用來允許來自服務器的響應根據MIME類型的響應的處理或忽略。</font></font></p>
-
-<p><font><font>{{NoteStart()}} {{manch(“為ShouldProcess”)}}可以被稱為當DOM和佈局</font></font><code>document</code><font><font>涉及處於不一致的狀態。</font><font>查看{{manch(“shouldLoad”)}}筆記,看看這是什麼意思了這種方法的實現者。{{NoteEnd()}}</font></font></p>
-
-<pre class="eval"><font><font>短為ShouldProcess(</font></font><font><font>
- 在無符號長aContentType,</font></font><font><font>
- 在nsIURI aContentLocation,</font></font><font><font>
- 在nsIURI aRequestOrigin,</font></font><font><font>
- 在nsISupports aContext,</font></font><font><font>
- 在ACString aMimeType,</font></font><font><font>
- 在nsISupports aExtra,</font></font><font><font>
- 在nsIPrincipal aRequestPrincipal</font></font><font><font>
-);</font></font>
-</pre>
-
-<h6 id="Parameters" name="Parameters"><font><font><font><font>參數</font></font></font></font></h6>
-
-<dl>
- <dt><code>aContentType</code></dt>
- <dd><font><font>的類型的內容進行測試。</font><font>這將是TYPE_ *常量之一。</font></font></dd>
- <dt><code>aContentLocation</code></dt>
- <dd><font><font>可選的。</font><font>被請求的資源的位置:可能是,例如,一個重定向後的URI資源。</font></font></dd>
- <dt><code>aRequestOrigin</code></dt>
- <dd><font><font>可選的。</font><font>啟動此加載請求的資源的位置; </font><font>可</font></font><code>null</code><font><font>如果不適用。</font></font></dd>
- <dt><code>aContext</code></dt>
- <dd><font><font>可選的。</font><font>的{{接口(“nsIDOMNode”)}}或發起請求{{接口(“nsIDOMWindow”)}},或一些可以查詢接口的那些中的一個; </font><font>可</font></font><code>null</code><font><font>如果不適用。</font></font></dd>
- <dt><code>aMimeType</code></dt>
- <dd><font><font>MIME類型所請求的資源(例如,圖像/ PNG)的,所報告的網絡庫,如果可用的話(可以是空的,如果不適合的類型,例如,</font></font><code>TYPE_REFRESH</code><font><font>)。</font></font></dd>
- <dt><code>aExtra</code></dt>
- <dd><font><font><font><font>一個可選的參數,直通非壁虎呼叫者額外的數據傳遞給被調用者。</font></font></font></font></dd>
-</dl>
-
-<dl>
- <dt><code style="font-size: 14px;">aRequestPrincipal</code></dt>
- <dd><font><font>可選的。</font><font>提出請求的主體。</font></font></dd>
-</dl>
-
-<h6 id="Return_value" name="Return_value"><font><font><font><font>返回值</font></font></font></font></h6>
-
-<p><code>ACCEPT</code><font><font><font><font> 要么 </font></font></font></font><code>REJECT_*</code></p>
-
-<h2 id="Example" name="Example"><font><font><font><font>例</font></font></font></font></h2>
-
-<p><font><font>您可以通過包括容易實現這個接口</font></font><code>nsIContentPolicy.h</code><font><font>的頭文件和實現</font></font><code>public nsIContentPolicy</code><font><font>到類,如下所示:</font></font></p>
-
-<pre class="brush: cpp"><font><font>//將這個變成你的頭文件</font></font>
-<font><font>
-#包括“_path_to_sdk /包括/內容/ nsIContentPolicy.h”</font></font>
-<font><font>
-MyClass類:公共nsISupports,公共nsIContentPolicy {</font></font><font><font>
- ...</font></font><font><font>
- NS_DECL_NSICONTENTPOLICY</font></font><font><font>
- ...</font></font><font><font>
-}</font></font>
-<font><font>
-//這到您的實現文件 </font></font><font><font>
-NS_IMPL_ISUPPORTSn(MyClass的,nsISupports,nsIContentPolicy,...)</font></font>
-</pre>
-
-<p><font><font>{{NoteStart()}}之前,你能接受的通知,你必須註冊你的插件{{接口(“nsICategoryManager”)}}。</font><font>見下面的例子。{{NoteEnd()}}</font></font></p>
-
-<pre class="brush: cpp"><font><font><font><font>字符*以前= nsnull; </font></font></font></font>
-<font><font><font><font>
-nsCOMPtr的的&lt;nsICategoryManager&gt; catman; </font></font></font></font>
-<font><font><font><font>
-servman-&gt; GetServiceByContractID(NS_CATEGORYMANAGER_CONTRACTID,</font></font></font></font><font><font><font><font>
-NS_GET_IID(nsICategoryManager)</font></font></font></font><font><font><font><font>
-getter_AddRefs(catman)); </font></font></font></font>
-<font><font><font><font>
-RV = catman-&gt; AddCategoryEntry(“內容的策略”,</font></font></font></font><font><font><font><font>
-COMPONENT_CLASSNAME,</font></font></font></font><font><font><font><font>
-COMPONENT_CONTRACTID,</font></font></font></font><font><font><font><font>
-PR_TRUE, </font></font></font></font><font><font><font><font>
-PR_TRUE,</font><font>&</font></font></font></font><font><font><font><font>
-以前);</font></font></font></font></pre>
-
-<p><font><font>JavaScript開發人員也可以</font></font><a href="/en/XUL_School/Intercepting_Page_Loads#Content_Policy" title="EN / XUL學校/攔截頁面加載#內容策略"><font><font>實現XPCOM組件</font></font></a><font><font>擴展</font></font><code>nsIContentPolicy</code><font><font>。</font></font></p>
diff --git a/files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/howto/index.html b/files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/howto/index.html
deleted file mode 100644
index fafd0dffa0..0000000000
--- a/files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/howto/index.html
+++ /dev/null
@@ -1,199 +0,0 @@
----
-title: 'Autoconfig: How to create a configuration file'
-slug: Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo
-translation_of: Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo
----
-<h2 id="Definition">Definition</h2>
-<h2 id="Authoritative_definition"><a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat">Authoritative definition</a></h2>
-<h2 id="Example">Example</h2>
-<h2 id="Real-world_example"><a class="link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de">Real-world example</a></h2>
-<h2 id="sect1"> </h2>
-<h2 id="&lt;xml_version1.0_encodingUTF-8>">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</h2>
-<h2 id="&lt;clientConfig_version1.1>_&lt;emailProvider_idfreenet.de>_&lt;domain>freenet.de&lt;domain>_&lt;displayName>Freenet_Mail&lt;displayName>_&lt;displayShortName>Freenet&lt;displayShortName>_&lt;incomingServer_typeimap>_&lt;hostname>imap.freenet.de&lt;hostname>_&lt;port>993&lt;port>_&lt;socketType>SSL&lt;socketType>_&lt;authentication>password-encrypted&lt;authentication>_&lt;username>EMAILADDRESS&lt;username>_&lt;incomingServer>_&lt;incomingServer_typeimap>_&lt;hostname>imap.freenet.de&lt;hostname>_&lt;port>143&lt;port>_&lt;socketType>STARTTLS&lt;socketType>_&lt;authentication>password-encrypted&lt;authentication>_&lt;username>EMAILADDRESS&lt;username>_&lt;incomingServer>_&lt;incomingServer_typepop3>_&lt;hostname>pop.freenet.de&lt;hostname>_&lt;port>995&lt;port>_&lt;socketType>SSL&lt;socketType>_&lt;authentication>password-cleartext&lt;authentication>_&lt;username>EMAILADDRESS&lt;username>_&lt;incomingServer>_&lt;incomingServer_typepop3>_&lt;hostname>pop.freenet.de&lt;hostname>_&lt;port>110&lt;port>_&lt;socketType>STARTTLS&lt;socketType>_&lt;authentication>password-cleartext&lt;authentication>_&lt;username>EMAILADDRESS&lt;username>_&lt;incomingServer>_&lt;outgoingServer_typesmtp>_&lt;hostname>smtp.freenet.de&lt;hostname>_&lt;port>465&lt;port>_&lt;socketType>SSL&lt;socketType>_&lt;authentication>password-encrypted&lt;authentication>_&lt;username>EMAILADDRESS&lt;username>_&lt;outgoingServer>_&lt;outgoingServer_typesmtp>_&lt;hostname>smtp.freenet.de&lt;hostname>_&lt;port>587&lt;port>_&lt;socketType>STARTTLS&lt;socketType>_&lt;authentication>password-encrypted&lt;authentication>_&lt;username>EMAILADDRESS&lt;username>_&lt;outgoingServer>_&lt;documentation_urlhttpkundenservice.freenet.dehilfeemailprogrammeconfigindex.html>_&lt;descr_langde>Allgemeine_Beschreibung_der_Einstellungen&lt;descr>_&lt;descr_langen>Generic_settings_page&lt;descr>_&lt;documentation>_&lt;documentation_urlhttpkundenservice.freenet.dehilfeemailprogrammeconfigthunderbirdimap-thunderbirdimapindex.html>_&lt;descr_langde>TB_2.0_IMAP-Einstellungen&lt;descr>_&lt;descr_langen>TB_2.0_IMAP_settings&lt;descr>_&lt;documentation>_&lt;emailProvider>_&lt;clientConfig>">&lt;<span class="start-tag">clientConfig</span><span class="attribute-name"> version</span>=<span class="attribute-value">"1.1"</span>&gt;<br>
-   &lt;<span class="start-tag">emailProvider</span><span class="attribute-name"> id</span>=<span class="attribute-value">"freenet.de"</span>&gt;<br>
-     &lt;<span class="start-tag">domain</span>&gt;freenet.de&lt;/<span class="end-tag">domain</span>&gt;<br>
-     &lt;<span class="start-tag">displayName</span>&gt;Freenet Mail&lt;/<span class="end-tag">displayName</span>&gt;<br>
-     &lt;<span class="start-tag">displayShortName</span>&gt;Freenet&lt;/<span class="end-tag">displayShortName</span>&gt;<br>
-     &lt;<span class="start-tag">incomingServer</span><span class="attribute-name"> type</span>=<span class="attribute-value">"imap"</span>&gt;<br>
-       &lt;<span class="start-tag">hostname</span>&gt;imap.freenet.de&lt;/<span class="end-tag">hostname</span>&gt;<br>
-       &lt;<span class="start-tag">port</span>&gt;993&lt;/<span class="end-tag">port</span>&gt;<br>
-       &lt;<span class="start-tag">socketType</span>&gt;SSL&lt;/<span class="end-tag">socketType</span>&gt;<br>
-       &lt;<span class="start-tag">authentication</span>&gt;password-encrypted&lt;/<span class="end-tag">authentication</span>&gt;<br>
-       &lt;<span class="start-tag">username</span>&gt;%EMAILADDRESS%&lt;/<span class="end-tag">username</span>&gt;<br>
-     &lt;/<span class="end-tag">incomingServer</span>&gt;<br>
-     &lt;<span class="start-tag">incomingServer</span><span class="attribute-name"> type</span>=<span class="attribute-value">"imap"</span>&gt;<br>
-       &lt;<span class="start-tag">hostname</span>&gt;imap.freenet.de&lt;/<span class="end-tag">hostname</span>&gt;<br>
-       &lt;<span class="start-tag">port</span>&gt;143&lt;/<span class="end-tag">port</span>&gt;<br>
-       &lt;<span class="start-tag">socketType</span>&gt;STARTTLS&lt;/<span class="end-tag">socketType</span>&gt;<br>
-       &lt;<span class="start-tag">authentication</span>&gt;password-encrypted&lt;/<span class="end-tag">authentication</span>&gt;<br>
-       &lt;<span class="start-tag">username</span>&gt;%EMAILADDRESS%&lt;/<span class="end-tag">username</span>&gt;<br>
-     &lt;/<span class="end-tag">incomingServer</span>&gt;<br>
-     &lt;<span class="start-tag">incomingServer</span><span class="attribute-name"> type</span>=<span class="attribute-value">"pop3"</span>&gt;<br>
-       &lt;<span class="start-tag">hostname</span>&gt;pop.freenet.de&lt;/<span class="end-tag">hostname</span>&gt;<br>
-       &lt;<span class="start-tag">port</span>&gt;995&lt;/<span class="end-tag">port</span>&gt;<br>
-       &lt;<span class="start-tag">socketType</span>&gt;SSL&lt;/<span class="end-tag">socketType</span>&gt;<br>
-       &lt;<span class="start-tag">authentication</span>&gt;password-cleartext&lt;/<span class="end-tag">authentication</span>&gt;<br>
-       &lt;<span class="start-tag">username</span>&gt;%EMAILADDRESS%&lt;/<span class="end-tag">username</span>&gt;<br>
-     &lt;/<span class="end-tag">incomingServer</span>&gt;<br>
-     &lt;<span class="start-tag">incomingServer</span><span class="attribute-name"> type</span>=<span class="attribute-value">"pop3"</span>&gt;<br>
-       &lt;<span class="start-tag">hostname</span>&gt;pop.freenet.de&lt;/<span class="end-tag">hostname</span>&gt;<br>
-       &lt;<span class="start-tag">port</span>&gt;110&lt;/<span class="end-tag">port</span>&gt;<br>
-       &lt;<span class="start-tag">socketType</span>&gt;STARTTLS&lt;/<span class="end-tag">socketType</span>&gt;<br>
-       &lt;<span class="start-tag">authentication</span>&gt;password-cleartext&lt;/<span class="end-tag">authentication</span>&gt;<br>
-       &lt;<span class="start-tag">username</span>&gt;%EMAILADDRESS%&lt;/<span class="end-tag">username</span>&gt;<br>
-     &lt;/<span class="end-tag">incomingServer</span>&gt;<br>
-     &lt;<span class="start-tag">outgoingServer</span><span class="attribute-name"> type</span>=<span class="attribute-value">"smtp"</span>&gt;<br>
-       &lt;<span class="start-tag">hostname</span>&gt;smtp.freenet.de&lt;/<span class="end-tag">hostname</span>&gt;<br>
-       &lt;<span class="start-tag">port</span>&gt;465&lt;/<span class="end-tag">port</span>&gt;<br>
-       &lt;<span class="start-tag">socketType</span>&gt;SSL&lt;/<span class="end-tag">socketType</span>&gt;<br>
-       &lt;<span class="start-tag">authentication</span>&gt;password-encrypted&lt;/<span class="end-tag">authentication</span>&gt;<br>
-       &lt;<span class="start-tag">username</span>&gt;%EMAILADDRESS%&lt;/<span class="end-tag">username</span>&gt;<br>
-     &lt;/<span class="end-tag">outgoingServer</span>&gt;<br>
-     &lt;<span class="start-tag">outgoingServer</span><span class="attribute-name"> type</span>=<span class="attribute-value">"smtp"</span>&gt;<br>
-       &lt;<span class="start-tag">hostname</span>&gt;smtp.freenet.de&lt;/<span class="end-tag">hostname</span>&gt;<br>
-       &lt;<span class="start-tag">port</span>&gt;587&lt;/<span class="end-tag">port</span>&gt;<br>
-       &lt;<span class="start-tag">socketType</span>&gt;STARTTLS&lt;/<span class="end-tag">socketType</span>&gt;<br>
-       &lt;<span class="start-tag">authentication</span>&gt;password-encrypted&lt;/<span class="end-tag">authentication</span>&gt;<br>
-       &lt;<span class="start-tag">username</span>&gt;%EMAILADDRESS%&lt;/<span class="end-tag">username</span>&gt;<br>
-     &lt;/<span class="end-tag">outgoingServer</span>&gt;<br>
-     &lt;<span class="start-tag">documentation</span><span class="attribute-name"> url</span>=<span class="attribute-value">"http://kundenservice.freenet.de/hilfe/email/programme/config/index.html"</span>&gt;<br>
-       &lt;<span class="start-tag">descr</span><span class="attribute-name"> lang</span>=<span class="attribute-value">"de"</span>&gt;Allgemeine Beschreibung der Einstellungen&lt;/<span class="end-tag">descr</span>&gt;<br>
-       &lt;<span class="start-tag">descr</span><span class="attribute-name"> lang</span>=<span class="attribute-value">"en"</span>&gt;Generic settings page&lt;/<span class="end-tag">descr</span>&gt;<br>
-     &lt;/<span class="end-tag">documentation</span>&gt;<br>
-     &lt;<span class="start-tag">documentation</span><span class="attribute-name"> url</span>=<span class="attribute-value">"http://kundenservice.freenet.de/hilfe/email/programme/config/thunderbird/imap-thunderbird/imap/index.html"</span>&gt;<br>
-       &lt;<span class="start-tag">descr</span><span class="attribute-name"> lang</span>=<span class="attribute-value">"de"</span>&gt;TB 2.0 IMAP-Einstellungen&lt;/<span class="end-tag">descr</span>&gt;<br>
-       &lt;<span class="start-tag">descr</span><span class="attribute-name"> lang</span>=<span class="attribute-value">"en"</span>&gt;TB 2.0 IMAP settings&lt;/<span class="end-tag">descr</span>&gt;<br>
-     &lt;/<span class="end-tag">documentation</span>&gt;<br>
-   &lt;/<span class="end-tag">emailProvider</span>&gt;<br>
- &lt;/<span class="end-tag">clientConfig</span>&gt;</h2>
-<h2 id="How_to_probe_mail_servers">How to probe mail servers</h2>
-<h2 id="To_determine_a_server's_capabilities_you_can_contact_the_server_directly_and_talk_the_POPIMAPSMTP_protocol_manually_(assuming_you_already_know_the_hostname)._For_non-SSL_use_netcat_-v_hostname_port_(preferred)_or_telnet_hostname_port_as_client.">To determine a server's capabilities, you can contact the server directly and talk the POP/IMAP/SMTP protocol manually (assuming you already know the hostname).<br>
- For non-SSL, use <strong><code>netcat -v <em>hostname</em> <em>port</em></code></strong> (preferred) or <code>telnet <em>hostname</em> <em>port</em></code> as "client".</h2>
-<ul>
- <li>
- <h2 id="POP3_port_110_when_you_see_OK_WEB.DE_POP3-Server_or_similar_enter_CAPA_hit_return.">POP3, port 110: when you see <code>+OK WEB.DE POP3-Server</code> or similar, enter <code><strong>CAPA</strong></code>, hit return.</h2>
- </li>
- <li>
- <h2 id="IMAP_port_143_when_you_see_*_OK_mwinf2j04_IMAP4_server_ready_or_similar_enter_1_CAPABILITY_hit_return.">IMAP, port 143: when you see <code>* OK mwinf2j04 IMAP4 server ready</code> or similar, enter <code><strong>1 CAPABILITY</strong></code>, hit return.</h2>
- </li>
- <li>
- <h2 id="SMTP_port_587_or_25_when_you_see_220_mail.gmx.net_GMX_Mailservices_ESMTP_or_similar_enter_EHLO_example.net_hit_return.">SMTP, port 587 or 25: when you see <code>220 mail.gmx.net GMX Mailservices ESMTP</code> or similar, enter <code><strong>EHLO example.net</strong></code>, hit return.</h2>
- </li>
-</ul>
-<h2 id="In_all_cases_the_server_should_respond_with_a_list_of_capabilities.">In all cases, the server should respond with a list of capabilities.</h2>
-<h2 id="SSL_STARTTLS">SSL / STARTTLS</h2>
-<h2 id="There_are_2_SSL_variants_normal_SSL_and_STARTTLS.">There are 2 SSL variants: normal SSL and STARTTLS.</h2>
-<h2 id="Normal_SSL">Normal SSL</h2>
-<h2 id="The_old-style_SSL_(including_TLS_which_is_just_the_new_name_for_SSL)_has_a_special_port">The old-style SSL (including TLS, which is just the new name for SSL) has a special port:</h2>
-<ul>
- <li>
- <h2 id="POP3_via_SSL_port_995">POP3 via SSL: port 995</h2>
- </li>
- <li>
- <h2 id="IMAP_via_SSL_port_993">IMAP via SSL: port 993</h2>
- </li>
- <li>
- <h2 id="SMTP_via_SSL_port_465">SMTP via SSL: port 465</h2>
- </li>
-</ul>
-<h2 id="On_Linux_you_can_contact_the_server_via">On Linux, you can contact the server via</h2>
-<pre></pre>
-<h2 id="openssl_s_client_-connect_hostnameport"><strong>openssl s_client -connect <em>hostname</em>:<em>port</em></strong></h2>
-<h2 id="You_should_see_output_about_the_SSL_handshake_and_the_certificate._Important_is_what_is_listed_as_CN._This_must_be_the_same_as_the_hostname_that_you_contacted_otherwise_the_certificate_is_not_valid_(or_you_need_to_use_another_hostname)._If_you_see_nothing_then_probably_the_server_does_not_support_SSL._After_that_you_can_have_the_same_protocol_exchange_as_with_netcat_on_standard_ports_as_listed_above.">You should see output about the SSL handshake and the certificate. Important is what is listed as "CN=". This must be the same as the hostname that you contacted, otherwise the certificate is not valid (or you need to use another hostname).<br>
- If you see nothing, then probably the server does not support SSL.<br>
- After that, you can have the same protocol exchange as with netcat on standard ports, as listed above.</h2>
-<h2 id="STARTTLS">STARTTLS</h2>
-<h2 id="STARTTLS_is_a_special_new_form_of_SSL_which_works_on_the_standard_ports_(e.g._port_143_for_IMAP)._You_can_contact_the_server_via_netcat_as_mentioned_above._If_you_see_STARTTLS_(for_IMAP_SMTP)_or_STLS_(for_POP)_listed_as_one_of_the_capabilities_the_server_should_support_STARTTLS._To_try_it_out_on_Linux_you_can_contact_the_server_via">STARTTLS is a special, new form of SSL, which works on the standard ports (e.g. port 143 for IMAP). You can contact the server via netcat as mentioned above. If you see "STARTTLS" (for IMAP, SMTP) or "STLS" (for POP) listed as one of the capabilities, the server should support STARTTLS.<br>
- To try it out, on Linux, you can contact the server via</h2>
-<h2 id="sect2"> </h2>
-<h2 id="openssl_s_client_-connect_hostnameport_-starttls_proto">openssl s_client -connect <em>hostname</em>:<em>port</em> -starttls <em>proto</em></h2>
-<h2 id="...where_proto_is_imap_pop3_or_smtp._For_example">...where "proto" is <code>imap</code>, <code>pop3</code> or <code>smtp</code>. For example:</h2>
-<pre></pre>
-<h2 id="openssl_s_client_-connect_imap.example.com143_-starttls_imap"><strong>openssl s_client -connect <em>imap.example.com</em>:<em>143</em> -starttls <em>imap</em></strong></h2>
-<h2 id="You_should_get_the_same_response_as_described_above_for_openssl.">You should get the same response as described above for openssl.</h2>
-<h2 id="Configuration_file_format">Configuration file format</h2>
-<h2 id="Add_the_appropriate_port_and_socket_type_for_each_server_depending_on_protocol_and_SSL_support._For_example_for_IMAP_with_SSL">Add the appropriate port and socket type for each server, depending on protocol and SSL support. For example,<br>
- for IMAP with SSL:</h2>
-<h2 id="sect3"> </h2>
-<h2 id="&lt;port>993&lt;port>">&lt;port&gt;993&lt;port&gt;</h2>
-<h2 id="&lt;socketType>SSL&lt;socketType>">&lt;socketType&gt;SSL&lt;/socketType&gt;</h2>
-<h2 id="for_IMAP_with_STARTTLS">for IMAP with STARTTLS:</h2>
-<h2 id="sect4"> </h2>
-<h2 id="&lt;port>143&lt;port>_&lt;socketType>STARTTLS&lt;socketType>">&lt;port&gt;143&lt;port&gt;<br>
- &lt;socketType&gt;STARTTLS&lt;/socketType&gt;</h2>
-<h2 id="for_IMAP_without_any_SSL_(deprecated!)">for IMAP without any SSL (deprecated!):</h2>
-<h2 id="sect5"> </h2>
-<h2 id="&lt;port>143&lt;port>">&lt;port&gt;143&lt;port&gt;</h2>
-<h2 id="&lt;socketType>plain&lt;socketType>">&lt;socketType&gt;plain&lt;/socketType&gt;</h2>
-<h2 id="Use_SSL">Use SSL</h2>
-<h2 id="Please_do_not_submit_or_serve_any_configurations_without_SSL!_There's_no_reason_in_2010_why_users_still_need_to_read_mail_entirely_unprotected._If_you_are_an_ISP_and_think_the_server_load_is_too_high_try_adding_an_SSL_accelerator._They_are_cheap_and_widely_used._In_fact_even_most_freemail_(!)_providers_these_days_support_SSL_so_if_users_pay_you_money_for_ISP_service_that's_all_the_more_reason_to_give_them_proper_service._But_first_simply_try_to_enable_software_SSL_-_small_servers_may_be_fine_with_SSL_and_without_any_additional_installations.">Please do not submit or serve any configurations without SSL! There's no reason in 2010 why users still need to read mail entirely unprotected.<br>
- If you are an ISP and think the server load is too high, try adding an SSL accelerator. They are cheap and widely used. In fact, even most freemail (!) providers these days support SSL, so if users pay you money for ISP service, that's all the more reason to give them proper service. But first simply try to enable software SSL - small servers may be fine with SSL and without any additional installations.</h2>
-<h2 id="Valid_certificate">Valid certificate</h2>
-<h2 id="Either_way_be_sure_to_use_a_valid_certificate">Either way, be sure to use a valid certificate:</h2>
-<ul>
- <li>
- <h2 id="issued_by_a_CA_recognized_by_Firefox_Thunderbird">issued by a CA recognized by Firefox / Thunderbird</h2>
- </li>
- <li>
- <h2 id="not_expired">not expired</h2>
- </li>
- <li>
- <h2 id="the_CN_in_the_cert_must_match_the_hostname_that_Thunderbird_contacts_and_that_is_listed_as_&lt;hostname>_in_the_configuration_file._If_they_don't_match_Thunderbird_must_assume_that_the_user_may_be_under_attack_otherwise_the_SSL_guarantees_no_longer_hold._Thunderbird_either_warns_the_user_or_ignores_the_server._(Note_that_you_can_get_certificates_for_free_these_days_for_example_from_startssl.com.)">the CN in the cert must match the hostname that Thunderbird contacts and that is listed as &lt;hostname&gt; in the configuration file. If they don't match, Thunderbird must assume that the user may be under attack, otherwise the SSL guarantees no longer hold. Thunderbird either warns the user or ignores the server. (Note that you can get certificates for free these days, for example from startssl.com.)</h2>
- </li>
-</ul>
-<h2 id="Authentication">Authentication</h2>
-<h2 id="Probe_the_mail_server_as_explained_above_for_STARTTLS._If_you_see_CRAM-MD5_or_APOP_in_the_response_the_server_should_support_encrypted_passwords._If_you_only_see_AUTH_LOGIN_andor_PLAIN_or_no_AUTH_at_all_the_server_probably_does_not_support_secure_authentication._In_the_former_case_select_Encrypted_passwords_as_Authentication_method_(in_Thunderbird_Account_Settings_UI_incoming_server_and_SMTP_server)_and_test_whether_you_can_actually_log_in_with_a_real_account_(because_some_servers_are_unfortunately_broken_with_regards_to_authentication_often_due_to_a_wrong_or_misconfigured_SASL_installation)."><span class="external free">Probe the mail server, as explained above for STARTTLS.</span> If you see <code>CRAM-MD5</code> or <code>APOP</code> in the response, the server should support encrypted passwords. If you <em>only</em> see <code>AUTH</code> <code>LOGIN</code> and/or <code>PLAIN</code>, or no <code>AUTH</code> at all, the server probably does not support secure authentication. In the former case, select "Encrypted passwords" as "Authentication method" (in Thunderbird Account Settings UI, incoming server and SMTP server), and test whether you can actually log in with a real account (because some servers are unfortunately broken with regards to authentication, often due to a wrong or misconfigured SASL installation).</h2>
-<h2 id="Configuration_file_format_2">Configuration file format</h2>
-<h2 id="In_the_configuration_file_for_each_IMAP_POP_and_SMTP_server_you_need_to_specify_the_authentication_method._For_plaintext_passwords">In the configuration file, for each IMAP, POP and SMTP server, you need to specify the authentication method.<br>
- <br>
- For plaintext passwords:</h2>
-<h2 id="sect6"> </h2>
-<h2 id="&lt;authentication>password-cleartext&lt;authentication>">&lt;authentication&gt;password-cleartext&lt;/authentication&gt;</h2>
-<h2 id="For_CRAM-MD5">For CRAM-MD5:</h2>
-<h2 id="sect7"> </h2>
-<h2 id="&lt;authentication>password-encrypted&lt;authentication>">&lt;authentication&gt;password-encrypted&lt;/authentication&gt;</h2>
-<h2 id="Discouraged_settings_(SMTP_only)_If_the_SMTP_server_can_only_be_used_after_checking_incoming_mail_please_use"><br>
- Discouraged settings (SMTP only):<br>
- If the SMTP server can only be used after checking incoming mail, please use</h2>
-<h2 id="sect8"> </h2>
-<h2 id="&lt;authentication>smtp-after-pop&lt;authentication>">&lt;authentication&gt;smtp-after-pop&lt;/authentication&gt;</h2>
-<h2 id="Note_that_RFC_4409_disallows_that_and_requires_the_customer-facing_SMTP_server_to_support_proper_authentication_via_AUTH._If_the_SMTP_server_can_only_be_used_within_the_ISP's_network_and_requires_no_authentication_use">Note that RFC 4409 disallows that and requires the customer-facing SMTP server to support proper authentication via AUTH.<br>
- If the SMTP server can only be used within the ISP's network, and requires no authentication, use:</h2>
-<h2 id="sect9"> </h2>
-<h2 id="&lt;authentication>client-IP-address&lt;authentication>">&lt;authentication&gt;client-IP-address&lt;/authentication&gt;</h2>
-<h2 id="or_if_it_requires_authentication_in_addition_to_the_user_being_in_the_ISP_network_use_e.g.">or, if it requires authentication in addition to the user being in the ISP network, use e.g.:</h2>
-<h2 id="sect10"> </h2>
-<h2 id="&lt;authentication>password-cleartext&lt;authentication>_2">&lt;authentication&gt;password-cleartext&lt;/authentication&gt;</h2>
-<h2 id="&lt;restriction>client-IP-address&lt;restriction>">&lt;restriction&gt;client-IP-address&lt;/restriction&gt;</h2>
-<h2 id="However_that_means_that_users_on_the_road_or_in_the_office_are_unable_to_send_mail_which_is_a_real_problem_for_many_of_our_users._This_violates_RFC_4409_as_well_and_is_an_outdated_configuration._Please_try_find_a_configuration_that_works_in_all_cases_for_the_sake_of_the_users.">However, that means that users on the road or in the office are unable to send mail, which is a real problem for many of our users. This violates RFC 4409 as well and is an outdated configuration. Please try find a configuration that works in all cases, for the sake of the users.</h2>
-<h2 id="Please_support_MD5_passwords">Please support MD5 passwords</h2>
-<h2 id="Please_support_authentication_with_CRAM-MD5._It_is_simple_to_implement_and_to_set_up_and_you_can_still_use_RADIUS_or_a_database_that_stores_passwords_in_plaintext_so_you_don't_need_to_make_changes_to_your_mail_server_or_authentication_infrastructure_apart_from_installing_some_software_and_configuring_it_correctly._CRAM-MD5_is_particularly_important_when_no_SSL_is_used_Never_make_users_send_their_passwords_in_plaintext_over_the_network!_(Not_even_in_your_ISP_network.)_We_warn_users_in_the_Mail_Account_Creation_dialog_about_such_insecure_configurations_and_we_reserve_the_right_to_block_them_in_the_future._As_an_ISP_you_should_ideally_store_passwords_in_encrypted_format_which_removes_the_risk_of_mass_password_theft_(and_possibly_reuse_on_other_sites)_if_somebody_hacks_your_servers._You_can_still_support_plaintext_passwords_in_this_case_and_encrypt_passwords_on_the_fly_before_comparing._(Users_who_use_plaintext_passwords_would_still_be_somewhat_exposed_but_at_least_you_don't_have_the_risk_of_the_whole_plaintext_password_database_being_stolen.)_You_can_use_both_plaintext_and_encrypted_authentication_transmission_with_plaintext_or_encrypted_password_databases_-_the_two_issues_are_independent.">Please support authentication with CRAM-MD5. It is simple to implement, and to set up, and you can still use RADIUS or a database that stores passwords in plaintext, so you don't need to make changes to your mail server or authentication infrastructure apart from installing some software and configuring it correctly. CRAM-MD5 is particularly important when no SSL is used: Never make users send their passwords in plaintext over the network! (Not even in your ISP network.) We warn users in the Mail Account Creation dialog about such insecure configurations, and we reserve the right to block them in the future.<br>
- <br>
- <span class="external free">As an ISP, you should ideally store passwords in encrypted format, which removes the risk of mass password theft (and possibly reuse on other sites) if somebody hacks your servers. You can still support plaintext passwords in this case, and encrypt passwords on the fly before comparing. (Users who use plaintext passwords would still be somewhat exposed, but at least you don't have the risk of the whole plaintext password database being stolen.) You can use both plaintext and encrypted authentication transmission with plaintext or encrypted password databases - the two issues are independent.</span></h2>
-<h2 id="Username">Username</h2>
-<h2 id="If_the_user's_IMAP_login_name_is_the_same_as_his_email_address_(for_example_if_fredexample.com_is_the_login_name)_add">If the user's IMAP login name is the same as his email address (for example, if "<a class="link-mailto" href="mailto:fred@example.com" rel="freelink">fred@example.com</a>" is the login name), add:</h2>
-<h2 id="sect11"> </h2>
-<h2 id="&lt;username>EMAILADDRESS&lt;username>">&lt;username&gt;%EMAILADDRESS%&lt;/username&gt;</h2>
-<h2 id="Note_Use_EMAILADDRESS_as_literal._Thunderbird_will_replace_it_with_the_email_address_that_the_user_entered._Same_for_EMAILLOCALPART_and_other_placeholders."><span class="external free">Note: Use</span> %EMAILADDRESS% as literal. Thunderbird will replace it with the email address that the user entered. Same for %EMAILLOCALPART% and other placeholders.</h2>
-<h2 id="If_the_login_name_is_the_same_as_the_first_segment_before_the_of_the_email_address_(for_example_fred_for_fredexample.com)_use"><span class="external free">If the login name is the same as the first segment before the @ of the email address (for example, "fred" for "<a class="link-mailto" href="mailto:fred@example.com" rel="freelink">fred@example.com</a>"), use:</span></h2>
-<h2 id="sect12"> </h2>
-<h2 id="&lt;username>EMAILLOCALPART&lt;username>">&lt;username&gt;%EMAILLOCALPART%&lt;/username&gt;</h2>
-<h2 id="Aliases_or_username_not_part_of_email_address">Aliases, or username not part of email address</h2>
-<h2 id="Note_that_the_above_must_be_true_for_any_email_address_that_the_user_would_set_up_-_even_for_aliases._You_can_ignore_aliases_like_info_if_that's_an_alias_for_fred_(or_both_fred_and_wilma)_and_Fred_would_set_up_fredexample.com_in_Thunderbird_not_info._If_however_Fred_can_set_up_heroexample.com_as_alias_for_fredexample.com_and_neither_hero_nor_heroexample.com_would_work_as_login_name_on_your_IMAP_server_you_need_to_set_up_a_lookup_of_alias_->_username_on_your_autoconfig_server._So_if_you_get_a_request_for_&lt;httpautoconfig.example.commailc...roexample.com>_your_autconfig_server_must_have_a_script_which_responds_to_mailconfig-v1.1.xml_and_returns_the_concrete_username_for_example"><span class="external free">Note that the above must be true for any email address that the user would set up - even for aliases.<br>
- <br>
- You can ignore aliases like info@, if that's an alias for fred@ (or both fred@ and wilma@) and Fred would set up <a class="link-mailto" href="mailto:fred@example.com" rel="freelink">fred@example.com</a> in Thunderbird, not info@.<br>
- <br>
- If, however, Fred can set up <a class="link-mailto" href="mailto:hero@example.com" rel="freelink">hero@example.com</a> as alias for <a class="link-mailto" href="mailto:fred@example.com" rel="freelink">fred@example.com</a>, and neither "hero" nor "<a class="link-mailto" href="mailto:hero@example.com" rel="freelink">hero@example.com</a>" would work as login name on your IMAP server, you need to set up a lookup of alias -&gt; username on your autoconfig server. So, if you get a request for &lt;<a class="external" href="http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=hero@example.com" rel="freelink">http://autoconfig.example.com/mail/c...ro@example.com</a>&gt;, your autconfig server must have a script which responds to /mail/config-v1.1.xml and returns the concrete username, for example:</span></h2>
-<h2 id="sect13"> </h2>
-<h2 id="&lt;username>fred&lt;username>">&lt;username&gt;fred&lt;/username&gt;</h2>
-<h2 id="..._(or_&lt;username>fredexample.com&lt;username>_as_appropriate)_for_heroexample.com._This_is_the_only_way_to_enable_automatic_configuration_without_users_having_to_remember_what_their_primary_login_name_was_which_is_a_serious_problem_in_practical_experience._Even_if_you_have_told_them_all_the_necessary_information_in_your_welcome_letter_they_usually_cannot_find_the_letter._That's_exactly_where_autoconfiguration_tries_to_help.">... (or &lt;username&gt;<a class="link-mailto" href="mailto:fred@example.com" rel="freelink">fred@example.com</a>&lt;/username&gt;, as appropriate) for <a class="link-mailto" href="mailto:hero@example.com" rel="freelink">hero@example.com</a>. This is the only way to enable automatic configuration without users having to remember what their primary login name was, which is a serious problem in practical experience. Even if you have told them all the necessary information in your welcome letter, they usually cannot find the letter. That's exactly where autoconfiguration tries to help.</h2>
-<h2 id="Enable_visiturl">Enable visiturl</h2>
-<h2 id="Some_providers_do_not_provide_IMAP_or_POP_service_by_default_but_require_it_to_be_enabled_via_a_web_UI._If_that_is_the_case_add_the_URL_that_a_logged-in_user_would_use_into_this_field_and_the_application_can_prompt_the_user_to_visit_it.">Some providers do not provide IMAP or POP service by default, but require it to be enabled via a web UI. If that is the case, add the URL that a logged-in user would use into this field, and the application can prompt the user to visit it.</h2>
-<h2 id="This_is_not_yet_supported_by_Thunderbird_3.1_but_should_be_in_the_future_so_please_add_this_critical_information_where_it_applies.">This is <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=586364" title="https://bugzilla.mozilla.org/show_bug.cgi?id=586364">not yet supported</a> by Thunderbird 3.1, but should be in the future, so please add this critical information where it applies.</h2>
-<h2 id="If_you_are_an_ISP_please_by_all_means_avoid_this._It's_one_of_those_walls_against_which_users_run_the_hard_way.">If you are an ISP, please by all means avoid this. It's one of those "walls" against which users run the hard way.</h2>
-<h2 id="Documentation_URL">Documentation URL</h2>
-<h2 id="If_the_configuration_is_(partially)_based_on_a_help_webpage_of_the_ISP_that_describes_the_configuration_that_end_users_should_use_you_can_record_its_URL_here._You_may_add_several_of_them_as_several_elements._It_is_for_informational_purposes_only_and_mainly_for_the_maintenance_of_the_config_file_the_client_currently_does_not_use_them_at_all.">If the configuration is (partially) based on a help webpage of the ISP that describes the configuration that end users should use, you can record its URL here. You may add several of them, as several elements. It is for informational purposes only and mainly for the maintenance of the config file, the client currently does not use them at all.</h2>
-<h2 class="syntaxbox" id="If_your_URL_contains_ampersands_()_please_remember_to_replace_them_with_HTML_entities_(amp)._For_example">If your URL contains ampersands (<code>&amp;</code>), please remember to replace them with HTML entities (<code>&amp;amp;</code>). For example:</h2>
-<h2 id="sect14"> </h2>
-<h2 id="&lt;documentation_urlhttpexample.comhelp.phpclientthunderbirdamplangen>">&lt;<span class="start-tag">documentation</span><span class="attribute-name"> url</span>="http://example.com/help.php?client=thunderbird<span style="color: #b22222;"><strong>&amp;amp;</strong></span>lang=en"/&gt;</h2>
-<h2 class="syntaxbox" id="Otherwise_your_XML_file_will_be_incorrect_and_Thunderbird_will_neither_be_able_to_parse_it_nor_to_return_any_error_message.">Otherwise your XML file will be incorrect and Thunderbird will neither be able to parse it, nor to return any error message.</h2>
diff --git a/files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/index.html b/files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/index.html
deleted file mode 100644
index 76a90f2777..0000000000
--- a/files/zh-tw/mozilla/thunderbird/autoconfiguration/fileformat/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Autoconfig file format
-slug: Mozilla/Thunderbird/Autoconfiguration/FileFormat
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Mozilla/Thunderbird/Autoconfiguration/FileFormat
----
-<ul> <li><a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">How to create a config file</a></li> <li><a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">File format definition</a></li>
-</ul>
diff --git a/files/zh-tw/mozilla/thunderbird/autoconfiguration/index.html b/files/zh-tw/mozilla/thunderbird/autoconfiguration/index.html
deleted file mode 100644
index 84cc17039c..0000000000
--- a/files/zh-tw/mozilla/thunderbird/autoconfiguration/index.html
+++ /dev/null
@@ -1,113 +0,0 @@
----
-title: Autoconfiguration in Thunderbird
-slug: Mozilla/Thunderbird/Autoconfiguration
-tags:
- - Administration
- - NeedsTranslation
- - TopicStub
- - enterprise
-translation_of: Mozilla/Thunderbird/Autoconfiguration
----
-<p>Author: Ben Bucksch<br>
- Please do not change this document without consulting the author</p>
-<p>Thunderbird 3.1 and later (and 3.0 to some degree) includes mail account autoconfiguration functionality. The goal of autoconfiguration is to make it very easy for users to configure the connection of Thunderbird to their email servers. In many cases, people should be able to download and install Thunderbird, enter their real name, email address and password in the Account Setup Wizard and have a fully functioning mail client and get and send their mail as securely as possible.</p>
-<p>See also:</p>
-<ul>
- <li>the <a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">project page on the Mozilla wiki</a> for background, design, implementation and project details</li>
- <li>for instructions for users, see <a class="external" href="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration" title="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration">Automatic Account Configuration</a> on the Thunderbird Knowledge Base.</li>
- <li>the configuration file <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">description</a> and <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">definition</a></li>
-</ul>
-<p>This document describes how Autoconfiguration in Thunderbird works, and what to do to allow mail servers to be autoconfigured.</p>
-<h1 id="Mechanisms">Mechanisms</h1>
-<p>Thunderbird gets the server settings via different means, each of which is intended for different cases:</p>
-<ul>
- <li>ISPDB<br>
- The ISPDB is a central database, currently hosted by Mozilla Messaging, but free to use for any client. It contains settings for the world's largest ISPs. We hope that the database will soon have enough information to autoconfigure approximately 50% of our user's email accounts.<br>
- It was added merely because we cannot assume that all big ISPs (including Microsoft) will immediately set up a configuration server for Thunderbird.</li>
- <li>Configuration server at ISP<br>
- ISPs have the option to provide their configuration information themselves directly to users, by setting up a web server at autoconfig.&lt;domain&gt;, which simply returns a static XML file with the configuration, as described below. For more complicated setups, for example when the login name does not appear in the the email address, the XML file can also be generated by the ISP. In such complicated cases, this is the only way to allow an automatic setup.</li>
- <li>Configuration file on harddisk<br>
- Administrators may place a configuration file in the Thunderbird installation folder. This is mainly intended for companies who install Thunderbird on their employees' computers and want to enable easy account setup without having to set up a configuration server. This method is not practical for other use cases, because it is difficult to update the configuration file. Therefore, public ISPs should use a configuration server.</li>
- <li>Guessing<br>
- If all other mechanisms failed, Thunderbird tries to guess the configuration, by trying common server names like imap.&lt;domain&gt;, smtp.&lt;domain&gt;, mail.&lt;domain&gt; etc., and, when a mail server answers, checking whether it supports SSL, STARTTLS and encrypted passwords (CRAM-MD5).</li>
- <li>Manual configuration<br>
- If guessing fails the user must manually enter the configuration information. Users can may also manually modify the account settings even if configuration information is successfully obtained by the methods described above.</li>
-</ul>
-<p>All the lookup mechanisms use the email address domain as base for the lookup. For example, for the email address <a class="moz-txt-link-abbreviated link-mailto" href="mailto:fred@example.com">fred@example.com</a> , the lookup is performed as (in this order):</p>
-<ol>
- <li><em>tb-install-dir</em>/isp/example.com.xml on the harddisk</li>
- <li>check for autoconfig.example.com</li>
- <li>look up of "example.com" in the ISPDB</li>
- <li>look up "MX example.com" in DNS, and for mx1.mail.hoster.com, look up "hoster.com" in the ISPDB</li>
- <li>try to guess (imap.example.com, smtp.example.com etc.)</li>
-</ol>
-<p>We may in the future add DNS SRV records as supported mechanism in the future, but we currently do not.</p>
-<h1 id="How_to_add_support_for_your_domain">How to add support for your domain</h1>
-<h2 id="Classification">Classification</h2>
-<p>If you are a big ISP (&gt; 100,000 users) providing email addresses solely under a few domains like "example.com" and "example.de", you may either submit the configuration to the ISPDB or set up a configuration server.<br>
- <br>
- If you support email aliases and the user's login name is not part of the email address (for example, users may have <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> as email address, but the IMAP/POP/SMTP login name is neither "hero" nor <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a>, but "u67578"), you need to set up a configuration server, which does the email address -&gt; login name lookup.<br>
- <br>
- If you host customer domains, i.e. you are "hoster.com", but your customers have <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@flintstone.com">"fred@flintstone.com"</a> and <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:louis@kent.com">"louis@kent.com"</a> as domains, with only a few users per domain, you need to set up a configuration server (or rely on DNS MX).<br>
- <br>
- If you are a small company installing Thunderbird on your employees' desktops, you can place a configuration file in the Thunderbird installation folder.</p>
-<h2 id="ISPDB">ISPDB</h2>
-<p>Database URL is <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/" title="https://live.mozillamessaging.com/autoconfig/v1.1/">&lt;https://live.mozillamessaging.com/autoconfig/v1.1/&gt;</a>, append domain name, e.g. <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de">&lt;https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de&gt;</a>.<br>
- <br>
- Current process: File a bug in <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Webtools&amp;component=ISPDB%20Database%20Entries&amp;op_sys=All&amp;rep_platform=All">Bugzilla</a>, Product "Webtools", Component "ISPDB Database Entries", with a configuration file that matches the requirements described below. Request review from bwinton, gozer or ben.bucksch.<br>
- <br>
- Future: add the configuration to the <a class="link-https" href="https://ispdb.mozillamessaging.com">ISPDB server app</a>.</p>
-<h2 id="Configuration_server_at_ISP">Configuration server at ISP</h2>
-<p>Given the email address <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@example.com">"fred@example.com"</a>, Thunderbird first checks &lt;<span class="external free"><a class="moz-txt-link-freetext external" href="http://autoconfig.example.com/mail/config-v1.xml?emailaddress=fred@example.com">http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</a></span>&gt; and then <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml" title="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml">&lt;http://example.com/.well-known/autoconfig/mail/config-v1.1.xml&gt;</a>.</p>
-<h3 id="Small_company">Small company</h3>
-<p>If you are a small company, you can put the XML configuration file on your web server, at URL <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml">&lt;http://example.com/.well-known/autoconfig/mail/config-v1.1.xml&gt;</a>. (This is not yet finalized and subject to change.)</p>
-<h3 id="Domain_hoster">Domain hoster</h3>
-<p>If you are an ISP that hosts domains for your customers - for example, you are hoster.com and your customer registers fancy.com or example.com, and your servers accept and serve the mail for example.com -, you should set up an autoconfig server.</p>
-<h4 id="DNS">DNS</h4>
-<p>For each customer domain, you add a DNS record (in addition to the existing MX, A www etc. DNS records):<br>
- <code>autoconfig IN A 10.2.3.4</code><br>
- or<br>
- <code>autoconfig IN CNAME autoconfig.hoster.com</code>.<br>
- ... where 10.2.3.4 and autoconfig.hoster.com are IP addresses / hostnames you own.<br>
- This allows Thunderbird to find you as hoster.</p>
-<p>To make the Version without an autoconfig DNS Entry work you have to make sure that example.com points to the Webserver you will place the config-v1.1.xml on.</p>
-<p>Example: <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">example.com A 10.2.3.4</span></p>
-<h4 id="Web_server">Web server</h4>
-<p>You set up a web server bound to a physical IP address. This may be on the same machine as other web servers, but the web server must be configured to the content to any requested domain.<br>
- <br>
- You must use an virtual host that match all autoconfig.* domains of your customers. In Apache terms, you can use a "ip-based virtual host". In the Apache configuration files, that means something like: Listen 10.2.3.4:80 (of course, you use a public IP address that you own)</p>
-<pre>&lt;VirtualHost 10.2.3.4:80&gt; #Must be the first and only virtual host with this ip!
-    DocumentRoot /var/www/autoconfig/
-    ServerName autoconfig.hoster.com
- &lt;Directory /var/www/autoconfig&gt;
- Order allow,deny
- allow from all
-    &lt;/Directory&gt;
-&lt;/VirtualHost&gt;</pre>
-<p>Place the configuration file at the URL /mail/config-v1.1.xml on that host.</p>
-<p>All config files must be served as <code>Content-Type: text/xml</code> (or <code>application/xml</code>), otherwise the file will be ignored. Also, they must use charset UTF-8 (esp. if there are any non-ASCII-characters).</p>
-<p>If you like to use name-based virtual hosts. You probably don't want to setup the autoconfig subdomain for every domain of your customers.<br>
- You can add a Rewriterule in the default virtual host (on debian /etc/apache2/sites-enabled/000-default)  to match all autoconfig.* subdomains:</p>
-<pre>&lt;VirtualHost *:80&gt; #Must be the first Virtual host
- ServerAdmin webmaster@hoster.com
- ServerName www
- DocumentRoot /var/www
- RewriteEngine On
- RewriteCond %{HTTP_HOST} ^autoconfig\. [NC]
- RewriteRule ^/(.*) http://autoconfig.hoster.com/$1 [L,R=301,NE]
- #...
-&lt;/VirtualHost&gt;
-&lt;VirtualHost *:80&gt;
-    DocumentRoot /var/www/autoconfig/
-    ServerName autoconfig.hoster.com
- &lt;Directory /var/www/autoconfig&gt;
-  Order allow,deny
- allow from all
-    &lt;/Directory&gt;
-&lt;/VirtualHost&gt;
-</pre>
-<p> </p>
-<p> </p>
-<h2 id="Configuration_file">Configuration file</h2>
-<p>This is described at <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">How to create a configuration file</a> and <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">defined</a> on the sub-pages.</p>
-<p>{{ languages( { "ja": "ja/Thunderbird/Autoconfiguration" } ) }}</p>
diff --git a/files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html b/files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html
deleted file mode 100644
index 0873a7d1f2..0000000000
--- a/files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: Deploying Thunderbird in the Enterprise
-slug: Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise
-tags:
- - Corporate
- - Corporation
- - NeedsTranslation
- - Thunderbird 3
- - TopicStub
- - enterprise
- - thunderbird
-translation_of: Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise
----
-<p>These documents and references are provided to help those involved in deploying Thunderbird in large institutions. </p>
-<p>The documents are maintained primarily by volunteers and are a work in progress.  In other words, there are improvements and additions still be made, <strong>and you can help make those changes</strong>.  If you have skills, experience or information that will make these items better in small ways or large, please edit the documents directly, after <a href="/en-US/docs/Project:MDN/Contributing/Join_the_community#Create_an_MDN_account">creating an MDN account</a> or registering with <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Enterprise" title="https://wiki.mozilla.org/Thunderbird/Enterprise">mozilla wiki</a> if you don't already have an account.  You may also comment on the Talk page to note items that may be missing or inaccurate.</p>
-<p><strong>References</strong></p>
-<ul>
- <li><a href="/en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise" title="en/Thunderbird/Deploying Thunderbird in the Enterprise/Upgrading Thunderbird in the Enterprise">Upgrading Thunderbird in the Enterprise</a></li>
- <li><a href="/en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Thunderbird_Preferences_Relevant_to_Enterprises" title="en/Thunderbird/Deploying Thunderbird in the Enterprise/Thunderbird Preferences Relevant to Enterprises">Thunderbird Preferences Relevant to Enterprises</a></li>
- <li><a href="/en/Thunderbird/Thunderbird_Enterprise_Tips" title="en/Thunderbird/Thunderbird_Enterprise_Tips">Thunderbird Enterprise Tips</a></li>
-</ul>
-<p><strong>Related information</strong></p>
-<ul>
- <li><a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Enterprise" title="https://wiki.mozilla.org/Thunderbird/Enterprise">Enterprise community, deployment, articles and help documents, and news wiki</a></li>
-</ul>
-<p>{{ languages( { "ja": "ja/Thunderbird/Deploying_Thunderbird_in_the_Enterprise" } ) }}</p>
diff --git a/files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/upgrading_thunderbird_in_the_enterprise/index.html b/files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/upgrading_thunderbird_in_the_enterprise/index.html
deleted file mode 100644
index b067ae50fd..0000000000
--- a/files/zh-tw/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/upgrading_thunderbird_in_the_enterprise/index.html
+++ /dev/null
@@ -1,260 +0,0 @@
----
-title: 於企業內升級 Thunderbird
-slug: >-
- Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise
-translation_of: >-
- Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise
----
-<div>{{ draft }}</div>
-
-<p>這是一篇關於幫助大型組織使用 Thunderbird 升級到 3 版的升級手冊 (也可稱之為 "企業")。 這份初步草稿是從草稿作者知識庫摘要 auto-sync / offline settings (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=562589" rel="nofollow" title="Bug 562589 -- RESOLVED FIXED -- Thunderbird/Migration -- If I disable migration wizard I'm in situation where all IMAP -folders are set to download no matter what I do to account in question (Needs a way to keep offline-use setting upon migration to Tb 3, even if Migration Assistant is disabled on purpose)">bug 562589</a>) 與 Thunderbird 3 與管理者相關的搬遷問題 (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=562589#c7" rel="nofollow" title="timo.pietila@helsinki.fi -- I have to say that IMO you are breaking one of the very fundamental features of IMAP by forcing offline download to get benefit of _VERY MINOR_ email client function. Gloda is mino ...">bug 562589#c7</a>) (如同 2010/05/06).</p>
-
-<h2 id="背景">背景</h2>
-
-<p>此份搬遷手冊針對典型的企業環境做出一些假設:</p>
-
-<ul>
- <li>IMAP 帳戶與目錄。</li>
- <li>大型郵件檔。</li>
- <li>"漫遊配置檔" 或某些接近於共用 (以支援備份/復原與行動用戶)。</li>
-</ul>
-
-<p>(The above requirements may not be compatible with the fact that the new global search (Gloda) is enabled by default on upgrade and IMAP folder automatic synchronization is enabled by default on upgrade. This is discussed further below.)</p>
-
-<p>企業環境通常需要執行大規模軟件升級,而不是為個人用戶升級軟件,此升級目標也許會是:</p>
-
-<ul>
- <li>解決早期版本已存在的錯誤。</li>
- <li>為了改善穩定性與可靠性。</li>
- <li>為了改善效能。</li>
- <li>為了改善可用性。</li>
- <li>盡可能減少或者使用戶用戶培訓簡易。</li>
- <li>盡可能減少對於新軟體與更新後的軟體,人員所需要的人力支援。</li>
-</ul>
-
-<p>相關資訊:</p>
-
-<ul>
- <li><a href="/en-US/docs/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Thunderbird_Preferences_Relevant_to_Enterprises">Thunderbird Preferences Relevant to Enterprises</a></li>
- <li><a href="/en-US/docs/Thunderbird/Deploying_Thunderbird_in_the_Enterprise" title="Thunderbird/Deploying Thunderbird in the Enterprise">Other resources: Forums, How Tos, ....</a></li>
-</ul>
-
-<h2 id="遷移指南_(Thunderbird_2_升級到_Thunderbird_3.0)"><span class="mw-headline">遷移指南 (Thunderbird 2 升級到 Thunderbird 3.0) </span></h2>
-
-<p>The major changes in Thunderbird 3.0 that are relevant to enterprise administrators include:</p>
-
-<ul>
- <li>Gloda (Global Search and Indexer). Enabled by default.</li>
- <li>Auto-sync of IMAP folders. Enabled by default.</li>
- <li>Per-folder "offline use" setting of all IMAP folders is changed to "offline use=On" by default upon migration.</li>
- <li>"Smart Folders" is default folder pane view, even if "All Folders" is user's choice in Thunderbird 2.</li>
-</ul>
-
-<p>For more detailed information about the changes between Thunderbird 2 and Thunderbird 3, see:</p>
-
-<ul>
- <li><a class="external text" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0/releasenotes/" rel="nofollow" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0/releasenotes/">Thunderbird Release Notes</a></li>
- <li><a class="external text" href="/en-US/docs/Thunderbird_3_for_users" rel="nofollow" title="https://developer.mozilla.org/en/Thunderbird_3_for_users">Thunderbird 3 for users</a></li>
- <li><a class="external text" href="/en-US/docs/Thunderbird_3_for_developers" rel="nofollow" title="https://developer.mozilla.org/En/Thunderbird_3_for_developers">Thunderbird 3 for developers</a></li>
-</ul>
-
-<p>As a general rule, administrators should deal with the process of upgrading Thunderbird and enabling new features separately. That is, they should try to keep the user setup as similar as possible between Thunderbird 2 and 3 and wait until the Thunderbird 3 upgrade is complete and stable before enabling Thunderbird 3 features.</p>
-
-<h3 id="在遷移前,停用附加元件以進行安全升級"><span class="mw-headline">在遷移前,停用附加元件以進行安全升級</span></h3>
-
-<p>Problems due to add-on are known. For example;</p>
-
-<ul>
- <li><a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=533692" rel="nofollow" title="Bug 533692 -- RESOLVED FIXED -- Thunderbird/General -- Kaspersky Anti-Spam Extension causes blank main window on 2.0.0.23 to 3.0 upgrade">Bug 562589</a> Kaspersky Anti-Spam Extension causes blank main window on 2.0.0.23 to 3.0 upgrade</li>
- <li><a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=543076" rel="nofollow" title='Bug 543076 -- RESOLVED INVALID -- MailNews Core/Networking: IMAP -- TB 3.0.1 does not handle IMAP Attachments correctly (bug of "Attachment size" add-on or some others)'>Bug 543076</a> TB 3.0.1 does not handle IMAP Attachments correctly (bug of "Attachment size" add-on or some others)</li>
-</ul>
-
-<p>To avoid such unwanted problems due to add-ons, next upgrade procedure is recommended for safe migration.</p>
-
-<ol>
- <li>Start Tb 2 with -safe-mode to make all add-ons disabled before upgrade.</li>
- <li>Keep backup of profile directory before upgrade.</li>
- <li>If possible, do uninstall of Thunderbird 2 and clean install of Thunderbird 3, instead of upgrade by software update by Thunderbird 2, for both safe migration and reducing of network traffic.</li>
-</ol>
-
-<h3 id="停用遷移幫手"><span class="mw-headline">停用遷移幫手</span></h3>
-
-<p>Enterprise sites that perform mass upgrades generally want to prevent users from performing Thunderbird upgrades on their own. An upgrade dialogue in the Thunderbird Migration Assistant should be disabled.</p>
-
-<pre>lockPref("mail.ui.show.migration.on.upgrade",false);</pre>
-
-<h3 id="停用全域_(全域搜索與索引)_以避免遷移後的索引"><span class="mw-headline">停用全域 (全域搜索與索引) 以避免遷移後的索引</span></h3>
-
-<p>Initail purpose of Gloda was solution of of problem like <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=383895" rel="nofollow" title='Bug 383895 -- NEW -- Thunderbird/Search -- Thunderbird Message Body/fulltext search or filter is painfully slow compared to Outlook on folders with lots of messages (both "quick search" and "search messages")'>Bug 383895</a> (slowness in body text search of local mail data). With enhancements and many improvements by Thuderbird 3 on auto-sync of IMAP folder, Gloda can be used also for IMAP folders very easily. So, gloda is very useful for everyday usage even for IMAP users: It can search messages very fast, much faster than an IMAP server can, and so notably increase productivity. Also, it will in the future have increased functionality in other areas.</p>
-
-<p>However, the new Thunderbird 3 search and index functionality initially impacts performance. (The indexer runs when Thunderbird 3 is first started and will continue to work until all the user's email is indexed. The more messages a user has, the longer the indexer will run.) Also, it uses diskspace on the client (about 1/2 (?) of mailbox size), which is a problem for roaming profiles.</p>
-
-<p>Gloda can be enabled by only single action after upgrade - check an option at Tools/Options/Advanced/General tab. So, to minimize user support workload after migration, we  recommend you to disable automatic enabling of Gloda durng migration by Thunderbird 3.</p>
-
-<blockquote>怎麼會? 可能嗎? 需要加強?</blockquote>
-
-<h3 id="停用自動同步,保持每個資料夾_離線使用_設定,以避免遷移後每個巨大的_IMAP_資料夾下載所有郵件"><span class="mw-headline">停用自動同步,保持每個資料夾 "離線使用" 設定,以避免遷移後每個巨大的 IMAP 資料夾下載所有郵件</span></h3>
-
-<p>Auto-sync of IMAP folders is enabled by default for all IMAP accounts. The per folder "offline use" setting of all IMAP folders is changed to "offline use=On" when Thunderbird 3 is launched the first time. To keep same settings as Thunderbird 2, disable the auto-sync and offline-use settings upon upgrade.</p>
-
-<p>完全停用自動同步 (auto-sync):</p>
-
-<pre>lockPref("mail.server.default.autosync_offline_stores", false);
-lockPref("mail.server." + serverFromAccount + ".autosync_offline_stores", false);
-</pre>
-
-<p>停用每個資料夾 "離線使用 (offline use)" 設定在遷移時設定變更 (Tb 3.0.5 到 Tb 3.1rc1):</p>
-
-<pre>lockPref("mail.server." + serverFromAccount + ".offline_download", false);
-</pre>
-
-<p>To disable per folder "offline use" setting change upon migration (Tb 3.1rc2 or later):</p>
-
-<pre>lockPref("mailnews.ui.show.migration.on.upgrade",false);
-</pre>
-
-<p>注意:</p>
-
-<ul>
- <li>mail.server.serverX.offline_download (default=true) of Tb 3.
- <ul>
- <li>When an IMAP folder is created or subscribed, set offline use=off if false, set offline use=on if true.<br>
- i.e. This setting is for default of offline use=on/off of an IMAP folder.</li>
- </ul>
- </li>
- <li>Enhancement of mail.server.serverX.offline_download=flase prior to upgrade to Tb 3(from Tb 3.0.5 to Tb 3.1rc1).
- <ul>
- <li>Upon first use of Tb 3, if mail.server.serverX.offline_download=false is set before upgrade, IMAP folder's "offline use" is not touched by Migration code of Tb 3 .</li>
- <li>It's enhanced by <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=562589" rel="nofollow" title="Bug 562589 -- RESOLVED FIXED -- Thunderbird/Migration -- If I disable migration wizard I'm in situation where all IMAP -folders are set to download no matter what I do to account in question (Needs a way to keep offline-use setting upon migration to Tb 3, even if Migration Assistant is disabled on purpose)">bug 562589</a>. This enhancement is already landed on Tb3.1pre and Tb3.2pre, and the enhancement has been landed on Tb 3.0.5pre(As of 2010/5/10).</li>
- </ul>
- </li>
- <li>Above enhancement of mail.server.serverX.offline_download=false prior to migration of bug 562589 has been removed by Bug 569161.
- <ul>
- <li>Code which changes offline-use=on/off of IMAP folders upon migration is moved to Migration Assistant by <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=569161" rel="nofollow" title="Bug 569161 -- VERIFIED FIXED -- Thunderbird/Migration -- New Migration Assistant does not honor Advanced IMAP Synchronization settings">bug 569161</a>. So, if Migration Assistant is disabled, offline-use setting of any IMAP folder is never touched upon migration to Tb 3.1 and Tb 3.2.</li>
- <li>Patch of bug 569161 is landed on Tb3.1rc2 and Tb3.2a1(As of 2010/06/07).</li>
- </ul>
- </li>
-</ul>
-
-<h4 id="在遷移後,如何啟用自動同步">在遷移後,如何啟用自動同步</h4>
-
-<p>Account Settings/Synchronization &amp; Disk Space</p>
-
-<ul>
- <li>[ ? ] Keep messages of this account on this computer</li>
-</ul>
-
-<p>Current behavior of UI for auto-sync setting.</p>
-
-<ul>
- <li>Unchecked-&gt;Checked
- <ol>
- <li>Set mail.server.serverX.offline_download=true</li>
- <li>Set offline use=on of all folders of the IMAP account</li>
- <li>Enable "Advanced" button to change offline-use setting of IMAP folders</li>
- </ol>
- </li>
- <li>Checked-&gt;Unchecked
- <ol>
- <li>Set mail.server.serverX.offline_download=false</li>
- <li>Set offline use=off of all folders of the IMAP account</li>
- <li>Disable "Advanced" button to change offline-use setting of IMAP folders</li>
- </ol>
- </li>
-</ul>
-
-<p>Note: There is a request for a design change in <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=537943" rel="nofollow" title='Bug 537943 -- NEW -- Thunderbird/Folder and Message Lists -- "Advanced" button at Synchronization&amp;amp;Disk Space should be enabled even if mail.server.serverX.offline_download=false is set, and is better to be called "Folder Property Manager".'>bug 537943</a>.</p>
-
-<p>Gloda and auto-sync/offline-use are possibly independent, although relevant.</p>
-
-<ul>
- <li>"Download Now" button downloads mail to offline-use regardless of offline-use=On/Off.</li>
- <li>"Download Now" button seems to be intercepted and discarded if auto-sync is enabled and offline-use=On. It looks due to already started schedule based automatic downloading.</li>
- <li>Auto-sync automatically downloads mail data to offline-store if auto-sync is enabled and if offline-use=On is set in an IMAP folder.</li>
- <li>"Work Offline" automatcally downloads mail data to offline-store automatically, if per folder offline-use=On is set in an IMAP folder.</li>
- <li>Gloda indexes mail data in offline-store, if mail data is saved in offline-store, perhaps regardless of auto-sync is enabled/disabled and offline-use=On/Off and Working Online/Working Offline.</li>
-</ul>
-
-<h3 id="修改資料夾面板檢視從_聰明資料夾_為_所有資料夾"><span class="mw-headline">修改資料夾面板檢視從 "聰明資料夾 " 為 "所有資料夾" </span></h3>
-
-<p>By default, Thunderbird 3 displays "Smart Folders" in the folder pane. (Smart Folders combine the messages in similarly named folders in multiple accounts, for example grouping Inbox messages from all accounts into a single Inbox on the Smart Folder pane.) If you want to preserve the default Thunderbird 2 behavior of showing "All Folders", advice users to select <strong>View | Folders | All</strong> from the menu.</p>
-
-<p>Can "forcing Smart Folders view" upon migration be stopped? How? Is it possible? Enhancement is needed?</p>
-
-<p>Note: "Smart Folders" is renamed to "Unified Folders" by Tb 3.1, and Tb 3.1 won't force it upon migration from Tb2 any more.</p>
-
-<h2 id="注意事項">注意事項</h2>
-
-<h3 id="由自動配置_(autoconfig)_帳戶定義"><span class="mw-headline">由自動配置 (autoconfig) 帳戶定義</span></h3>
-
-<p>When new accounts are created, the new "autoconfig" functionality is automatically invoked. Unless users have the correct account definition parameters, it may be confusing for them to configure their own accounts (if this is permitted).</p>
-
-<h3 id="IMAP_資料夾檔案的位置"><span class="mw-headline">IMAP 資料夾檔案的位置</span></h3>
-
-<p>By default, the IMAP folder file is located in each user's profile directory. If the user is storing a lot of messages for off-line access, this can result in too much data for a roaming profile. Regardless of whether or not there is a roaming profile, there may be if the profile is located on a network resource or if Microsoft Window's Offline File (CSC) is used for the offline storage file.</p>
-
-<p>If that is the case, you have two options:</p>
-
-<p>If the Gloda search and index is mandatory for IMAP mail data:</p>
-
-<ol>
- <li>Locate mail directory for IMAP account at location with which remote/network access won't happen(e.g. "Local Settings" of MS Win)</li>
- <li>Enable auto-sync, and set offline use=on of IMAP folders.</li>
- <li>Accept download of all mails to any PC which uses the IMAP account.</li>
- <li>Accept per PC thread pane column setting of the IMAP accout.
- <ul>
- <li>
- <dl>
- <dt> </dt>
- </dl>
-
- <dl>
- <dd>As thread pane column setting is currently saved in .msf file, and as you selected folder location other than profile directory, data in .msf can not be shared among PCs, even when you use Roaming Profile.</dd>
- </dl>
- </li>
- </ul>
- </li>
-</ol>
-
-<p>When Gloda is not needed for IMAP mail data:</p>
-
-<ol>
- <li>Locate IMAP folder file at any place you want.</li>
- <li>Disable auto-sync, and/or set offline use=off of all IMAP folders.
- <ul>
- <li>
- <dl>
- <dt> </dt>
- </dl>
-
- <dl>
- <dd>As new feature of "Disk Cache for mail in IMAP folder of offline-use=off" is added to Tb 3, mail data of viewed mail is held in far larger Disk Cache than very small memory cache of Thunderbird 2. So, frequency of problem like "repeatedly downloaded big attachment data" is reduced very much compared to Thunderbird 2.</dd>
- </dl>
- </li>
- </ul>
- </li>
-</ol>
-
-<p>As Gloda is first solution of problem of <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=383895" rel="nofollow" title='Bug 383895 -- NEW -- Thunderbird/Search -- Thunderbird Message Body/fulltext search or filter is painfully slow compared to Outlook on folders with lots of messages (both "quick search" and "search messages")'>Bug 383895</a> (slowness in body text search of local mail data), and as many IMAP servers have excellent body text search functionality, consider utilizing of online search first for IMAP mail data. If online search is usable, enabling of auto-sync/offline-use merely for Gloda can be avoided.</p>
-
-<h3 id="線上搜尋_IMAP_資料夾"><span class="mw-headline">線上搜尋 IMAP 資料夾</span></h3>
-
-<p>There is known with regards to online search (documented in <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=546925" rel="nofollow" title="Bug 546925 -- NEW -- Thunderbird/Search -- custom header search is non-functional ('Run search on server' of Edit/Find/Search Messages doesn't work any more)">Bug 546925</a> "Run search on server" of Edit/Find/Search Messages doesn't work). For now, users must use Quick Search or Virtual Folder (Saved Search folder) for online searches.</p>
-
-<h3 id="搜尋、自動同步、離線使用與_聰明資料夾"><span class="mw-headline">搜尋、自動同步、離線使用與 "聰明資料夾" </span></h3>
-
-<p>If IMAP folder of offline-use=off, full text search by Gloda won't work because of offline-use=off.</p>
-
-<p>And, if not all mails of IMAP folder of offline-use=on is downloaded into local offline-store file because of your setting for offline-store file size limitation, Gloda can't find not-downloaded mails of the IMAP folder.</p>
-
-<p>And, as "Smart Folder" is internally Virtual Folder(Saved Search Folder), a "Smart Folder" can be Virtual Folder with multiple search target folders in mixture of local mail folders, IMAP folders of offline-use=on(all mails are sync'ed), IMAP folders of offline-use=on(not all mails are sync'ed), and IMAP folders of offline-use=off.</p>
-
-<p>Never open bug at bugzilla.mozilla.org for "Search can't find my mail!" without sufficient checking of "what mail at what kind of folder is not hit by what kind of search at where", please.</p>
-
-<h2 id="遷移手冊_(Thunderbird_2_到_Thunderbird_3.1)"><span class="mw-headline">遷移手冊 (Thunderbird 2 到 Thunderbird 3.1) </span></h2>
-
-<p>(content needed)</p>
-
-<h2 id="遷移手冊_(Thunderbird_3.0_到_Thunderbird_3.1)"><span class="mw-headline">遷移手冊 (Thunderbird 3.0 到 Thunderbird 3.1) </span></h2>
-
-<p>(content needed)</p>
diff --git a/files/zh-tw/mozilla/thunderbird/index.html b/files/zh-tw/mozilla/thunderbird/index.html
deleted file mode 100644
index f0a48a2be0..0000000000
--- a/files/zh-tw/mozilla/thunderbird/index.html
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: Thunderbird
-slug: Mozilla/Thunderbird
-tags:
- - NeedsTranslation
- - TopicStub
- - thunderbird
-translation_of: Mozilla/Thunderbird
----
-<p><strong>Thunderbird</strong> is Mozilla's mail/messaging application. These pages document Thunderbird and also provide links to documentation about the <a href="/en-US/docs/tag/MailNews" title="tag/MailNews">MailNews</a> backend which is also used in other projects such as <a href="http://wiki.mozilla.org/Penelope">Eudora/Penelope</a>, <a href="http://www.seamonkey-project.org/">Seamonkey</a>, <a href="http://nkreeger.com/correo/">Correo</a>, etc.</p>
-<p>Thunderbird is Firefox's kid sibling, and is built on the same technical platform as the web browser. In development for many years, and currently one of the most popular open source email clients, it is used by millions of people around the world to bring together all their email accounts, newsgroup and feed reading in a familiar high-productivity environment.  (From early 2007 to early 2011 Thunderbird was developed by <a class="link-https" href="https://en.wikipedia.org/wiki/Mozilla_Messaging" title="https://en.wikipedia.org/wiki/Mozilla_Messaging">Mozilla Messaging</a>, a subsidiary that was owned by Mozilla.)</p>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
- <dl>
- <dt>
- <a href="https://developer.mozilla.org/en-US/docs/Simple_Thunderbird_build" title="Simple Thunderbird build">Building Thunderbird</a></dt>
- <dd>
- Information about building Thunderbird with the <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a> repository. There's also information about <a href="/en-US/docs/How_comm-central%27s_build_system_works" title="How_comm-central's_build_system_works">how comm-central works</a>, how the <a href="/en-US/docs/Mailnews_and_Mail_code_review_requirements" title="Mailnews and Mail code review requirements">review process works</a> and how to use the <a href="/en-US/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">Mozilla symbol server</a> to help with debugging.</dd>
- <dt>
- <a href="/en-US/docs/MailNews_Protocols" title="MailNews_Protocols">MailNews Protocols</a></dt>
- <dd>
- Rough documentation about mail protocols..</dd>
- <dt>
- <a href="/en-US/docs/DB_Views_%28message_lists%29" title="DB_Views_(message_lists)">Database views</a></dt>
- <dd>
- Backend information about {{ Interface("nsIMsgDBView") }} and related interfaces..</dd>
- <dt>
- <a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Thunderbird API documentation</a></dt>
- <dd>
- Thunderbird API documentation</dd>
- <dt>
- <a href="/en-US/docs/Extensions/Thunderbird" title="Extensions/Thunderbird/">Extension documentation</a></dt>
- <dd>
- Tutorials and tips for building Thunderbird extensions</dd>
- <dt>
- <a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing">Automated Testing</a></dt>
- <dd>
- Details of Thunderbird's automated testing facilities</dd>
- <dt>
- <a href="/en-US/docs/Thunderbird/Thunderbird_in_the_Enterprise" title="Thunderbird in the Enterprise">Thunderbird in the Enterprise</a></dt>
- <dd>
- Help with deploying Thunderbird in large organizations</dd>
- </dl>
- <p><span class="alllinks"><a href="/en-US/docs/tag/Thunderbird" title="tag/Thunderbird">View All...</a></span></p>
- </td>
- <td>
- <h2 class="Community" id="Community" name="Community">Community</h2>
- <ul>
- <li>Support is handled at <a href="http://getsatisfaction.com/mozilla_messaging" title="http://getsatisfaction.com/mozilla_messaging">getsatisfaction</a>.</li>
- <li>Extensions questions are frequently discussed on the dev-apps-thunderbird group: {{ DiscussionList("dev-apps-thunderbird", "mozilla.dev.apps.thunderbird") }}</li>
- <li>Development discussion happens on the tb-planning mailing list:
- <ul>
- <li><a class="link-https" href="https://mail.mozilla.org/listinfo/tb-planning" title="https://mail.mozilla.org/listinfo/tb-planning">subscribe</a></li>
- <li><a class="link-https" href="https://mail.mozilla.org/pipermail/tb-planning/" title="https://mail.mozilla.org/pipermail/tb-planning/">archives</a></li>
- </ul>
- </li>
- <li><a href="http://forums.mozillazine.org/viewforum.php?f=50">Mozillazine forums</a></li>
- <li><a href="http://www.mozillamessaging.com/">Mozilla Messaging web page</a></li>
- <li><a class="link-irc" href="irc://irc.mozilla.org/thunderbird">#thunderbird on irc.mozilla.org</a> (for Users)</li>
- <li><a class="link-irc" href="irc://irc.mozilla.org/maildev">#maildev on irc.mozilla.org</a> (for Developers)</li>
- <li>a list of all <a href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="Thunderbird communication channels">Thunderbird communication channels</a></li>
- </ul>
- <h2 class="Tools" id="Tools" name="Tools">Tools</h2>
- <ul>
- <li><a href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension developer's extension</a></li>
- <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li>
- </ul>
- <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
- <ul>
- <li><a href="/en-US/docs/Extensions" title="Extensions">Extensions</a></li>
- </ul>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
diff --git a/files/zh-tw/mozilla/thunderbird/thunderbird_extensions/index.html b/files/zh-tw/mozilla/thunderbird/thunderbird_extensions/index.html
deleted file mode 100644
index 4ce42f41a7..0000000000
--- a/files/zh-tw/mozilla/thunderbird/thunderbird_extensions/index.html
+++ /dev/null
@@ -1,135 +0,0 @@
----
-title: Thunderbird extensions
-slug: Mozilla/Thunderbird/Thunderbird_extensions
-tags:
- - Add-ons
- - Extensions
- - NeedsTranslation
- - TopicStub
- - thunderbird
-translation_of: Mozilla/Thunderbird/Thunderbird_extensions
----
-<div class="callout-box"><strong><a href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="en/Building_a_Thunderbird_extension">Building a Thunderbird extension</a></strong><br>
-Step-by-step explanation on how to build an extension for Thunderbird.</div>
-
-<div>
-<p>{{AddonSidebar}}</p>
-The following documentation provides help for creating extensions for Mozilla's <a class="internal" href="/en/Thunderbird" title="En/Thunderbird">Thunderbird</a> email client. Although there are many similarities with <a href="/en/Extensions" title="en/Extensions">Firefox extensions</a> there are also some differences that may confound the starting developer.</div>
-
-<div><br>
-<strong>Please help!</strong> You can <a class="internal" href="/en/Extensions/Thunderbird/HowTos" title="en/Extensions/Thunderbird/HowTos">add a how-to</a> (a question or an answer or a code snippet), <a class="internal" href="/en/Extensions/Thunderbird/Useful_newsgroups_discussions" title="En/Extensions/Thunderbird/Useful newsgroups discussions">summarize and link to a relevant newsgroup discussion</a>, or create a tutorial. Need help? Contact <a class="internal" href="/User:jenzed" title="User:jenzed">jenzed</a>.</div>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h2 id="Documentation" name="Documentation"><a href="/Special:Tags?tag=Extensions&amp;language=en" title="Special:Tags?tag=Extensions&amp;language=en">Documentation</a></h2>
-
- <h3 id="Getting_started_with_Thunderbird">Getting started with Thunderbird</h3>
-
- <p>A brave, young developer wants to develop an add-on for Thunderbird. Here's a few links to help them through this journey.</p>
-
- <ul>
- <li>Start by reading the tutorial and learn how to<a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="En/Building a Thunderbird extension"> build a Thunderbird extension</a> (Outdated, still talks about overlays and the add-on builder is no longer available but the tutorial has not been updated.)</li>
- <li>Read about the <a href="/en/Thunderbird/Main_Windows" title="Main Windows">main windows</a> so that you know what one means when they say « thread pane », « preview pane », and « folder pane ».</li>
-
- <li>Want to do some real stuff? See <a class="external" href="http://blog.xulforum.org/index.php?post/2011/03/14/Basic-MimeMessage-demo" title="http://blog.xulforum.org/index.php?post/2011/03/14/Basic-MimeMessage-demo">how to inspect a message</a> (demo add-on included!)</li>
- <li>Play with our other <a href="/en/Extensions/Thunderbird/Demo_Addon" title="Demo Addon">demo add-on</a> that exercises some more advanced Thunderbird-specific features</li>
- <li>Want to do even more stuff? Don't reinvent the wheel: steal functions from the <a class="link-https" href="https://github.com/protz/thunderbird-stdlib" title="https://github.com/protz/thunderbird-stdlib">thunderbird-stdlib</a> project (doc <a class="external" href="http://protz.github.com/thunderbird-stdlib/doc/symbols/_global_.html" title="http://protz.github.com/thunderbird-stdlib/doc/symbols/_global_.html">here</a>). Functions for dealing with messages (delete them, archive them, change their tags, etc.) are included.</li>
- <li>Haven't found what you're looking for? Read the <a class="internal" href="/en/Extensions/Thunderbird/HowTos" rel="internal" title="en/Extensions/Thunderbird/HowTos">Thunderbird how-tos</a>; they contain a lot of recipes for things extensions want to do.</li>
- <li>Still haven't managed to do what you wanted? See the list of all <a class="external" href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="http://wiki.mozilla.org/Thunderbird/CommunicationChannels">Thunderbird communication channels </a>so that you know where to ask when you get stuck :-).</li>
- <li>Feeling really brave? Read the source using a <a class="external" href="http://doxygen.db48x.net/comm-central/html/" title="http://doxygen.db48x.net/comm-central/html/">fancy interface</a>; you can often find tests that demonstrate how to do what you're trying to achieve.</li>
- </ul>
-
- <h3 id="The_Gloda_database">The Gloda database</h3>
-
- <p>Thunderbird has a subsystem called Gloda. Gloda stands for « Global Database », and creates Thunderbird-wide relations between objects. Gloda provides concepts such as Conversations, Messages, Identities, Contacts. All these concepts are related together: a Conversation contains Messages which are linked to Identities (<strong>from</strong> field, <strong>to</strong> field) which are themselves part of a Contact: indeed, a contact has multiple identities.</p>
-
- <p>Typical use cases for Gloda: find all messages whose subject matches [search term], find all messages from [person], find all messages in the same thread as [a given message], find all messages involving [person], etc. etc.</p>
-
- <p>Gloda is extremely powerful and is used heavily by add-ons such as <a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/gmail-conversation-view/" title="https://addons.mozilla.org/en-US/thunderbird/addon/gmail-conversation-view/">Thunderbird Conversations</a>. Learn more about Gloda:</p>
-
- <ul>
- <li>an overview of <a href="/en/Thunderbird/gloda" title="Gloda">Gloda</a></li>
- <li>learn how to create <a href="/en/Thunderbird/Creating_a_Gloda_message_query" title="Creating a gloda message query">your first message query</a> and read the <a href="/en/Thunderbird/Gloda_examples" title="Gloda examples">gloda examples</a></li>
- <li>learn about the Gloda internals: <a href="/en/Thunderbird/Gloda_debugging" title="Gloda debugging">Gloda debugging</a>, <a href="/en/Thunderbird/Gloda_indexing" title="Gloda indexing">Gloda indexing</a></li>
- </ul>
-
- <h3 id="More_Thunderbird-specific_links">More Thunderbird-specific links</h3>
-
- <p>Some of these links may be wildly out of date, but they still provide valuable information on the codebase.</p>
-
- <ul>
- <li><a class="internal" href="/en/Extensions/Thunderbird/An_overview_of_the_Thunderbird_interface" title="En/Extensions/Thunderbird/An overview of the Thunderbird interface">An overview of Thunderbird components</a></li>
- <li><a class="internal" href="/en/Extensions/Thunderbird/Thunderbird_developer_reference_docs" title="en/Extensions/Thunderbird/Thunderbird developer reference docs">Developer reference docs</a>:
- <ul>
- <li><a class="internal" href="/en/Folders" title="En/Folders">Folder classes</a></li>
- <li><a class="internal" href="/en/DB_Views_(message_lists)" title="En/DB Views (message lists)">DB views (message list)</a></li>
- <li><a class="internal" href="/en/Message_Summary_Database" title="En/Message Summary Database">Message summary database</a></li>
- <li><a class="internal" href="/en/MailNews_Protocols" title="En/MailNews Protocols">MailNews protocols</a></li>
- <li><a class="internal" href="/En/MailNews_Filters" rel="internal" title="En/MailNews Filters">MailNews filters</a></li>
- <li><a class="internal" href="/en/Extensions/Thunderbird/Error_reporting_tools" title="en/Extension Library/Extensions/Thunderbird/Error reporting tools">Error reporting tools</a></li>
- <li><a href="/en/Toolkit_API/STEEL" title="en/Toolkit API/STEEL">STEEL library</a> (obsolete as of Thunderbird 52, use <a class="link-https" href="https://github.com/protz/thunderbird-stdlib" title="https://github.com/protz/thunderbird-stdlib">https://github.com/protz/thunderbird-stdlib</a>)</li>
- <li><a class="external" href="http://quetzalcoatal.blogspot.com/2010/01/developing-new-account-types-part-0.html" title="http://quetzalcoatal.blogspot.com/2010/01/developing-new-account-types-part-0.html">Developing new account types</a> <strong>NEW!</strong></li>
- </ul>
- </li>
- <li><a class="internal" href="/en/Extensions/Thunderbird/Useful_newsgroups_discussions" title="En/Extensions/Thunderbird/Useful newsgroups discussions">Useful newsgroup discussions</a> (watch out, anything that's too old should be regarded suspiciously; there's been significant API rewrite over the past years, and most of these techniques are considerably easier now) </li>
- <li><a href="/en/Thunderbird/Thunderbird_API_documentation" title="en/Thunderbird/Thunderbird API documentation">Thunderbird API docs</a> (mostly a collection of out-of-date pages, relevance is rather dubious) </li>
- <li><a href="/en/Mozilla/Thunderbird/Releases" title="Thunderbird developer release notes">Thunderbird developer release notes</a> - changes in the recent Thunderbird updates affecting add-on developers. <a href="/Thunderbird_5_for_developers" title="Thunderbird 5 for developers">Thunderbird 5 for developers</a> has important information on MsgHdrToMimeMessage which is a central piece of code.</li>
- </ul>
-
- <h3 id="General_links">General links</h3>
-
- <ul>
- <li><a href="/en/Extensions/Thunderbird/Finding_the_code_for_a_feature" title="en/Extensions/Thunderbird/Finding the code for a feature">Finding the code for a feature</a></li>
- <li><a class="external" href="http://kb.mozillazine.org/Category:Thunderbird" title="http://kb.mozillazine.org/Category:Thunderbird">Mozillazine articles on Thunderbird</a></li>
- <li><a href="/Special:Tags?tag=Thunderbird" title="https://developer.mozilla.org/Special:Tags?tag=Thunderbird">All pages tagged with Thunderbird</a></li>
- <li><a href="/Special:Tags?tag=MailNews" title="https://developer.mozilla.org/Special:Tags?tag=MailNews">All pages tagged with MailNews</a></li>
- </ul>
- </td>
- <td>
- <h2 id="Community" name="Community">Community</h2>
-
- <ul>
- <li>See the list of all <a class="external" href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="http://wiki.mozilla.org/Thunderbird/CommunicationChannels">Thunderbird communication channels </a>first</li>
- <li>Among these are:</li>
- </ul>
-
- <p>{{ DiscussionList("dev-extensions", "mozilla.dev.extensions") }}</p>
-
- <ul>
- <li><a class="link-irc" href="irc://moznet/#extdev">#extdev IRC channel</a> / <a class="link-irc" href="irc://moznet/#maildev">#maildev IRC channel</a></li>
- <li><a class="external" href="http://forums.mozillazine.org/viewforum.php?f=19">MozillaZine forum</a></li>
- <li><a class="external" href="http://mozdev.org/mailman/listinfo/project_owners">mozdev project owners</a></li>
- <li><a href="/en/Extensions/Community" title="en/Extensions/Community">Other community links...</a></li>
- </ul>
-
- <h2 id="Tools" name="Tools">Tools</h2>
-
- <ul>
- <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a> edit the live DOM (Firefox and Thunderbird)</li>
- <li><a class="link-https" href="https://addons.mozilla.org/thunderbird/addon/workspace-for-thunderbird/" title="https://addons.mozilla.org/thunderbird/addon/workspace-for-thunderbird/">Workspace for Thunderbird</a>, allows running code snippets in Thunderbird and inspecting variable structure and content</li>
- <li><a class="external" href="http://www.hacksrus.com/~ginda/venkman/" rel="external nofollow" title="http://www.hacksrus.com/~ginda/venkman/">Venkman</a>, a JavaScript debugger (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/216">Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/216">Thunderbird</a>)</li>
- <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/7434/" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer's Extension</a> a suite of development tools</li>
- <li><a class="external" href="http://www.gijsk.com/" rel="external nofollow" title="http://www.gijsk.com/">Chrome List</a> view files in chrome:// (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/4453">Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/4453">Thunderbird</a>)</li>
- <li><a href="/en/Mozmill" title="en/Mozmill">Mozmill</a> test tool and framework</li>
- <li><a class="external" href="http://xpcomviewer.mozdev.org/" rel="external nofollow" title="http://xpcomviewer.mozdev.org">XPCOMViewer</a> an XPCOM inspector (Firefox and Thunderbird)</li>
- </ul>
-
- <p>... <a class="internal" href="/en/Setting_up_extension_development_environment#Development_extensions" title="en/Setting up extension development environment#Development extensions">more tools</a> ...</p>
-
- <p><span class="alllinks"><a href="/Special:Tags?tag=Extensions:Tools&amp;language=en" title="Special:Tags?tag=Extensions:Tools&amp;language=en">View All...</a></span></p>
-
- <h2 id="Related_Topics" name="Related_Topics">Related Topics</h2>
-
- <dl>
- <dd><a href="/en/XUL" title="en/XUL">XUL</a>, <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/en/Themes" title="en/Themes">Themes</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p><span class="comment">Categories</span></p>
-
-<p>{{ languages( { "ja": "ja/Extensions/Thunderbird" } ) }}</p>
diff --git a/files/zh-tw/mozilla/thunderbird/thunderbird_extensions/theme_packaging/index.html b/files/zh-tw/mozilla/thunderbird/thunderbird_extensions/theme_packaging/index.html
deleted file mode 100644
index 9aeb61d94f..0000000000
--- a/files/zh-tw/mozilla/thunderbird/thunderbird_extensions/theme_packaging/index.html
+++ /dev/null
@@ -1,105 +0,0 @@
----
-title: 包裝佈景主題
-slug: Mozilla/Thunderbird/Thunderbird_extensions/Theme_Packaging
-tags:
- - Toolkit API
- - 佈景主題
-translation_of: Mozilla/Thunderbird/Thunderbird_extensions/Theme_Packaging
----
-<p>本文描述包裝 Firefox 及 Thunderbird 之<a href="zh_tw/%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c">佈景主題</a>的方法。</p>
-<h3 id=".E9.9C.80.E6.B1.82" name=".E9.9C.80.E6.B1.82">需求</h3>
-<p>製作 Firefox 或 Thunderbird 的佈景主題需要懂層疊樣式表(<a href="zh_tw/CSS">CSS</a>)、會一點 <a href="zh_tw/XBL">XBL</a>、還要有美術繪圖設計等能力(不過也不見得一定要)。本文只說明包裝佈景主題以便顯示於 Firefox 佈景主題視窗的方法。</p>
-<h3 id=".E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C.E6.AA.94.E6.A1.88.E6.9E.B6.E6.A7.8B" name=".E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C.E6.AA.94.E6.A1.88.E6.9E.B6.E6.A7.8B">佈景主題檔案架構</h3>
-<p>Firefox 及 Thunderbird 的佈景主題是一個將資料以下列結構包裝的 JAR 檔案:</p>
-<pre class="eval">theme.jar:
- install.rdf
- contents.rdf
- preview.png
- icon.png
- browser/<i>一堆檔案</i>
- global/<i>一堆檔案</i>
- mozapps/<i>一堆檔案</i>
- communicator/<i>一堆檔案</i>
- ...
-
-</pre>
-<ul>
- <li>最頂層必須有個 <a href="zh_tw/Chrome.manifest">chrome.manifest</a> 檔(適用於 Firefox 或 Thunderbird 1.5 以上)或 contents.rdf 來將佈景主題註冊到 chrome 中,另外還需要一個 <a href="zh_tw/Install.rdf">install.rdf</a> 清單記載佈景主題視窗中需要用到的資訊。</li>
- <li>preview.png 是佈景主題視窗中會出現的預覽圖,尺寸大小不限。</li>
- <li>icon.png 是 32x32 的 PNG 檔(可以有 alpha 半透明資訊),會出現於佈景主題視窗的佈景列表中。</li>
-</ul>
-<h3 id="install.rdf" name="install.rdf">install.rdf</h3>
-<p><a href="zh_tw/Install.rdf">install.rdf</a> 清單長得像這樣:</p>
-<pre class="eval"><span class="nowiki">&lt;?xml version="1.0"?&gt;
-
- &lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
-
- &lt;Description about="urn:mozilla:install-manifest"&gt;
- &lt;em:type&gt;4&lt;/em:type&gt;
- ''其他特性''
- &lt;/Description&gt;
- &lt;/RDF&gt;</span>
-</pre>
-<h4 id=".E5.BF.85.E5.82.99.E7.89.B9.E6.80.A7" name=".E5.BF.85.E5.82.99.E7.89.B9.E6.80.A7">必備特性</h4>
-<p>install.rdf 檔中必須含有下列特性:</p>
-<ul>
- <li>em:id</li>
- <li>em:version</li>
- <li>em:type</li>
- <li>em:targetApplication</li>
- <li>em:name</li>
- <li>em:internalName</li>
-</ul>
-<p>詳細資訊請見 <a href="zh_tw/Install.rdf">install.rdf 參考</a>。</p>
-<h4 id=".E9.81.B8.E7.94.A8.E7.89.B9.E6.80.A7" name=".E9.81.B8.E7.94.A8.E7.89.B9.E6.80.A7">選用特性</h4>
-<ul>
- <li>em:description</li>
- <li>em:creator</li>
- <li>em:contributor</li>
- <li>em:homepageURL</li>
- <li>em:updateURL</li>
-</ul>
-<p>如果你想將佈景主題送上 <a class="external" href="http://addons.mozilla.org">addons.mozilla.org</a>,則 updateURL 就是必備的特性。</p>
-<h4 id=".E7.AF.84.E4.BE.8B" name=".E7.AF.84.E4.BE.8B">範例</h4>
-<pre class="eval"><span class="nowiki">&lt;?xml version="1.0"?&gt;
-
- &lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
-
- &lt;Description about="urn:mozilla:install-manifest"&gt;
- &lt;em:id&gt;{18b64b56-d42f-428d-a88c-baa413bc413f}&lt;/em:id&gt;
- &lt;em:version&gt;1.0&lt;/em:version&gt;
- &lt;em:type&gt;4&lt;/em:type&gt;
-
- &lt;!-- 擴充套件的適用軟體,含最低需求及上限版本資訊。 --&gt;
- &lt;em:targetApplication&gt;
- &lt;Description&gt;
- &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
- &lt;em:minVersion&gt;0.8&lt;/em:minVersion&gt;
- &lt;em:maxVersion&gt;0.9&lt;/em:maxVersion&gt;
- &lt;/Description&gt;
- &lt;/em:targetApplication&gt;
-
- &lt;!-- 使用者會看到的資訊 --&gt;
- &lt;em:name&gt;New Theme 1&lt;/em:name&gt;
- &lt;em:description&gt;A test theme for Firefox&lt;/em:description&gt;
- &lt;em:creator&gt;Ben Goodger&lt;/em:creator&gt;
- &lt;em:contributor&gt;John Doe&lt;/em:contributor&gt;
- &lt;em:homepageURL&gt;http://www.bengoodger.com/&lt;/em:homepageURL&gt;
-
- &lt;!-- 佈景主題管理員內部所用的識別名稱 --&gt;
- &lt;em:internalName&gt;newtheme1&lt;/em:internalName&gt;
- &lt;/Description&gt;
- &lt;/RDF&gt;</span>
-</pre>
-<p>以下是幾個 targetApplication 特性常用的應用程式 GUID:</p>
-<pre class="eval">Firefox {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
-Thunderbird {3550f703-e582-4d05-9a08-453d09bdfdc6}
-Sunbird {718e30fb-e89b-41dd-9da7-e25a45638b28}
-</pre>
-<h3 id="Toolkit_API_.E5.AE.98.E6.96.B9.E5.8F.83.E8.80.83.E6.96.87.E4.BB.B6" name="Toolkit_API_.E5.AE.98.E6.96.B9.E5.8F.83.E8.80.83.E6.96.87.E4.BB.B6"><a href="zh_tw/Toolkit_API">Toolkit API</a> 官方參考文件</h3>
-<div>
- {{page("/zh-TW/docs/Toolkit_API/Official_References")}}</div>
-<div class="noinclude">
-  </div>
diff --git a/files/zh-tw/prism/index.html b/files/zh-tw/prism/index.html
deleted file mode 100644
index 30d3f7d7db..0000000000
--- a/files/zh-tw/prism/index.html
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Prism
-slug: Prism
-tags:
- - prism
-translation_of: Archive/Mozilla/Prism
----
-<p><img align="right"> Prism 是以 XULRunner 為基礎的極簡化瀏覽器,可以讓網際應用程式不必透過一般瀏覽器介面就能直接執行。Prism 的主要概念是「特定網站專用瀏覽器」,就好比為某個網際應用程式量身訂做的瀏覽器一樣,無需選單、工具列及其他傳統瀏覽器的元件。這類專屬瀏覽器能為其網際應用程式提供與作業系統更緊密的整合,所以能同時擁有一般單機程式與網際應用程式雙方面的好處。</p>
-<h3 id=".E5.A5.BD.E8.99.95" name=".E5.A5.BD.E8.99.95">好處</h3>
-<ul>
- <li><b>分隔運作程序</b> Web apps can hog memory or processor cycles or even bring down the whole browser in extreme cases. By running each app in its own process, we minimize the impact of any mishaps. We can also benefit from operating system tools that less us view the memory/CPU consumption of a specific application.</li>
- <li><b>使用介面極簡化:</b> A general-purpose browser UI is not necessary or appropriate for most web apps. It is more efficient to provide a UI that is specific to the application. This also cuts down on UI clutter (hence the term <a class="external" href="http://www.hawkwings.net/2006/05/13/a-dedicated-distraction-free-browser-for-gmail/">distraction-free browser</a>).</li>
- <li><b>與作業系統整合:</b> Support of desktop features can make using the app more natural and convenient for end users. This includes the ability to create desktop shortcuts, to place the application icon in the tray or dock and to display pop-up notifications.</li>
- <li><b>專屬自訂方式:</b> Apps can be run using a shared browser runtime and customized using client-side script (similar to Greasemonkey). Custom stylesheets can be used to tweak the UI.</li>
-</ul>
-<h3 id=".E6.9E.B6.E6.A7.8B.E6.A6.82.E8.A7.80" name=".E6.9E.B6.E6.A7.8B.E6.A6.82.E8.A7.80">架構概觀</h3>
-<p>Prism 是個 <a href="zh_tw/Creating_XULRunner_Apps_with_the_Mozilla_Build_System">XULRunner 軟體</a>,其中除了 XULRunner 內建的瀏覽器引擎外還包括:</p>
-<ul>
- <li><b>網際軟體包管理</b>: Code for creating new web app bundles and loading existing bundles.</li>
- <li><b>捷徑建立介面</b>: A dialog box lets the user specify attributes of the web app (name, URI, icon, shortcut locations).</li>
- <li><b>JavaScript API</b>: An API that can be used by scripts inside the bundle to customize the application. We are refining this approach to make the API applicable in as many environments as possible (e.g. it might be useful even for applications running in a normal browser). It should be possible for developers to include Prism-style extension direclty in their web app. We would like to harmonize our API with those of similar projects such as <a class="external" href="http://livedocs.adobe.com/labs/air/1/jslr/">Adobe AIR</a> and <a class="external" href="http://code.google.com/apis/gears/">Google Gears</a>.</li>
- <li><b>作業系統整合功能</b>: Binary components provided access to OS-specific features like shortcut creation and dock/tray icons. We intend to propose these extensions for inclusion in future versions of XULRunner.</li>
- <li><b>Firefox 擴充套件:</b>: A Firefox extension, code-named "Refractor", can be used to spin out new Prism apps from inside the web browser. Refractor adds a new menu item to call up the shortcut creation dialog for inside Firefox. Web apps can also point to a complete web app bundle or some elements of a web app (like higher resolution icons). Refractor automatically takes this information into account.</li>
-</ul>
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h4 id=".E6.96.87.E4.BB.B6" name=".E6.96.87.E4.BB.B6"><a>文件</a></h4>
- <dl>
- <dt>
- <a href="zh_tw/Prism/FAQ">常見問題集</a></dt>
- <dd>
-  </dd>
- <dt>
- <a href="zh_tw/Prism/%e8%bb%9f%e9%ab%94%e5%8c%85">軟體包</a></dt>
- <dd>
- <small>將網際應用程式的設定、圖示及其他專屬自訂檔「包」在 ZIP 壓縮檔內方便使用。</small></dd>
- <dt>
- <a href="zh_tw/Prism/%e8%a8%ad%e5%ae%9a">設定</a></dt>
- <dd>
- <small>A webapp bundle should contain a webapp.ini configuration file. The configuration file is a simple, INI-style text file that specifies some parameters about a web application.</small></dd>
- <dt>
- <a href="zh_tw/Prism/%e6%a8%a3%e5%bc%8f">樣式</a></dt>
- <dd>
- <small>One of Prism's goals is to make web applications feel more like desktop applications. One way to make the illusion seem more real is to use styling (or theming). Prism supports a simple styling system that allows the user to add CSS files to the webapp bundle.</small></dd>
- <dt>
- <a href="zh_tw/Prism/%e4%b8%bb%e8%a6%96%e7%aa%97">主視窗</a></dt>
- <dd>
- <small>Prism provides a simple, scaled down browser window for running web applications. Using configuration files and webapp scripting, the host window can be modified.</small></dd>
- <dt>
- <a href="zh_tw/Prism/%e5%ae%89%e8%a3%9d%e7%a8%8b%e5%bc%8f">安裝程式</a></dt>
- <dd>
- <small>安裝 Prism。</small></dd>
- </dl>
- <p><span class="alllinks"><a>全部列出…</a></span></p>
- </td>
- <td>
- <h4 id=".E7.A4.BE.E7.BE.A4" name=".E7.A4.BE.E7.BE.A4">社群</h4>
- <ul>
- <li><a href="zh_tw/Prism/%e7%b6%b2%e8%aa%8c%e6%96%87%e7%ab%a0">相關網誌文章收集</a></li>
- <li><a class="link-https" href="https://labs.mozilla.com/forum/index.php/board,16.0.html">Mozilla Labs 上的討論區</a></li>
- <li><a class="external" href="http://wiki.mozilla.org/Prism">Mozilla wiki 上的相關文章</a> (包括 <a class="external" href="http://wiki.mozilla.org/Prism#Installs">安裝步驟</a>)</li>
- <li><a class="link-irc" href="irc://irc.mozilla.org/prism">#prism on irc.mozilla.org</a></li>
- </ul>
- <h4 id=".E5.85.B6.E4.BB.96.E6.9D.B1.E8.A5.BF" name=".E5.85.B6.E4.BB.96.E6.9D.B1.E8.A5.BF">其他東西</h4>
- <ul>
- <li><a href="zh_tw/Prism/%e8%bb%9f%e9%ab%94%e5%8c%85%e4%b8%ad%e5%bf%83">軟體包中心</a></li>
- <li><a href="zh_tw/Prism/%e6%93%b4%e5%85%85%e5%a5%97%e4%bb%b6">擴充套件</a></li>
- </ul>
- <h4 id=".E4.B8.80.E8.B5.B7.E6.90.9E.E5.90.A7.EF.BC.81" name=".E4.B8.80.E8.B5.B7.E6.90.9E.E5.90.A7.EF.BC.81">一起搞吧!</h4>
- <ul>
- <li><a class="external" href="http://svn.mozilla.org/projects/webrunner/">在 SVN 裡有原始碼</a></li>
- <li>Bugzilla (程式錯誤及建議回報) <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;product=Mozilla+Labs&amp;component=Prism&amp;resolution=---&amp;chfieldto=Now">既有問題</a>,<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Mozilla+Labs&amp;component=Prism">回報新錯誤</a></li>
- </ul>
- <h4 id=".E7.9B.B8.E9.97.9C.E4.B8.BB.E9.A1.8C" name=".E7.9B.B8.E9.97.9C.E4.B8.BB.E9.A1.8C">相關主題</h4>
- <dl>
- <dd>
- <a href="zh_tw/XULRunner">XULRunner</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-<p> </p>
-<p> </p>
-<div class="noinclude">
-  </div>
-<p>{{ languages( { "en": "en/Prism", "fr": "fr/Prism" } ) }}</p>
diff --git a/files/zh-tw/prism/主視窗/index.html b/files/zh-tw/prism/主視窗/index.html
deleted file mode 100644
index d8e06c3a60..0000000000
--- a/files/zh-tw/prism/主視窗/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: 主視窗
-slug: Prism/主視窗
-tags:
- - prism
-translation_of: Archive/Mozilla/Prism/HostWindow
----
-<p>Prism 執行網際應用程式時,是以非常簡單的視窗呈現。視窗上仍有一些介面組件(如圖所示),而Prism 可以<a href="zh_tw/Prism/Configuration">設定</a>某些介面組件的顯示與否。</p>
-<p><img alt="Image:webrunner-ui.gif"></p>
-<ul>
- <li><b>位址列</b> - A readonly textbox that contains the currently displayed URL. When not displayed the entire location bar section is hidden.</li>
- <li><b>側邊欄</b> - Section of window area used to display ancillary web content, including web applications. When the sidebar is displayed, the splitter can be used to change the width or quickly collapse it. The splitter itself cannot be hidden as it is the only UI to show a collapsed sidebar. When not displayed the entire sidebar area, including the splitter are hidden.</li>
- <li><b>狀態</b> - Area of the statusbar that displays the loading status message and a "percent complete" progress bar. When not displayed, the statusbar is still visible, but the status messages and progressbar are not shown.</li>
- <li><b>選單</b> - A popup menu showing several Prism-specific commands.</li>
-</ul>
-<p>註:</p>
-<ul>
- <li>此視窗的標題會隨網際應用程式的標題而改變。</li>
- <li>狀態列一定會顯示出來,一是為了顯示選單鈕、二則是有安全性的需求。</li>
-</ul>
-<p>{{ languages( { "en": "en/Prism/HostWindow" } ) }}</p>
diff --git a/files/zh-tw/prism/安裝程式/index.html b/files/zh-tw/prism/安裝程式/index.html
deleted file mode 100644
index d3ab5e831a..0000000000
--- a/files/zh-tw/prism/安裝程式/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: 安裝程式
-slug: Prism/安裝程式
-tags:
- - prism
-translation_of: Archive/Mozilla/Prism/Installer
----
-<p>安裝程式需將 *.webapp 檔的關聯程式設定為 Prism,這麼一來雙點 *.webapp 檔時才會自動用 Prism 開啟網際應用程式。
-</p><p>目前 Windows 跟 Mac 的安裝程式都可以自動設定關聯。
-</p><p>這麼一來還有另一個好處:當點選網頁上的 .webapp 檔時也能自動以 Prism 開啟!不過在 Firefox 中這招只在伺服器將 .webapp 檔做為 application/x-webrunner 送出時才有用,而 IE 倒不會檢查這點。(參考<a class="external" href="http://blondechris.com/www/gmail.webapp">這個例子</a>)
-</p>{{ languages( { "en": "en/Prism/Installer" } ) }}
diff --git a/files/zh-tw/profile_manager/index.html b/files/zh-tw/profile_manager/index.html
deleted file mode 100644
index a1f40c3a8d..0000000000
--- a/files/zh-tw/profile_manager/index.html
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Profile Manager
-slug: Profile_Manager
-translation_of: Mozilla/Profile_Manager
----
-<p>Firefox and other XULRunner applications store user settings and data in special folders, called <a class="external" href="http://support.mozilla.com/en-US/kb/Profiles" title="http://support.mozilla.com/en-US/kb/Profiles">profiles</a>.    Firefox provides a built-in applet to <a class="external" href="http://support.mozilla.com/en-US/kb/Managing%20profiles" title="http://support.mozilla.com/en-US/kb/Managing profiles">manage these profiles</a>, but it will eventually be going away (see <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=214675" title="https://bugzilla.mozilla.org/show_bug.cgi?id=214675">bug 214675</a>), so a new standalone Profile Manager application has been created, which works with any XULRunner application, and has many features not found in Firefox's built-in version.</p>
-<h2 id="Downloading">Downloading</h2>
-<h4 id="Binaries">Binaries</h4>
-<p>You can download Profile Manager builds from <a class="link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/utilities/profilemanager/1.0/" title="ftp://ftp.mozilla.org/pub/mozilla.org/utilities/profilemanager/1.0/">ftp://ftp.mozilla.org/pub/mozilla.org/utilities/profilemanager/1.0/</a>.  There is no installer; just extract the files from the archive. </p>
-<p>System requirements:</p>
-<ul>
- <li>Mac: an Intel processor, i386 or x86_64</li>
- <li>Linux: any version capable of running Firefox 4.0</li>
- <li>Windows: XP or later</li>
-</ul>
-<h4 id="Source_code">Source code</h4>
-<p>You can download the source as well:</p>
-<p style="margin-left: 40px;"><code>hg clone <a class="external" href="http://hg.mozilla.org/automation/profilemanager" rel="freelink">http://hg.mozilla.org/automation/profilemanager</a></code>/</p>
-<p>Instructions for building can be found in <a class="external" href="http://hg.mozilla.org/automation/profilemanager/file/tip/BUILD.txt" title="http://hg.mozilla.org/automation/profilemanager/file/tip/BUILD.txt">BUILD.txt</a>.</p>
-<h2 id="Reporting_Bugs">Reporting Bugs</h2>
-<p>Profile Manager bugs should be reported in Bugzilla, under <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Testing&amp;Component=ProfileManager" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=Testing&amp;Component=ProfileManager">Testing -&gt; ProfileManager</a>.</p>
-<h2 id="Starting_Profile_Manager">Starting Profile Manager</h2>
-<p>To start Profile Manager, just launch profilemanager.exe (on Windows) or profilemanager-bin (on Linux and Mac).  By default, Profile Manager will manage Firefox profiles, but you can also use it to work with profiles of other xulrunner apps, like Thunderbird or SeaMonkey.  To use Profile Manager with an application other than Firefox, you need to launch it using the application's name as an argument, for example:</p>
-<p> </p>
-<p style="margin-left: 40px;"><code>profilemanager-bin seamonkey</code></p>
-<h2 id="Profiles_and_application_versions">Profiles and application versions</h2>
-<p>Profile Manager manages two different lists: one of user profiles, and the other of application versions that can be used with the profiles.  By default, this means it tracks a list of Firefox applications that are installed on your system, and a list of profiles for use by Firefox.</p>
-<p> </p>
-<p>An individual profile can be linked to a specific installation of Firefox, so that version of Firefox will be launched when that profile is selected.  For example, ProfileA might be linked with a copy of Firefox 3.6.10, while ProfileB might be linked with a copy of Firefox 3.5.3.</p>
-<p>When launched, Profile Manager will look in some default locations for installed versions of Firefox (or other application you're using Profile Manager with).  Additionally, you can manually add Firefox versions by clicking the "Manage Firefox versions..." button:</p>
-<p> <img alt=""></p>
-<p>Each Firefox version in the list has the following properties:  path, version, and default.  The default property indicates that this version of Firefox will be used with profiles that don't have a specific application version associated with them.</p>
-<p> </p>
-<h2 id="Creating_a_profile">Creating a profile</h2>
-<p>To create a new profile, just click the New button from Profile Manager's toolbar.  A dialog will appear that allows you to specify the profile's name, and optionally the profile's path, and the version of Firefox (or other application) that will be used with this profile:</p>
-<p> </p>
-<p><img alt=""></p>
-<p> </p>
-<h2 id="Launching_Firefox_with_a_profile">Launching Firefox with a profile</h2>
-<p>To launch Firefox with a specific profile, select the profile in the main window, and hit the "Start Firefox" button:  Firefox will be launched with that profile, and Profile Manager will terminate.  The version of Firefox which will be launched is indicated in the "Firefox version" dropdown in the Launch Options box:</p>
-<p> </p>
-<p><img alt=""></p>
-<p>There are several additional launch options available for Firefox.  These cause Firefox to be launched with various command-line arguments.  See <a href="/en/Command_Line_Options" title="en/Command Line Options">Command Line Options</a> for a description of these.</p>
-<table style="width: 400px;">
- <thead>
- <tr>
- <th scope="col">Launch Option</th>
- <th scope="col">Command Line Argument</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>Run Firefox in offline mode</td>
- <td><a href="/en/Command_Line_Options#-offline" title="https://developer.mozilla.org/en/Command_Line_Options#-offline">-offline</a></td>
- </tr>
- <tr>
- <td>Run Firefox in safe mode</td>
- <td><a href="/en/Command_Line_Options#-safe-mode" title="https://developer.mozilla.org/en/Command_Line_Options#-safe-mode">-safe-mode</a></td>
- </tr>
- <tr>
- <td>Start Firefox with a console</td>
- <td><a href="/en/Command_Line_Options#-console" title="https://developer.mozilla.org/en/Command_Line_Options#-console">-console</a></td>
- </tr>
- <tr>
- <td>Start new instance</td>
- <td><a href="/en/Command_Line_Options#-no-remote" title="https://developer.mozilla.org/en/Command_Line_Options#-no-remote">-no-remote</a></td>
- </tr>
- </tbody>
-</table>
-<p><strong>Note:</strong> It isn't possible to start a second instance of Firefox without passing it the -no-remote command line argument.  For this reason, if you attempt to launch Firefox using Profile Manager, and it detects that another instance of Firefox is already running, it will automatically add the -no-remote argument for you, regardless of whether this launch option was checked.</p>
-<p> </p>
-<h2 id="Locked_profiles">Locked profiles</h2>
-<p>Some profiles may be shown as locked in the main window.   Such profiles are currently being used by an instance of Firefox.  If you attempt to perform any operation on a locked profile, you'll get a warning; if you choose to continue despite the warning, you may encounter errors or corrupt a profile.</p>
-<p> </p>
-<p>It's strongly recommended to avoid operations on locked profiles.  If you need to do something with a locked profile, close the instance of Firefox which is using the profile first.</p>
-<p> </p>
-<h2 id="Backing_up_and_restoring_profiles">Backing up and restoring profiles</h2>
-<p>Profile Manager offers two different mechanisms for backing up and restoring profiles.</p>
-<p> </p>
-<h4 id="Backup_folder">Backup folder</h4>
-<p>Profile Manager has a local backup folder where it can manage profile backups.  This is the easiest way to backup and restore profiles. </p>
-<p>To backup a profile:  select the profile you want to backup, and choose "backup to-&gt;backup folder" from the toolbar's Backup menu.  The profile will be backed up, and the backup will appear under the backups column in the main display:</p>
-<p><img alt=""></p>
-<p>To restore a profile:  select the backup in the main display, open the context menu, and choose "restore".  When you restore a profile, the backup is retained, so you can restore from the same backup at a later date.</p>
-<p>To delete a backup:  select the backup in the main display, open the context menu, and choose "delete".</p>
-<h4 id="Profile_archives">Profile archives</h4>
-<p>Profile Manager can also backup to and restore from .zip archives.  Profile Manager does not track these backups in the UI, but using profile archives is an easy way to move profiles between machines.</p>
-<p>To backup a profile to an archive:  select the profile you want to backup, and choose "backup to-&gt;archive" from the toolbar's backup menu.  You'll be prompted for a name and location for the archive.</p>
-<p>To create a profile from a profile archive:  Select "restore from-&gt;archive" from the toolbar's backup menu.  You'll be prompted for the location of the archive, and then for the name of the profile you'd like to create from the archive.</p>
-<p> </p>
-<h2 id="Other_Operations">Other Operations</h2>
-<p>Context-clicking any profile in the profile list will cause a popup menu to appear with the following commands:</p>
-<ul>
- <li><strong>Copy</strong><strong> - </strong>makes a copy of the profile using a name and location of your choice.</li>
- <li><strong>Delete</strong> - deletes the profile, and all files associated with it.</li>
- <li><strong>Properties </strong>- shows a dialog that displays the profile's path and last-modified date.</li>
- <li><strong>Rename</strong> - allows you to specify a new name for the profile.</li>
- <li><strong>Version </strong>- allows you change the default application version to be used with the profile.</li>
-</ul>
-<p> </p>
-<h2 id="Future_Enhancements">Future Enhancements</h2>
-<ul>
- <li>Ability to install/uninstall/enable/disable extensions in profiles.</li>
- <li>Ability to copy certain assets (e.g., bookmarks) between profiles.</li>
- <li>Add 'Profile Size' to the Properties dialog.</li>
- <li>Ability to reset a profile (return it to a default state excluding bookmarks and passwords).</li>
- <li>Add option to specify the location of profiles.ini.</li>
-</ul>
-<p> </p>
-<p>{{ languages( {"es" : "es/Administrador_de_perfiles" ,"zh-cn" : "zh-cn/Profile_Manager" } ) }}</p>
diff --git a/files/zh-tw/sandbox/index.html b/files/zh-tw/sandbox/index.html
deleted file mode 100644
index ce4d515992..0000000000
--- a/files/zh-tw/sandbox/index.html
+++ /dev/null
@@ -1,180 +0,0 @@
----
-title: Sandbox 沙盒
-slug: Sandbox
-translation_of: Sandbox
----
-<h2 id="Sandbox" name="Sandbox">This is a page 這是一張紙</h2>
-
-
-
-<h2 id="Test">Test</h2>
-
-<p>如何插入程式碼區塊,並即時預覽:Toolbar 第三行,點擊「插入程式碼範例模板」按鈕</p>
-
-<h3 id="HTML">HTML</h3>
-
-<pre class="brush: html">&lt;p&gt;hello sandbox&lt;/p&gt;</pre>
-
-<h3 id="CSS">CSS</h3>
-
-<pre class="brush: css">p {
- color: blue;
-}</pre>
-
-<h3 id="JavaScript">JavaScript</h3>
-
-<pre class="brush: js">var p = document.querySelector('p');
-p.addEventListener('mouseover', function(e) {
-  p.style.color = 'green';
-})
-p.addEventListener('mouseout', function(e) {
-  p.style.color = 'blue';
-})
-
-</pre>
-
-<h3 id="結果">結果</h3>
-
-<p>{{EmbedLiveSample('Test')}}</p>
-
-
-
-<h2 id="其他">其他</h2>
-
-<h3 id="CSS_Content"><font><font>CSS Content</font></font></h3>
-
-<pre class="brush: css"><font><font>@ Compteur de style fisheye {</font></font><font><font>
- système: cyclique;</font></font><font><font>
- symboles: ◉;
-</font></font></pre>
-
-<pre class="brush: html">&lt;h1&gt;CSS font-family&lt;/h1&gt;
-&lt;p class="serif"&gt;This is a paragraph, shown in the Times New Roman font.&lt;/p&gt;
-&lt;p class="sansserif"&gt;This is a paragraph, shown in the Arial font.&lt;/p&gt;</pre>
-
-<pre class="brush: css"><font><font>
-}</font></font>
-<font><font>
-.liste {</font></font><font><font>
- list-style: fisheye, cercle;</font></font><font><font>
-}</font></font></pre>
-
-<h2 id="Linux_is_life" name="Linux is life">Hello World</h2>
-
-<h3 id="HTML_2">HTML</h3>
-
-<pre class="brush: html">&lt;p&gt;Hello World&lt;/p&gt;</pre>
-
-<p><font><font>{{EmbedLiveSample ( 'Linux is life')}}</font></font></p>
-
-<p><font><font><img alt="Linux logo" src="https://greenwichmeantime.com/static/app/world_clock/icon/world.svg" style="height: 300px; width: 400px;"></font></font></p>
-
-<p><img alt="logo couleur MDN (bleu)" src="https://mdn.mozillademos.org/files/12728/mdn_logo-only_color.png" style="height: 200px; width: 200px;"></p>
-
-<p><span class="seoSummary"><font><font>Des trucs</font></font></span></p>
-
-<div class="note">
-<p><font><font>Une note </font></font></p>
-
-<div class="warning">
-<p><font><font>Un avertissement dans une note</font></font></p>
-
-<div class="note">
-<p><font><font>Une note dans un avertissement dans une note</font></font></p>
-
-<div class="warning">
-<div class="note">
-<div class="warning">
-<div class="note">
-<div class="warning">
-<div class="note"></div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-
-<div class="note">
-<p><font><font>une autre note</font></font></p>
-
-<div class="note">
-<p><font><font>Une note dans une note</font></font></p>
-</div>
-
-<p>This is an example of how to use the MDN!</p>
-</div>
-
-<p><math><semantics><mrow><mi><font><font>π</font></font></mi><mo><font><font>×</font></font></mo><mn><font><font>1</font></font></mn><mo><font><font>=</font></font></mo><mn><font><font>1</font></font></mn><mo><font><font>×</font></font></mo><mi><font><font>π</font></font></mi><mo><font><font>=</font></font></mo><mn><font><font>2</font></font></mn><mi><font><font>π</font></font></mi><mo><font><font>÷</font></font></mo><mi><font><font>π</font></font></mi><mo><font><font>=</font></font></mo><mi><font><font>π</font></font></mi></mrow><annotation encoding="TeX"><font><font>\ Pi \ times 1 = 1 \ times \ pi = 2 \ pi \ div \ pi = \ pi</font></font></annotation></semantics></math></p>
-
-<p><math><semantics><mrow><mi><font><font>π</font></font></mi><mfrac><mi><font><font>π</font></font></mi><mi><font><font>π</font></font></mi></mfrac><mfrac><mfrac><mi><font><font>π</font></font></mi><mi><font><font>π</font></font></mi></mfrac><mi><font><font>π</font></font></mi></mfrac></mrow><annotation encoding="TeX"><font><font>\ Pi \ frac {\ pi} {\ pi} \ frac {\ frac {\ pi} {\ pi}} {\ pi}</font></font></annotation></semantics></math></p>
-
-<p><math><semantics><mrow><mi><font><font>π</font></font></mi><mfrac><mi><font><font>π</font></font></mi><mi><font><font>π</font></font></mi></mfrac><mfrac><mfrac><mi><font><font>π</font></font></mi><mi><font><font>π</font></font></mi></mfrac><mi><font><font>π</font></font></mi></mfrac></mrow><annotation encoding="TeX"><font><font>\ Pi \ frac {\ pi} {\ pi} \ frac {\ frac {\ pi} {\ pi}} {\ pi}</font></font></annotation></semantics></math></p>
-
-<p><math><semantics><mrow><mo><font><font>∫</font></font></mo><mo lspace="0em" rspace="0em"><font><font>lim</font></font></mo><mi><font><font>je</font></font></mi><mi><font><font>t</font></font></mi><msubsup><mi><font><font>s</font></font></mi><mn><font><font>1</font></font></mn><mn><font><font>3</font></font></mn></msubsup><mfrac><mrow><msup><mi><font><font>e</font></font></mi><mn><font><font>3</font></font></mn></msup><mo><font><font>/</font></font></mo><mi><font><font>X</font></font></mi></mrow><msup><mi><font><font>X</font></font></mi><mn><font><font>2</font></font></mn></msup></mfrac><mspace width="thinmathspace"></mspace><mi><font><font>ré</font></font></mi><mi><font><font>X</font></font></mi></mrow><annotation encoding="TeX"><font><font>\ Int \ limits_ {1} ^ {3} \ frac {e ^ 3 / x} {x ^ 2} \, dx</font></font></annotation></semantics></math></p>
-
-<p><math><semantics><mrow><mo><font><font>∫</font></font></mo><mo lspace="0em" rspace="0em">ln(x) dx = x[ln(x) - 1]</mo></mrow><annotation encoding="TeX"><font><font>l\ Int \ limits_ {1} ^ {3} \ frac {e ^ 3 / x} {x ^ 2} \, d+x</font></font></annotation></semantics></math></p>
-
-<p><math><semantics><mtext><font><font>abcdefghijklmnopqrstuvwxyz</font></font></mtext><annotation encoding="TeX"><font><font>\alphabet</font></font></annotation></semantics></math></p>
-
-<p><math><semantics><mrow><mi><font><font>π</font></font></mi><mtext><font><font>est un nombre irrationnel, et cela est le rapport entre la circonférence d'un cercle à son diamètre. </font><font>Il est communément approchée comme 3,14159.</font></font></mtext></mrow><annotation encoding="TeX"><font><font>\ pifacts {3}</font></font></annotation></semantics></math></p>
-
-<p><font><font>contenu</font></font></p>
-
-<h2 id="Test_live_sample" name="Test live sample">Test live sample</h2>
-
-<h3 id="HTML_Content">HTML Content</h3>
-
-<pre class="brush: html">&lt;p&gt;Hello World&lt;/p&gt;</pre>
-
-<h3 id="Result">Result</h3>
-
-<p>{{ EmbedLiveSample('Test live sample') }}</p>
-
-<h2 id="sect1"></h2>
-
-<h2 id="Focus_on_a_text_field" name="Focus_on_a_text_field">Focus on a text field</h2>
-
-<h3 id="HTML_Content_2">HTML Content</h3>
-
-<pre class="brush: html">&lt;input type="text" id="myTextField" value="Text field."&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;button type="button" onclick="focusMethod()"&gt;Click me to focus on the text field!&lt;/button&gt; </pre>
-
-<h3 id="CSS_Content_2">CSS Content</h3>
-
-<pre class="brush: css">/* Sample CSS Content */</pre>
-
-<h3 id="JavaScript_Content">JavaScript Content</h3>
-
-<pre class="brush: js">focusMethod = function getFocus() {
- document.getElementById("myTextField").focus();
-} </pre>
-
-<h3 id="Result_2">Result</h3>
-
-<p>{{ EmbedLiveSample('Focus_on_a_text_field') }}</p>
-
-<h2 id="Focus_on_a_button" name="Focus_on_a_button">Focus on a button</h2>
-
-<h3 id="HTML_Content_3">HTML Content</h3>
-
-<pre class="brush: html">&lt;button type="button" id="myButton"&gt;Click Me!&lt;/button&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;button type="button" onclick="focusMethod()"&gt;Click me to focus on the button!&lt;/button&gt; </pre>
-
-<h3 id="CSS_Content_3">CSS Content</h3>
-
-<pre class="brush: css">Sample CSS Content</pre>
-
-<h3 id="JavaScript_Content_2">JavaScript Content</h3>
-
-<pre class="brush: js">focusMethod = function getFocus() {
- document.getElementById("myButton").focus();
-} </pre>
-
-<h3 id="Result_3">Result</h3>
-
-<p>{{ EmbedLiveSample('Focus_on_a_button') }}</p>
diff --git a/files/zh-tw/tools/scratchpad/index.html b/files/zh-tw/tools/scratchpad/index.html
deleted file mode 100644
index 880b0c13ee..0000000000
--- a/files/zh-tw/tools/scratchpad/index.html
+++ /dev/null
@@ -1,109 +0,0 @@
----
-title: 程式碼速記本
-slug: Tools/Scratchpad
-translation_of: Archive/Tools/Scratchpad
----
-<p>程式碼速記本(Scratchpad)提供使用 JavaScript 程式碼實驗的環境。您可以編寫,運行和檢查的程式碼與網頁互動的結果。</p>
-
-<p>不同於<a href="/zh-TW/Tools/Web_Console">網頁主控台</a>,這是專為在同一時間解釋的一行程式碼,便簽讓您編輯較大的 JavaScript 程式碼塊,然後根據您希望如何使用輸出以各種方式執行。</p>
-
-<p>{{EmbedYouTube("Pt7DZACyClM")}}</p>
-
-<h2 id="用法">用法</h2>
-
-<h3 id="打開程式碼速記本">打開程式碼速記本</h3>
-
-<p>要打開「程式碼速記本」窗口的話有很多辦法:</p>
-
-<ul>
- <li>按 <kbd>Shift</kbd> + <kbd>F4</kbd>,或到「開發者」選單(這是在 macOS 和 Linux 的工具選單的子選單),然後選擇「程式碼速記本」。</li>
- <li>click the wrench icon (<img alt="" src="https://mdn.mozillademos.org/files/12710/wrench-icon.png" style="height: 21px; width: 21px;">), which is in the main toolbar or under the Hamburger menu (<img alt="" src="https://mdn.mozillademos.org/files/12712/hamburger.png" style="height: 20px; width: 22px;">), then select "Scratchpad".</li>
-</ul>
-
-<p>這將打開一個程式碼速記本窗口。</p>
-
-<h3 id="在工具箱開啟程式碼速記本">在工具箱開啟程式碼速記本</h3>
-
-<div class="geckoVersionNote">Firefox 47 引入。</div>
-
-<p>From Firefox 47, you can open Scratchpad inside the <a href="/en-US/docs/Tools/Tools_Toolbox">Toolbox</a>. First you need to check "Scratchpad" in the "Default Firefox Developer Tools" section of the <a href="/en-US/docs/Tools/Tools_Toolbox#Settings_2">Settings</a> page.</p>
-
-<p>Now Scratchpad will be available in the Toolbox, alongside other tools like the Page Inspector and the Web Console. This is especially useful in <a href="/en-US/docs/Tools/Web_Console/Split_console">split Console mode</a>: you can use Scratchpad for a persistent, multiline editor, and the Console to interact with the page.</p>
-
-<h3 id="編輯">編輯</h3>
-
-<p>程式碼速記本窗口看起來像這樣(在 macOS 選單列在螢幕的頂部):</p>
-
-<p><img alt="便簽本的屏幕截圖" src="https://mdn.mozillademos.org/files/5983/scratchpad.png"></p>
-
-<p>檔案選單提供選項來儲存和載入JavaScript程式碼片段,因此,如果你喜歡,你可以在以後重用程式碼。</p>
-
-<h4 id="程式碼補全">程式碼補全</h4>
-
-<p>程式碼速記本整合了ternjs ( javascript<a href="http://ternjs.net/">程式碼分析引擎</a> ),並使用該提供自動補全提示與包含在當前的符號資訊的視窗。要列出自動補全提示,按 <kbd>Ctrl</kbd>+<kbd>Space</kbd> 。</p>
-
-<p>例如,嘗試輸入<kbd>d</kbd>,然後按 <kbd>Ctrl</kbd>+<kbd>Space</kbd> 。你會看到自動補全的視窗盒,如下圖:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/7933/scratchpad-autocomplete.png" style="display: block; margin-left: auto; margin-right: auto;">提示左邊的每個圖標為目前提示的類型,目前高亮的提示會自動彈出更多資訊。使用<kbd>↑</kbd>和<kbd>↓</kbd>來循環高亮的提示,並使用<kbd>Enter</kbd>或<kbd>Tab </kbd>來選擇目前高亮的提示。</p>
-
-<h4 id="內嵌說明">內嵌說明</h4>
-
-<p>如果想看到內嵌說明視窗,可以在將滑鼠指標(cursor)0移到標識符的位置,並按下<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd>。例如:如果你先輸入<code>document</code>.<code>addEventListener,然後再按下</code><kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd>,你將會看到一個彈出視窗,顯示該函數的語法和使用說明。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/7935/scratchpad-symbolinfo.png" style="display: block; margin-left: auto; margin-right: auto;">在彈出視窗中的「[文件]」連結,點擊後,可直接連結到MDN對應符號的說明文件網頁。</p>
-
-<h3 id="執行">執行</h3>
-
-<p class="note">一旦你寫完你的代碼,選擇要運行的程式碼。如果不選擇任何內容,視窗中的所有程式碼將被執行。然後透過「執行」選單或右鍵選單,來選擇你想要的執行方式。程式碼在當前的分頁中執行。任何宣告在函式(function)之外的變數將被加入到當前分頁的全域物件。</p>
-
-<h4 id="選單中有四個執行選項可以選擇">選單中有四個執行選項可以選擇</h4>
-
-<h4 id="執行_2">執行</h4>
-
-<p>當你選取「執行」選項時, 被選取的程式碼將會被執行. 你會將此選項用於執行一個函式或一段操作頁面內容的程式碼,而不需要看到執行後的輸出。</p>
-
-<h4 id="檢測">檢測</h4>
-
-<p>「檢測」選項執行程式碼的方法就像執行選項; 然而,程式碼返回後,object inspector會打開讓你檢查返回值。</p>
-
-<p>例如,如果你輸入代碼:</p>
-
-<pre>window
-</pre>
-
-<p>然後選擇「檢測」,object Inspector 看起來是這樣的:</p>
-
-<p><img alt="在便簽中檢查對象" src="https://mdn.mozillademos.org/files/5985/scratchpad-inspect.png"></p>
-
-<h4 id="顯示">顯示</h4>
-
-<p>「顯示」選項執行所選取的程式碼,然後直接將結果插入到你的程式碼速記本編輯器視窗中,作為一個註解,所以你可以使用它作為一個<a href="http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop">REPL</a>。</p>
-
-<h4 id="重新載入並執行">重新載入並執行</h4>
-
-<p>重新載入和執行選項僅在執行選單中。它首先重新載入頁面,然後執行該程式碼時,頁面上的「load」事件觸發。這適用於在剛開始的環境來執行程式碼。</p>
-
-<h2 id="在瀏覽器環境中執行程式碼速記本">在瀏覽器環境中執行程式碼速記本</h2>
-
-<p>你可以在瀏覽器環境運行程式碼速記本,而不是在特定網頁的環境中。如果您正在使用火狐本身或開發附加元件,這非常有用。要做到這一點,要勾選「啟用瀏覽器chrome與附加元件除錯工具箱」設定在<a href="/en-US/docs/Tools/Tools_Toolbox#Settings_2">開發者工具設置</a>中。完成勾選後,執行程式碼速記本中,「環境」選單會有「瀏覽器」選項; 選擇「瀏覽器」選項後,你的範圍會是整個瀏覽器,而不僅僅是網頁的內容,此時,你將可以檢測一些全域變數來看:</p>
-
-<pre class="brush: js">window
-/*
-[ChromeWindow]
-*/
-
-gBrowser
-/*
-[object XULElement]
-*/</pre>
-
-<p>當程式碼速記本含有下列程式碼在第一行時,程式碼速記本會將執行環境設為整個瀏覽器<code>:</code><br>
- <code>// -sp-context: browser</code></p>
-
-<h2 id="鍵盤快捷鍵">鍵盤快捷鍵</h2>
-
-<p>{{ Page ("zh-TW/docs/tools/Keyboard_shortcuts", "scratchpad") }}</p>
-
-<h3 id="源始碼編輯器的快捷鍵">源始碼編輯器的快捷鍵</h3>
-
-<p>{{ Page ("zh-TW/docs/tools/Keyboard_shortcuts", "source-editor") }}</p>
diff --git a/files/zh-tw/tools/webide/index.html b/files/zh-tw/tools/webide/index.html
deleted file mode 100644
index 7a2968a1ac..0000000000
--- a/files/zh-tw/tools/webide/index.html
+++ /dev/null
@@ -1,290 +0,0 @@
----
-title: WebIDE
-slug: Tools/WebIDE
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/WebIDE
----
-<div class="geckoVersionNote">
-<p>從 Firefox 34 開始均可使用 WebIDE。</p>
-
-<p>亦可於 Firefox 33 中變更偏好設定,以啟動 WebIDE。鍵入 <a href="http://kb.mozillazine.org/About:config">about:config</a> 並找到「<code>devtools.webide.enabled</code> 」,將之設定為「<code>true</code>」即可。</p>
-</div>
-
-<div class="summary">
-<p>WebIDE 現已取代「<a href="/en-US/Firefox_OS/Using_the_App_Manager">應用程式管理員 (App Manager)</a>」,且其功能一如應用程式管理員,並可透過 <a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a> 或實體 Firefox OS 裝置,進而建構、編輯、執行、除錯 Web App。</p>
-
-<p>不僅如此,WebIDE 亦可連接 <a href="https://developer.mozilla.org/en-US/docs/Tools">Firefox 開發者工具</a>與他款瀏覽器,包含 Firefox 行動版 (Firefox for Android)、Android 上的 Chrome、iOS 上的 Safari。可參閱<a href="https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging">遠端除錯</a>頁面,以了解應如何連上特定瀏覽器。</p>
-</div>
-
-<p>{{EmbedYouTube("2xmj4W8O3E4")}}</p>
-
-<p>你必須先在 WebIDE 中<a href="/en-US/docs/Tools/WebIDE#Setting_up_runtimes">設定一個或多個執行環境 (Runtime)</a>。Runtime 即是 App 的執行與除錯環境。不論是 Firefox OS 裝置透過 USB 連上桌機 (從 <a href="https://developer.mozilla.org/en-US/Firefox/Releases/39">Firefox 39</a> 或更高版本起,可透過 WiFi 連上桌機),或是桌面版 Firefox 上安裝 Firefox OS 模擬器,都可當做執行環境。</p>
-
-<p>接著就可<a href="/en-US/docs/Tools/WebIDE#Creating_and_opening_apps">建立 App 或啟動現有的 App</a>。如果你要建立全新的 App,內建範本將提供你所需的資料目錄架構與最簡單的樣板;或有更完整的範本提供 Privileged App 所需要的 API。WebIDE 將以樹狀圖顯示 App 的檔案,讓你只要透過內建的編輯器即可修改並儲存檔案。當然,你也能選用自己習慣的編輯器開發 App,只用 WebIDE 除錯亦可。</p>
-
-<p>最後,你可<a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Running_and_debugging_apps">將 App 安裝於執行環境之中並執行</a>。也能透過常見的開發者工具,如<a href="/en-US/docs/Tools/Page_Inspector">檢測器 (Inspector)</a>、<a href="/en-US/docs/Tools/Web_Console">主控台 (Console)</a>、<a href="/en-US/docs/Tools/Debugger">JavaScript 除錯器 (JavaScript Debigger)</a> 等,檢查並修改 App。</p>
-
-<h2 id="系統需求">系統需求</h2>
-
-<p>若要以 WebIDE 開發 App 並除錯,必須使用 Firefox 33 或更高版本。如果要在實際 Freifox OS 裝置上測試 App,則該款裝置需搭載 Firefox OS 1.2 或更高版本,並搭配 1 組 USB 連接線。</p>
-
-<p>如果要針對 Firefox OS 1.2 或更高版本開發 App,則限用 WebIDE 進行開發。</p>
-
-<h2 id="啟動_WebIDE">啟動 WebIDE</h2>
-
-<p>進入「網頁開發者」選單,點擊「WebIDE」即可將之啟動。亦可按下鍵盤的「Shift + F8」快捷鍵:<img alt="" src="https://mdn.mozillademos.org/files/8033/webide-initial.png" style="display: block; height: 560px; margin-left: auto; margin-right: auto; width: 720px;">左邊的「開啟應用程式 (Open App)」下拉式選單中,你可啟動現有的 App 或建立新的 App。右邊的「選擇 Runtime (Select Runtime)」下拉式選單中,你可選擇執行環境或設立新的執行環境。</p>
-
-<p>在選擇了執行環境並開啟 App 之後,才可以按中間的「Run」、「Stop」、「Debug」按鈕。</p>
-
-<h2 id="設定執行環境">設定執行環境</h2>
-
-<p>「選擇 Runtime」選單內,共分為 3 種執行環境:</p>
-
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Connecting_a_Firefox_OS_device">USB 裝置 (USB Devices)</a>:透過 USB 銜接 Firefox OS 裝置</li>
- <li><a href="/en-US/docs/Tools/WebIDE#Adding_a_Simulator">模擬器 (Simulators)</a>:你已經安裝的 Firefox OS Simulator</li>
- <li><a href="/en-US/docs/Tools/WebIDE#Custom_runtimes">自訂 (Custom)</a>:透過自定義的名稱或埠 (port) 來連結 WebIDE。</li>
-</ul>
-
-<p>第一次點開下拉式選單,你不會看見任何的執行環境:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8043/webide-no-runtimes.png" style="display: block; height: 564px; margin-left: auto; margin-right: auto; width: 723px;">接下來會帶你新增執行環境。</p>
-
-<h3 id="連結_Firefox_OS_裝置">連結 Firefox OS 裝置</h3>
-
-<p>在開始連結 Firefox OS 裝置之前,必須先完成下列設定:</p>
-
-<ul>
- <li><strong>檢查 Firefox OS 版本:</strong>確定你的裝置可以執行 Firefox OS 1.2/Boot2Gecko 1.2 或更高版本。可至「設定 (Settings)」App 中尋找「裝置資訊 (<code>Device Information)」&gt;「軟體 (Software)」確認 Firefox OS 的版本。如果版本太舊,則可到</code> <a href="/en-US/Firefox_OS/Developer_phone_guide">developer phone guide</a> 頁面找到你的裝置,再完成相關更新步驟。</li>
- <li><strong>啟動「遠端除錯 (Remote debugging)」:</strong>進入裝置的「設定」App ,找到<code>「開發者</code><code> </code><code>(Developer</code><code>)」</code>:
- <ul>
- <li>Firefox OS 1.3 或之前的版本:請勾選「遠端除錯」方塊</li>
- <li>Firefox OS 1.4 或之後的版本:又分「僅 ADB」與「ADB 與開發工具 (ADB and DevTools)」共 2 個選項。請選擇「ADB 與開發工具」。</li>
- </ul>
- </li>
- <li>
- <ul>
- </ul>
- <strong>關閉裝置的螢幕鎖:</strong>在裝置的「設定」中,找到「螢幕鎖 (<code>Screen Lock)」</code>並關閉此功能。因為只要鎖住螢幕就會與裝置斷線,如此就無法除錯了。</li>
- <li><strong>如果你想要對 Certified App (包含內建的 App) 進行除錯</strong>:請參閱〈<a href="/en-US/docs/Tools/WebIDE#Debugging_certified_apps"><strong>Certified App 除錯</strong></a>〉章節。</li>
-</ul>
-
-<div class="note">
-<p><strong>Linux 版本:</strong></p>
-
-<ul>
- <li>建立 <code>udev</code> 規則檔案,如同〈<a href="http://developer.android.com/tools/device.html#setting-up">setting up an Android device</a>〉文件裡的步驟 3。以 Geeksphone 為例,請將 <code>idVendor</code> 屬性設定為「05c6」。可至<a href="http://developer.android.com/tools/device.html#VendorIds">此網頁</a>找到更多 <code>idVendor</code> 屬性值。</li>
-</ul>
-</div>
-
-<div class="note">
-<p><strong>Windows 版本:</strong></p>
-
-<ul>
- <li>根據〈<a href="http://developer.android.com/tools/device.html#setting-up">setting up an Android device</a>〉文件的步驟 3,你必須安裝驅動程式,。可至 <a href="http://downloads.geeksphone.com/">Geeksphone 網站</a>上找到 Geeksphone 的驅動程式。Windows 8 預設不會讓你安裝未註冊的驅動程式。請參閱《<a class="external external-icon" href="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html" title="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html">How to install an unsigned driver on Windows 8</a>》。</li>
- <li>完成應有的步驟之後,如果 WebIDE 還是抓不到你的裝置,則你可能需要編輯 <a class="external external-icon" href="http://blog.fh-kaernten.at/wehr/?p=1182">adb_usb.ini</a>。</li>
-</ul>
-</div>
-
-<p>如果有其他 Android 裝置已連上你的電腦,請先中斷連線。再透過 USB 銜接裝置與電腦。則你的裝置應該會出現在「USB 裝置」之下:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8045/webide-select-runtime-keon.png" style="display: block; height: 562px; margin-left: auto; margin-right: auto; width: 710px;"></p>
-
-<p>如果還是沒看到你的裝置,請詳見〈<a href="/en-US/docs/Tools/WebIDE/Troubleshooting">疑難雜症</a>〉頁面。</p>
-
-<h3 id="新增模擬器">新增模擬器</h3>
-
-<p><span style="line-height: 1.5;"><a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器</a>架構在 <span style="line-height: 1.5;">Firefox OS 之上,可在桌機上模擬</span> Firefox OS 裝置。且其</span><span style="line-height: 1.5;">執行的視窗尺寸、使用者介面、內建的 App 也都和 <span style="line-height: 1.5;">Firefox OS 裝置相同,更能模擬 <span style="line-height: 1.5;">Firefox OS 裝置的 API。</span></span></span></p>
-
-<p><span style="line-height: 1.5;">如此在許多情況下,就算你沒有實際裝置,也能測試或除錯自己的 App。 </span></p>
-
-<p>整個模擬器大到不能內建在 Firefox 之中,所以包裝成 Firefox 的<a href="/en-US/Add-ons">附加元件</a>。當你在 Runtimes 下拉式選單中點選「Install Simulator」,將會帶領你到安裝不同版本 Firefox OS 模擬器的頁面。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8039/webide-install-simulator.png" style="display: block; height: 560px; margin-left: auto; margin-right: auto; width: 720px;">你可以安裝所有需要的模擬器。因為模擬器容量頗大,所以請耐心下載。當你安裝模擬器完畢,就能關閉「Extra Components」視窗。已安裝的模擬器就會出現在「Runtimes」的下拉式選單裡面:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8047/webide-select-runtime-keon-simulator.png" style="display: block; height: 559px; margin-left: auto; margin-right: auto; width: 712px;">若要進一步了解模擬器,詳見<a href="/en-US/docs/Tools/Firefox_OS_Simulator">該頁</a>。</p>
-
-<h3 id="自訂執行環境">自訂執行環境</h3>
-
-<p>透過可自訂的執行環境,你可用任意的 hostname 和埠 (port) 去連結遠端裝置。</p>
-
-<p>Firefox OS 裝置與 Android 裝置,均是透過「Android Debug Bridge」這個程式 (也稱為 <a href="http://developer.android.com/tools/help/adb.html">ADB</a>) 連上桌機。WebIDE 已預設使用名為「ADB Helper」的附加元件。此簡單的附加元件可幫你安裝 ADB 並設定好「埠」的轉址,進而簡化相關程序。接著 Firefox 桌面版的工具就能和裝置交換訊息了。</p>
-
-<p>上述功能在大部分情況下都很方便。但有時候你可能不想透過 WebIDE 使用 ADB (例如你想要直接用命令列來跑 ADB)。這時你可使用 <a href="http://developer.android.com/tools/help/adb.html#forwardports"><code>adb forward</code></a> 指令來使用特定的「主機 (Host)」與「埠」<code>。</code><br>
- <br>
- 如果你也想用 WebIDE 及命令列使用 ADB,就要<a href="https://support.mozilla.org/en-US/kb/disable-or-remove-add-ons#w_how-to-disable-extensions-and-themes">停用 ADB Helper</a> 附加元件,並透過「自訂 (Custom)」選項、輸入你傳送給 <code><code>adb forward</code></code> 的「主機」與「埠」,即可連接 WebIDE。</p>
-
-<p>ADB Helper 目前還不支援連結 Firefox for Android。如果你想透過 WebIDE 連上 Firefox for Android,就必須設定自己的埠轉址 (Port forwarding) 與自訂的執行環境。可進一步參閱<a href="/en-US/docs/Tools/Remote_Debugging/Firefox_for_Android"> connecting to Firefox for Android using ADB</a>。</p>
-
-<h2 id="選擇執行環境">選擇執行環境</h2>
-
-<p>當你設定好執行環境之後,就能在「選擇 Runtime (Select Runtime)」中點選。</p>
-
-<ul>
- <li>如果你選擇「模擬器」,WebIDE 就會啟動模擬器。</li>
- <li>如果你選擇 WebIDE 已連結的 Firefox OS 裝置,則該裝置就會出現對話框確認是否要連結。這時請點選「OK」。</li>
-</ul>
-
-<p>WebIDE 工具列中間的「play」按鈕這時已經可按。點下後就會執行所選的執行環境。 </p>
-
-<h3 id="執行環境的動作">執行環境的動作</h3>
-
-<p>選取執行環境之後,「Runtimes」下拉式選單會多出 3 個選項:</p>
-
-<ul>
- <li><strong>Runtime 資訊 (Runtime Info)</strong>:現在執行環境的資訊</li>
- <li><strong>權限表 (Permissions Table)</strong>:顯示目前執行環境的 <a href="/en-US/Apps/Build/App_permissions">App 權限</a>,囊括各個使用中的 API 與 <a href="/en-US/Marketplace/Options/Packaged_apps#Types_of_packaged_apps">App 型態</a>,分別是:可用的 (✓)、禁用的 (✗)、需要使用者認證的 (!)。</li>
- <li><strong>擷圖 (Screenshot</strong>):可取得目前執行環境的擷圖</li>
-</ul>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8147/webide-runtimes-menu.png" style="display: block; height: 596px; margin-left: auto; margin-right: auto; width: 789px;"></p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8145/webide-runtimeinfo.png" style="display: block; height: 593px; margin-left: auto; margin-right: auto; width: 753px;"><img alt="" src="https://mdn.mozillademos.org/files/8149/webide-permissions.png" style="display: block; height: 593px; margin-left: auto; margin-right: auto; width: 753px;"></p>
-
-<h2 id="建立並開啟_App">建立並開啟 App</h2>
-
-<p>在「開啟應用程式 (Open App)」選單之下共有 3 個選項:<br>
- 1). 新增應用程式... (New App...)<br>
- 2). 開啟封裝的應用程式... (Open Packaged App...)<br>
- 3). 開啟架設的應用程式... (Open Hosted App...)</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8049/webide-open-app-empty.png" style="display: block; height: 562px; margin-left: auto; margin-right: auto; width: 723px;"></p>
-
-<h3 id="建立新的_App">建立新的 App</h3>
-
-<p>點選「新增應用程式」即可建立新 App。你會看到對話視窗內提供「Privileged Empty App」與「Privileged App」共  2 個範本。</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8053/webide-new-app.png" style="display: block; height: 591px; margin-left: auto; margin-right: auto; width: 739px;"></p>
-
-<p>此 2 個範本均來自於 Mozilla 的「<a href="https://github.com/mozilla/mortar">app template collection</a>」,以最基本的架構讓你輕鬆上手。「Privileged App」則會教你如何使用權限去取得跨領域 (cross-origin) 的內容。</p>
-
-<p>在選擇範本之後,必須設定該 App 的名稱及其檔案儲存目錄,接著會在<a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Editing_apps">專案編輯器</a>中開啟新 App。</p>
-
-<h3 id="開啟封裝式_App">開啟封裝式 App</h3>
-
-<p>點選「開啟封裝的應用程式...」即可開啟<a href="/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a>。你所選取的資料夾中必須具備 App 的 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案,然後就會在<a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Editing_apps">專案編輯器</a>中開啟 App。</p>
-
-<div class="note">
-<p>注意:你會在「應用程式管理員 (App Manager)」中看到「manifest」中文翻譯為「安裝資訊檔」。</p>
-</div>
-
-<h3 id="開啟托管架設式_App">開啟托管/架設式 App</h3>
-
-<p>點選「開啟架設的應用程式...」開啟<a href="/en-US/Marketplace/Options/Hosted_apps">托管/架設式 (Hosted) App</a>。你必須輸入 1 組網址指向該 App 的 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案,然後就會在<a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Editing_apps">專案編輯器</a>中開啟該 App。</p>
-
-<h2 id="編輯_App">編輯 App</h2>
-
-<p>專案編輯器可供編輯 App。左側邊欄是 App 所有檔案的樹狀結構,可透過右鍵選單來新增、刪除檔案。右邊一大塊就是檔案編輯面板。</p>
-
-<h3 id="App_總覽頁面">App 總覽頁面</h3>
-
-<p>如果是第一次打開或新建 App 時,編輯面板會出現 App 總覽頁面:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8055/webide-new-app-editor.png" style="display: block; height: 625px; margin-left: auto; margin-right: auto; width: 846px;"></p>
-
-<p>你可隨時透過左側的檔案樹狀圖,回到 App 總覽頁面。</p>
-
-<h3 id="Manifest_檔案檢查">Manifest 檔案檢查</h3>
-
-<p>WebIDE 會自動檢查 manifest 檔案的常見問題。只要發現問題,就會在 App 總覽頁面中顯示並說明錯誤原因:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8063/webide-invalid-manifest.png" style="display: block; height: 626px; margin-left: auto; margin-right: auto; width: 847px;"></p>
-
-<p>當然也可以在專案編輯器中,直接編輯 App 的 <a href="/en-US/Apps/Build/Manifest">manifest.webapp</a> 檔案。</p>
-
-<h3 id="原始碼編輯器">原始碼編輯器</h3>
-
-<p>WebIDE 是使用 <a href="http://codemirror.net/">CodeMirror</a> 原始碼編輯器。</p>
-
-<h4 id="原始碼編輯器快捷鍵">原始碼編輯器快捷鍵</h4>
-
-<p>{{ Page ("en-US/docs/tools/Keyboard_shortcuts", "source-editor") }}</p>
-
-<h4 id="程式碼補齊">程式碼補齊</h4>
-
-<p>當編輯 CSS 和 JavaScript 時,編輯器會自動補齊建議字串。 CSS 自動補齊功能預設為開啟:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8057/webide-css-autocomplete.png" style="display: block; height: 628px; margin-left: auto; margin-right: auto; width: 849px;">按「Control + Space」就可顯示 JavaScript 的自動補齊建議:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8059/webide-js-autocomplete.png" style="display: block; height: 653px; margin-left: auto; margin-right: auto; width: 867px;"></p>
-
-<h4 id="行內說明文件">行內說明文件</h4>
-
-<p>編輯器也可顯示 JavaScript 的行內說明文件。只要按下「Shift + Space」,就會跳出目前滑鼠游標放置的條目之說明:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8061/webide-js-inline-docs.png" style="display: block; height: 652px; margin-left: auto; margin-right: auto; width: 872px;"></p>
-
-<p>在提示視窗中點選 <code>[docs]</code> 連結,就會帶你到該條目所對應的 MDN 頁面。</p>
-
-<h4 id="儲存檔案">儲存檔案</h4>
-
-<p>你必須儲存檔案之後,才能觀看檔案修改成果。如果是修改過但尚未儲存的檔案,則樹狀圖的檔名旁邊將顯示星號。你可透過選單或按下「Control+S」,即可儲存檔案 (Mac OS X 則為「Command+S」)。</p>
-
-<h3 id="移除專案">移除專案</h3>
-
-<p>要從 WebIDE 移除 App,可在 <a href="/en-US/docs/Tools/WebIDE#The_app_summary_page">App 總覽頁面</a>點選「移除專案 (Remove Project)」。</p>
-
-<h2 id="執行並除錯_App">執行並除錯 App</h2>
-
-<p>當準備好要執行 App 時,必須從<a href="/en-US/docs/Tools/WebIDE#Selecting_a_runtime">「選擇 Runtime」下拉式選單中選取任一執行環境</a>。如果沒有適合的執行環境,請參考<a href="/en-US/docs/Tools/WebIDE#Setting_up_runtimes">設定執行環境</a>。</p>
-
-<p>WebIDE 工具列中間的「Play」按鈕現已可點擊。點下之後就會在你所選的執行環境中安裝並執行 App:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8065/webide-running.png" style="display: block; height: 718px; margin-left: auto; margin-right: auto; width: 1314px;">這時按下「Pause」就會出現開發者工具的<a href="/en-US/docs/Tools/Tools_Toolbox">工具箱</a>,以利你對已連結的 App 進行除錯:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8067/webide-debugging.png" style="display: block; height: 688px; margin-left: auto; margin-right: auto; width: 1310px;">這裡會根據所選的執行環境而提供除錯工具,且必定會提供如<a href="/en-US/docs/Tools/Page_Inspector">檢測器 (Inspector)</a>、<a href="/en-US/docs/Tools/Web_Console">主控台 (Console)</a>、<a href="/en-US/docs/Tools/Debugger">JavaScript 除錯器</a>、<a href="/en-US/docs/Tools/Style_Editor">樣式編輯器 (Style Editor)</a>、<a href="/en-US/docs/Tools/Profiler">效能分析器 (Profiler)</a>、<a href="/en-US/docs/Tools/Scratchpad">程式碼速記本 (Scratchpad)</a> 等基本工具。就如同一般網頁,透過這些工具做出的修改,都可以即時在 App 中看到結果,但僅暫存。相反的,透過編輯面板修改的檔案,都會直接儲存到硬碟之中,但必須重新啟動 App 才能看到結果。</p>
-
-<h3 id="Certified_App_的除錯">Certified App 的除錯</h3>
-
-<p>若是搭配模擬器,則只要已選擇了執行環境,再點擊 App 的下拉選單,則不僅僅是你的 App,只要是該執行環境正執行中的所有 App 都會列在上面,包含<a href="/en-US/Marketplace/Options/Packaged_apps#Certified_app">Certified App</a>。這時即可除錯所你選擇的 App:</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/8069/webide-debugging-builtin.png" style="display: block; height: 681px; margin-left: auto; margin-right: auto; width: 1302px;"></p>
-
-<p><br>
- 不過,如果要在實際裝置除錯 Certified App 還需要:</p>
-
-<ul>
- <li>裝置必須搭載 Firefox OS 1.2 或更高版本</li>
- <li>必須啟動 Certified App 除錯功能</li>
-</ul>
-
-<p>如果要啟動 Certified App 除錯功能,就要先連接執行環境,然後在選單中找到 <code>Runtime &gt; Runtime Info</code>。如果你在這裡看到「開發工具受限權限 (<code>DevTools restricted privileges)」為「Yes</code>」,就表示無法進行 Certified App 的除錯。根據你除錯對象的不同,後續步驟也有所差異:</p>
-
-<ul>
- <li>實際裝置
- <ul>
- <li>如果你的裝置可進行 rooted,則點選「需要更高權限 (<code>Request higher privileges)」,</code>就會啟動 Certified App 的除錯功能;Firefox OS 亦將重新啟動。</li>
- </ul>
- </li>
- <li>模擬器
- <ul>
- <li>模擬器已經預設開啟 Certified App 的除錯功能。</li>
- </ul>
- </li>
- <li>B2G 桌機裝置
- <ul>
- <li>在連線並啟動 Certified App 除錯功能之後,即可手動編輯 B2G 桌機用戶端的<a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager#Using_the_B2G_desktop_client">設定</a>。</li>
- </ul>
- </li>
-</ul>
-
-<p>現在 (或在重新啟動 B2G 桌機用戶端之後) 你應該可以到 WebIDE 看到裝置中的所有 Certified App 了。</p>
-
-<h2 id="監控效能">監控效能</h2>
-
-<p>如果你想知道自己 App 的效能,也有幾種方法可於 WebIDE 的執行環境中測得:</p>
-
-<ul>
- <li>「<a href="https://developer.mozilla.org/docs/Tools/WebIDE/Monitor">監控 (Monitor)</a>」面板可初步顯示裝置的效能,協助你找出問題所在。例如 App 佔用的記憶體突然暴增。</li>
- <li>「<a href="https://developer.mozilla.org/docs/Tools/Profiler">效能分析器</a>」工具可讓你細部分析 App。如果要調查已知的效能問題就特別有用。</li>
-</ul>
-
-<h3 class="r" id="疑難雜症_(Troubleshooting)">疑難雜症 (Troubleshooting)</h3>
-
-<p>WebIDE 的其他使用問題,請參閱<a href="/en-US/docs/Tools/WebIDE/Troubleshooting">疑難雜症</a>頁。</p>
-
-<p> </p>
-
-<p> </p>
diff --git a/files/zh-tw/tools/webide/troubleshooting/index.html b/files/zh-tw/tools/webide/troubleshooting/index.html
deleted file mode 100644
index cfdadf7a1b..0000000000
--- a/files/zh-tw/tools/webide/troubleshooting/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: WebIDE 錯誤排除
-slug: Tools/WebIDE/Troubleshooting
-translation_of: Archive/WebIDE/Troubleshooting
----
-<h2 id="連接_Firefox_OS_裝置">連接 Firefox OS 裝置</h2>
-
-<p>如果您連接了 Firefox OS 裝置,但該裝置沒有出現在 WebIDE 裡,有些事情您可以先試試:</p>
-
-<ul>
- <li>檢查 Firefox OS 版本:請確定您的 Firefox OS(Boot2Gecko)版本是 1.2 以上,方能使用 WebIDE。版本號碼可至「設定 &gt; <code>裝置資訊」下的「軟體」查詢。如果您的版本太舊,可考慮依循</code> <a href="/en-US/Firefox_OS/Developer_phone_guide">developer phone guide</a> 的說明升級。</li>
- <li>啟用遠端除錯工具:請至「設定」中「裝置資訊 &gt; 更多資訊 &gt; 開發者」中
- <ul>
- <li>Firefox OS 1.3 以前:勾選「Remote Debugging」</li>
- <li>Firefox OS 1.4 以後:「Remote Debugging」選單中有「僅 ADB」及「ADB 與開發工具」兩個選項,請選擇「ADB 與開發工具」。</li>
- </ul>
- </li>
- <li>停用螢幕鎖:in the Settings app on the device, go to <code>Screen Lock</code> and unchecking the <code>Lock Screen</code> checkbox. This is a good idea because when the screen gets locked, the phone connection gets lost, meaning it is no longer available for debugging.</li>
- <li>不要同時在電腦上連接 Firefox OS 手機與另一隻 Android 手機。</li>
- <li>if <a href="/en-US/docs/Tools/WebIDE#Custom_runtimes">you disabled the ADB Addon Helper</a>, did you successfully run the <code>adb forward</code> command?</li>
- <li>if you use Linux, make sure you added add a <code>udev</code> rules file, as documented in step 3 of this guide to <a class="external external-icon" href="http://developer.android.com/tools/device.html#setting-up">setting up an Android device</a>. The <code>idVendor</code> attribute to use for the Geeksphone is "05c6", and <a class="external external-icon" href="http://developer.android.com/tools/device.html#VendorIds">this page</a> lists other <code>idVendor</code> values.</li>
- <li>if you use Windows:
- <ul>
- <li>you need to install drivers, as documented in step 3 of this guide to <a class="external external-icon" href="http://developer.android.com/tools/device.html#setting-up">setting up an Android device</a>. You can find drivers for Geeksphone devices on the <a class="external external-icon" href="http://downloads.geeksphone.com/">Geeksphone web site</a>. Windows 8 by default will not let you install unsigned drivers. See this tutorial on <a class="external-icon external" href="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html" title="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html">"How to install an unsigned driver on Windows 8"</a>.</li>
- <li>if the WebIDE can't see your device after following all the steps, you may have to <a class="external-icon external" href="http://blog.fh-kaernten.at/wehr/?p=1182">edit adb_usb.ini</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h2 id="為認證過的應用程式除錯">為認證過的應用程式除錯</h2>
-
-<p>如果您想為認證過的應用程式(包括內建的應用程式)除錯,請參考 <a href="/en-US/docs/Tools/WebIDE#Debugging_certified_apps">debugging certified apps</a> 中的說明。</p>
-
-<h2 id="Enable_logging">Enable logging</h2>
-
-<p>You can also enable verbose logging to gather diagnostics:</p>
-
-<ol start="1" style="list-style-type: decimal;">
- <li>visit <a class="external external-icon" href="http://kb.mozillazine.org/About:config">about:config</a>, and add a new preference called <span class="message"><span class="content"><code><span class="email">extensions.adbhelper@mozilla.org.sdk</span>.console.logLevel</code>, with the string value <code>all, and set </code></span></span>extensions.adbhelper@mozilla.org.debug<span class="message"><span class="content"><code> to true</code></span></span></li>
- <li>In the <a class="external external-icon" href="https://support.mozilla.org/en-US/kb/disable-or-remove-add-ons">Add-ons Manager</a>, disable and then re-enable the ADB Helper add-on.</li>
- <li>Open the <a href="https://developer.mozilla.org/en-US/docs/Tools/Browser_Console">Browser Console</a> and you'll now see console messages prefixed with <code>adb</code>. If the messages don't mean anything to you, <a href="/en-US/docs/Tools/WebIDE/Troubleshooting#Get_help">ask for help</a>.</li>
-</ol>
-
-<h2 id="尋求協助">尋求協助</h2>
-
-<p>請上 <a class="external external-icon" href="https://wiki.mozilla.org/DevTools/GetInvolved#Communication">IRC 的 #devtools</a> 頻道尋求協助。</p>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.1/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.1/index.html
deleted file mode 100644
index 1095a343b3..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.1/index.html
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: New in JavaScript 1.1
-slug: Web/JavaScript/New_in_JavaScript/1.1
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.1
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>The following is a changelog for JavaScript from Netscape Navigator 2.0 to 3.0. The old Netscape documentation references this as <a href="https://web.archive.org/web/20060318153542/wp.netscape.com/eng/mozilla/3.0/handbook/javascript/index.html">"Features added after version 1"</a>. Netscape Navigator 3.0 was released on August 19, 1996. Netscape Navigator 3.0 was the second major version of the browser with JavaScript support.</p>
-
-<h2 id="JavaScript_versions">JavaScript versions</h2>
-
-<p>Netscape Navigator 3.0 also introduced JavaScript language versions.</p>
-
-<pre class="brush: html">&lt;SCRIPT LANGUAGE="JavaScript"&gt; &lt;!-- JavaScript for Navigator 2.0. --&gt;
-&lt;SCRIPT LANGUAGE="JavaScript1.1"&gt; &lt;!-- JavaScript for Navigator 3.0. --&gt;</pre>
-
-<h2 id="New_features_in_JavaScript_1.1">New features in JavaScript 1.1</h2>
-
-<h3 id="New_objects">New objects</h3>
-
-<ul>
- <li>{{jsxref("Array")}}</li>
- <li>{{jsxref("Boolean")}}</li>
- <li>{{jsxref("Function")}}</li>
- <li>{{jsxref("Number")}}</li>
-</ul>
-
-<h3 id="New_properties">New properties</h3>
-
-<ul>
- <li>{{jsxref("Number.MAX_VALUE")}}</li>
- <li>{{jsxref("Number.MIN_VALUE")}}</li>
- <li>{{jsxref("NaN")}}</li>
- <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li>
- <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li>
-</ul>
-
-<h3 id="New_methods">New methods</h3>
-
-<ul>
- <li>{{jsxref("Array.prototype.join()")}}</li>
- <li>{{jsxref("Array.prototype.reverse()")}}</li>
- <li>{{jsxref("Array.prototype.sort()")}}</li>
- <li>{{jsxref("Array.prototype.split()")}}</li>
-</ul>
-
-<h3 id="New_operators">New operators</h3>
-
-<ul>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a></code></li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/void">void</a></code></li>
-</ul>
-
-<h3 id="Other_new_features">Other new features</h3>
-
-<ul>
- <li><code><a href="/zh-TW/docs/Web/HTML/Element/noscript">&lt;noscript&gt;</a></code></li>
- <li><a href="/zh-TW/docs/Archive/Web/LiveConnect">LiveConnect</a>. Communication between Java and JavaScript.</li>
-</ul>
-
-<h2 id="Changed_functionality_in_JavaScript_1.1">Changed functionality in JavaScript 1.1</h2>
-
-<ul>
- <li>"Object deletion". You can remove an object by setting its object reference to <code>null</code>.</li>
- <li><code>constructor</code> and <code>prototype</code> properties on objects added.</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> is now a method of every object (was previously a built-in function); it evaluates a string of JavaScript code in the context of the specified object.</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Math/random">Math.random()</a></code> now works on every platform.</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Object/toString">toString()</a></code>: Added radix parameter, which specifies the base to use for representing numeric values.</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/isNaN">isNaN()</a></code> now works on every platform (not only Unix anymore)</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/parseFloat">parseFloat()</a></code> and <code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/parseInt">parseint()</a></code> now return <code>NaN</code> on all platforms, if the first character of the specified string cannot be converted to a number; in previous releases, it returned <code>NaN</code> on Solaris and Irix and zero on all other platforms.</li>
-</ul>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.2/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.2/index.html
deleted file mode 100644
index 3c5db395fc..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.2/index.html
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: New in JavaScript 1.2
-slug: Web/JavaScript/New_in_JavaScript/1.2
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.2
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>The following is a changelog for JavaScript from Netscape Navigator 3.0 to 4.0. The old Netscape documentation can be found on <a href="https://web.archive.org/web/19971015223714/http://developer.netscape.com/library/documentation/communicator/jsguide/js1_2.htm">archive.org</a>. Netscape Navigator 4.0 was released on June 11, 1997. Netscape Navigator 4.0 was the third major version of the browser with JavaScript support.</p>
-
-<h2 id="JavaScript_versions">JavaScript versions</h2>
-
-<p>Netscape Navigator 4.0 executes JavaScript language versions up to 1.2. Note that Netscape Navigator 3.0 and earlier ignored scripts with the language attribute set to "JavaScript1.2" and higher.</p>
-
-<pre class="brush: html">&lt;SCRIPT LANGUAGE="JavaScript1.1"&gt; &lt;!-- JavaScript for Navigator 3.0. --&gt;
-&lt;SCRIPT LANGUAGE="JavaScript1.2"&gt; &lt;!-- JavaScript for Navigator 4.0. --&gt;</pre>
-
-<h2 id="New_features_in_JavaScript_1.2">New features in JavaScript 1.2</h2>
-
-<h3 id="New_objects">New objects</h3>
-
-<ul>
- <li>You can create objects using literal notation (inspired by dictionary literal syntax from Python 1.x).</li>
- <li>Arrays can now be created using literal notation (inspired by list literal syntax from Python 1.x).</li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></li>
-</ul>
-
-<h3 id="New_properties">New properties</h3>
-
-<ul>
- <li>{{jsxref("Function.arity")}}</li>
-</ul>
-
-<h3 id="New_methods">New methods</h3>
-
-<ul>
- <li>{{jsxref("Array.prototype.concat()")}}</li>
- <li>{{jsxref("Array.prototype.slice()")}}</li>
- <li>{{jsxref("String.prototype.charCodeAt()")}}</li>
- <li>{{jsxref("String.prototype.concat()")}}</li>
- <li>{{jsxref("String.fromCharCode()")}}</li>
- <li>{{jsxref("String.prototype.match()")}}</li>
- <li>{{jsxref("String.prototype.replace()")}}</li>
- <li>{{jsxref("String.prototype.search()")}}</li>
- <li>{{jsxref("String.prototype.slice()")}}</li>
- <li>{{jsxref("String.prototype.substr()")}}</li>
-</ul>
-
-<h3 id="New_operators">New operators</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Equality_comparisons_and_when_to_use_them">Equality operators</a> (<code>==</code> and <code>!=</code>)</li>
-</ul>
-
-<h3 id="New_statements">New statements</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/label">Labeled</a> statements</li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/switch"><code>switch</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/do...while"><code>do...while</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/import"><code>import</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/export"><code>export</code></a></li>
-</ul>
-
-<h3 id="Other_new_features">Other new features</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Guide/Regular_Expressions">Regular Expressions</a></li>
- <li><a href="https://web.archive.org/web/19971015223714/http://developer.netscape.com/library/documentation/communicator/jsguide/js1_2.htm">Signed scripts</a></li>
-</ul>
-
-<h2 id="Changed_functionality_in_JavaScript_1.2">Changed functionality in JavaScript 1.2</h2>
-
-<ul>
- <li>You can now nest functions within functions.</li>
- <li>Number now converts a specified object to a number.</li>
- <li>Number now produces <code>NaN</code> rather than an error if <code>x</code> is a string that does not contain a well-formed numeric literal.</li>
- <li>String now converts a specified object to a string.</li>
- <li>{{jsxref("Array.prototype.sort()")}} now works on all platforms. It no longer converts undefined elements to null and sorts them to the high end of the array.</li>
- <li>{{jsxref("String.prototype.split()")}}
- <ul>
- <li>It can take a regular expression argument, as well as a fixed string, by which to split the object string.</li>
- <li>It can take a limit count so that it won't include trailing empty elements in the resulting array.</li>
- </ul>
- </li>
- <li>{{jsxref("String.prototype.substring()")}}: no longer swaps index numbers when the first index is greater than the second.</li>
- <li><code>toString()</code>: now converts the object or array to a literal.</li>
- <li>The <a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/break"><code>break</code></a> and <a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/continue"><code>continue</code></a> statements can now be used with the new labeled statement.</li>
-</ul>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.3/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.3/index.html
deleted file mode 100644
index 635126dc4f..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.3/index.html
+++ /dev/null
@@ -1,138 +0,0 @@
----
-title: New in JavaScript 1.3
-slug: Web/JavaScript/New_in_JavaScript/1.3
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.3
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>The following is a changelog for JavaScript from Netscape Navigator 4.0 to 4.5. The old Netscape documentation can be found on <a href="https://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html">archive.org</a>. Netscape Navigator 4.5 was released on October 19, 1998.</p>
-
-<p>The most significant change in JavaScript 1.3 was compliance with ECMA-262 and Unicode by removing inconsistencies between JavaScript 1.2 and the new ECMA standard (which was published in June 1997). Additional features of version 1.2, at the time not specified by ECMA-262 were kept in the JavaScript language (see below for a list of differences).</p>
-
-<h2 id="JavaScript_versions">JavaScript versions</h2>
-
-<p>Netscape Communicator and Navigator 4.06 and 4.5 executes JavaScript language versions up to 1.3. Note that Communicator and Navigator 4.0-4.05 and earlier ignored scripts with the language attribute set to "JavaScript1.3" and higher.</p>
-
-<pre class="brush: html">&lt;SCRIPT LANGUAGE="JavaScript1.2"&gt; &lt;!-- JavaScript for Navigator 4.0. --&gt;
-&lt;SCRIPT LANGUAGE="JavaScript1.3"&gt; &lt;!-- JavaScript for Navigator 4.5. --&gt;</pre>
-
-<h2 id="New_features_in_JavaScript_1.3">New features in JavaScript 1.3</h2>
-
-<h3 id="New_globals">New globals</h3>
-
-<ul>
- <li>{{jsxref("NaN")}}</li>
- <li>{{jsxref("Infinity")}}</li>
- <li>{{jsxref("undefined")}}</li>
-</ul>
-
-<h3 id="New_methods">New methods</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/isFinite"><code>isFinite()</code></a></li>
- <li>{{jsxref("Function.prototype.call()")}}</li>
- <li>{{jsxref("Function.prototype.apply()")}}</li>
- <li>{{jsxref("Date.UTC()")}}</li>
- <li>{{jsxref("Date.prototype.getFullYear()")}}</li>
- <li>{{jsxref("Date.prototype.setFullYear()")}}</li>
- <li>{{jsxref("Date.prototype.getMilliseconds()")}}</li>
- <li>{{jsxref("Date.prototype.setMilliseconds()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCMonth()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCDate()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCHours()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCMinutes()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCSeconds()")}}</li>
- <li>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</li>
- <li>{{jsxref("Date.prototype.toUTCString()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCFullYear()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCMonth()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCDate()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCHours()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCMinutes()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCSeconds()")}}</li>
- <li>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</li>
-</ul>
-
-<h3 id="Other_new_features">Other new features</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators" title="JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">Strict equality operators</a></li>
- <li>Unicode support</li>
- <li>A JavaScript Console was introduced.</li>
-</ul>
-
-<h2 id="Changed_functionality_in_JavaScript_1.3">Changed functionality in JavaScript 1.3</h2>
-
-<ul>
- <li>Changes to <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Date" title="JavaScript/Reference/Global_Objects/Date"><code>Date</code></a> to conform with ECMA-262
-
- <ul>
- <li>New constructor <code>Date(year, month, day, [,<em>hours</em> [<em>, minutes</em> [<em>, seconds</em> [<em>, milliseconds</em> ]]]])</code></li>
- <li>Additional method parameters:
- <ul>
- <li><code>setMonth(month[, date])</code></li>
- <li><code>setHours(hours[, min[, sec[, ms]]])</code></li>
- <li><code>setMinutes(min[, sec[, ms]])</code></li>
- <li><code>setSeconds(sec[, ms])</code></li>
- </ul>
- </li>
- </ul>
- </li>
- <li>The length of an array (property length) is now an unsigned, 32-bit integer.</li>
- <li>{{jsxref("Array.prototype.push()")}}: In JavaScript 1.2, the <code>push</code> method returned the last element added to an array. Under JavaScript 1.3, <code>push</code> returns the new length of the array.</li>
- <li>{{jsxref("Array.prototype.slice()")}}: In JavaScript 1.2, the <code>splice</code> method returned the element removed, if only one element was removed (<code>howMany</code> parameter is <code>1</code>). In JavaScript 1.3, <code>splice</code> always returns an array containing the removed elements. If one element is removed, an array of one element is returned.</li>
- <li><a href="https://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#replace">Changes</a> to {{jsxref("String.prototype.replace()")}}.</li>
- <li><a href="https://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#Boolean">Changes</a> to the {{jsxref("Boolean")}} object.</li>
- <li><a href="https://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#toString">Changes</a> to <code>toString()</code>.</li>
-</ul>
-
-<h2 id="Non-ECMA-262_features_of_JavaScript_1.3">Non-ECMA-262 features of JavaScript 1.3</h2>
-
-<p>The following is a comparison between the June 1998 version of ECMA-262 and JavaScript 1.3. The following features were not part of the standard at that time, but implemented in JavaScript 1.3.</p>
-
-<h3 id="Keywords_and_operators">Keywords and operators</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">Strict equality operators</a></li>
- <li>vertical tab (<code>\v</code> or <code>\u000B</code>) as an escape sequence.</li>
-</ul>
-
-<h3 id="Statements">Statements</h3>
-
-<ul>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/label"><code>label</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/switch"><code>switch</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/do...while"><code>do...while</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/export"><code>export</code></a></li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/import"><code>import</code></a></li>
-</ul>
-
-<h3 id="Built-in_objects">Built-in objects</h3>
-
-<ul>
- <li>{{jsxref("RegExp")}}</li>
-</ul>
-
-<h3 id="Methods_of_built-in_objects">Methods of built-in objects</h3>
-
-<ul>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource">toSource()</a></code></li>
- <li>{{jsxref("Object.prototype.watch()")}}</li>
- <li>{{jsxref("Object.prototype.unwatch()")}}</li>
- <li>{{jsxref("Function.arity")}}</li>
- <li>{{jsxref("Function.prototype.apply()")}}</li>
- <li>{{jsxref("Function.prototype.call()")}}</li>
- <li>{{jsxref("Array.prototype.concat()")}}</li>
- <li>{{jsxref("Array.prototype.pop()")}}</li>
- <li>{{jsxref("Array.prototype.push()")}}</li>
- <li>{{jsxref("Array.prototype.shift()")}}</li>
- <li>{{jsxref("Array.prototype.slice()")}}</li>
- <li>{{jsxref("Array.prototype.splice()")}}</li>
- <li>{{jsxref("String.prototype.concat()")}}</li>
- <li>{{jsxref("String.prototype.concat()")}}</li>
- <li>{{jsxref("String.prototype.match()")}}</li>
- <li>{{jsxref("String.prototype.search()")}}</li>
- <li>{{jsxref("String.prototype.slice()")}}</li>
- <li>{{jsxref("String.prototype.substr()")}}</li>
-</ul>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.4/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.4/index.html
deleted file mode 100644
index d44fe1eb71..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.4/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: New in JavaScript 1.4
-slug: Web/JavaScript/New_in_JavaScript/1.4
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.4
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>The following is a changelog for JavaScript 1.4, which was only used for Netscape's server side JavaScript released in 1999. The old Netscape documentation can be found on <a href="https://web.archive.org/web/20040802225238/http://developer.netscape.com/docs/manuals/js/core/jsref/index.htm">archive.org</a>.</p>
-
-<h2 id="New_features_in_JavaScript_1.4">New features in JavaScript 1.4</h2>
-
-<ul>
- <li>Exception handling (<a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/throw"><code>throw</code></a> and <a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/try...catch"><code>try...catch</code></a>)</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/in">in</a></code> operator</li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/instanceof"><code>instanceof</code></a> operator</li>
-</ul>
-
-<h2 id="Changed_functionality_in_JavaScript_1.4">Changed functionality in JavaScript 1.4</h2>
-
-<ul>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/eval" title="JavaScript/Reference/Global_Functions/Eval">eval()</a></code> changes (cannot be called indirectly and no longer a method of <code>Object</code>)</li>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments" title="JavaScript/Reference/Functions/arguments">arguments</a></code> not a property of functions</li>
- <li>Deprecated {{jsxref("Function.arity")}} in favor of {{jsxref("Function.length")}}</li>
- <li>Changes to <a href="/zh-TW/docs/Archive/Web/LiveConnect">LiveConnect</a></li>
-</ul>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.5/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.5/index.html
deleted file mode 100644
index b516506dcd..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.5/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: New in JavaScript 1.5
-slug: Web/JavaScript/New_in_JavaScript/1.5
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.5
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>The following is a changelog for JavaScript 1.5. This version was included in Netscape Navigator 6.0 was released on November 14, 2000 and was also used in later versions of Netscape Navigator and Firefox 1.0. You can compare JavaScript 1.5 to JScript version 5.5 and Internet Explorer 5.5, which was released in July 2000. The corresponding ECMA standard is ECMA-262 Edition 3 (from December 1999).</p>
-
-<h2 id="New_features_in_JavaScript_1.5">New features in JavaScript 1.5</h2>
-
-<ul>
- <li>{{jsxref("Number.prototype.toExponential()")}}</li>
- <li>{{jsxref("Number.prototype.toFixed()")}}</li>
- <li>{{jsxref("Number.prototype.toPrecision()")}}</li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a></li>
- <li>Multiple catch clauses in a <a href="/zh-TW/docs/Web/JavaScript/Reference/Statements/try...catch"><code>try...catch</code></a> statement are supported.</li>
- <li>JavaScript authors can now add getters and setters to their objects.</li>
-</ul>
-
-<h2 id="Changed_functionality_in_JavaScript_1.5">Changed functionality in JavaScript 1.5</h2>
-
-<ul>
- <li>Runtime errors are now reported as exceptions.</li>
- <li>Regular Expression changes:
- <ul>
- <li>Quantifiers — +, *, ? and {} — can now be followed by a ? to force them to be non-greedy.</li>
- <li>Non-capturing parentheses, (?:x) can be used instead of capturing parentheses, (x). When non-capturing parentheses are used, matched subexpressions are not available as back-references.</li>
- <li>Positive and negative lookahead assertions are supported. Both assert a match depending on what follows the string being matched.</li>
- <li>The m flag has been added to specify that the regular expression should match over multiple lines.</li>
- </ul>
- </li>
- <li>Functions can now be declared inside an if clause.</li>
- <li>
- <p>Functions can now be declared inside an expression.</p>
- </li>
-</ul>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.6/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.6/index.html
deleted file mode 100644
index 0c3ffa0f25..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.6/index.html
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: JavaScript 1.6 新鮮事
-slug: Web/JavaScript/New_in_JavaScript/1.6
-tags:
- - E4X
- - JavaScript
- - JavaScript_version_overviews
- - 所有類別
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.6
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>JavaScript 1.6 推出了幾項新機能:E4X、幾個新的 <code>Array</code> 方法、以及 Array 與 String 的通用化。</p>
-
-<p><a href="/zh_tw/Firefox_1.5" title="zh_tw/Firefox_1.5">Firefox 1.5</a> 或更新版的瀏覽器支援 JavaScript 1.6。</p>
-
-<h3 id="E4X" name="E4X">E4X</h3>
-
-<p>ECMAScript for XML(<a href="/zh_tw/E4X" title="zh_tw/E4X">E4X</a>)是個在 <a href="/zh_tw/JavaScript" title="zh_tw/JavaScript">JavaScript</a> 內建立並處理 <a href="/zh_tw/XML" title="zh_tw/XML">XML</a> 內容的強力技術。我們將持續改進我們對 E4X 的支援,包括新增與既有的 <a href="/zh_tw/DOM" title="zh_tw/DOM">DOM</a> 進行透明化的整合,不過建立以 XML 為基礎的 Web 應用程式的開發者已可受益於 Firefox 1.5 對 E4X 的支援。</p>
-
-<p>使用 E4X 時還是可以使用標準的 MIME 類型:</p>
-
-<pre>&lt;script type="text/javascript"&gt;
-</pre>
-
-<p>不過,E4X 語法可能會和把 Script 放進 HTML 註解以避免舊瀏覽器讀取的現行方式(<code>&lt;!--...--&gt;</code>)發生衝突。E4X 也有可能與把 Script 放進 XML CDATA 區段(<code>&lt;![CDATA{{ mediawiki.external('...') }}]&gt;</code>)讓 Script 可以直接使用 "&lt;" 和 "&gt;" 符號(這並不適用於 HTML)的現行方式發生衝突。如果你不斷的見到莫名其妙的語法錯誤,那就把 "; e4x=1" 加到 MIME 類型裡:</p>
-
-<pre>&lt;script type="text/javascript; e4x=1"&gt;
-</pre>
-
-<p>注意,擴充套件中的 Script 一定會把 HTML 註解當作 E4X 的語法來處理。也就是說,"e4x=1" 是預設的。</p>
-
-<p>E4X 已在 <a href="/zh_tw/E4X/使用_E4X_處理_XML" rel="internal" title="zh tw/E4X/使用 E4X 處理 XML">使用 E4X 處理 XML</a> 一文中說明。</p>
-
-<h3 id="Array_的擴充" name="Array_的擴充">Array 的擴充</h3>
-
-<p>在此有七個新的 <code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array" title="zh tw/Core JavaScript 1.5 參考/物件/Array">Array</a></code> 方法,並且可以分成兩大類,項目定位方法以及迭代方法。項目定位方法有:</p>
-
-<ul>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/indexOf" title="zh tw/Core JavaScript 1.5 參考/物件/Array/indexOf">indexOf()</a></code> - 返回第一次出現指定項目的索引。</li>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/lastIndexOf" title="zh tw/Core JavaScript 1.5 參考/物件/Array/lastIndexOf">lastIndexOf()</a></code> - 返回最後一次出現指定項目的索引。</li>
-</ul>
-
-<p>迭代方法有:</p>
-
-<ul>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/every" title="zh tw/Core JavaScript 1.5 參考/物件/Array/every">every()</a></code> - 對陣列中的每一個項目執行函數,如果函數返回 true 就繼續下去。如果每一個項目都返回 true,就返回 true。</li>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/filter" title="zh tw/Core JavaScript 1.5 參考/物件/Array/filter">filter()</a></code> - 對陣列中的每一個項目執行函數,並以陣列返回函數執行結果為 true 的項目。</li>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/forEach" title="zh tw/Core JavaScript 1.5 參考/物件/Array/forEach">forEach()</a></code> - 對陣列中的每一個項目執行函數。</li>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/map" title="zh tw/Core JavaScript 1.5 參考/物件/Array/map">map()</a></code> - 對陣列中的每一個項目執行函數,並以陣列返回執行結果。</li>
- <li><code><a href="/zh_tw/Core_JavaScript_1.5_參考/物件/Array/some" title="zh tw/Core JavaScript 1.5 參考/物件/Array/some">some()</a></code> - 對陣列中的每一個項目執行函數,如果函數返回 false 就繼續下去。如果有一個項目返回 true,就返回 true。</li>
-</ul>
-
-<p>閱讀 <a href="/zh_tw/Core_JavaScript_1.5_教學/陣列的運用#於_JavaScript_1.6_引入" rel="internal" title="zh tw/Core JavaScript 1.5 教學/陣列的運用#於 JavaScript 1.6 引入">陣列的運用</a> 以取得更多資訊,或見 Nicholas C. Zakas 的文章,<span class="exlink"><a class="external" href="http://www.webreference.com/programming/javascript/ncz/column4/index.html" title="http://www.webreference.com/programming/javascript/ncz/column4/index.html">Mozilla's New Array Methods</a></span>。</p>
-
-<h3 id="Array_.E8.88.87_String_.E5.85.B1.E9.80.9A_.28generics.29" name="Array_.E8.88.87_String_.E5.85.B1.E9.80.9A_.28generics.29">Array 與 String 的通用化</h3>
-
-<p>有時候你會想要把陣列的方法套用在字串上。這樣做的話,便是把字串視為字元的陣列。比如說,如果要檢查變數 <var>str</var> 裡面的每個字元都是字母,你就會這樣寫:</p>
-
-<pre>function isLetter(character) {
- return (character &gt;= "a" &amp;&amp; character &lt;= "z");
-}
-
-if (Array.prototype.every.call(str, isLetter))
- alert("字串 '" + str + "' 只有包含字母!");
-</pre>
-
-<p>這樣的寫法相當耗事,所以 JavaScript 1.6 有比較簡短的寫法:</p>
-
-<pre>if (Array.every(str, isLetter))
- alert("字串 '" + str + "' 只有包含字母!");
-</pre>
-
-<p>同理,你可以把 String 方法用在任何物件上:</p>
-
-<pre>var num = 15;
-alert(String.replace(num, /5/, '2'));
-</pre>
-
-<h3 id=".E5.8F.A6.E5.A4.96.E5.8F.83.E8.A6.8B" name=".E5.8F.A6.E5.A4.96.E5.8F.83.E8.A6.8B">參閱</h3>
-
-<ul>
- <li>自 <a href="/zh_tw/Firefox_2_技術文件" title="zh_tw/Firefox_2_技術文件">Firefox 2</a> 起開始支援的 <a href="/zh_tw/JavaScript_1.7_新鮮事" title="zh_tw/JavaScript_1.7_新鮮事">JavaScript 1.7</a>。</li>
- <li><a href="/zh_tw/Core_JavaScript_1.5_教學/陣列的運用#近似陣列的物件的運用" rel="internal" title="zh tw/Core JavaScript 1.5 教學/陣列的運用#近似陣列的物件的運用">近似陣列的物件的運用</a>。</li>
-</ul>
-
-<p>{{ languages( { "en": "en/New_in_JavaScript_1.6", "es": "es/Novedades_en_JavaScript_1.6", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.6", "ja": "ja/New_in_JavaScript_1.6", "pl": "pl/Nowo\u015bci_w_JavaScript_1.6", "ru": "ru/\u041d\u043e\u0432\u043e\u0435_\u0432_JavaScript_1.6", "zh-cn": "cn/New_in_JavaScript_1.6" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.7/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.7/index.html
deleted file mode 100644
index 9f94bb6e88..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.7/index.html
+++ /dev/null
@@ -1,600 +0,0 @@
----
-title: JavaScript 1.7 新鮮事
-slug: Web/JavaScript/New_in_JavaScript/1.7
-tags:
- - JavaScript
- - JavaScript_version_overviews
- - 待翻譯
- - 所有類別
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.7
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>{{ Fx_minversion_header(2) }}</p>
-
-<p>JavaScript 1.7 是個程式語言上的更新,新推出了幾項新功能,諸如特別的產生器(generator)、迭代器(iterator)、陣列簡約式(array comprehension)、<code>let</code> 表達式、以及分割代入(destructuring assignment)。它也包含了所有 <a href="/zh_tw/JavaScript_1.6_新鮮事" title="zh_tw/JavaScript_1.6_新鮮事">JavaScript 1.6</a> 的功能。</p>
-
-<p>從 <a href="/zh_tw/Firefox_2_技術文件" title="zh_tw/Firefox_2_技術文件">Firefox 2</a> 起,開始支援 JavaScript 1.7。</p>
-
-<p>本文章使用的程式碼範例可以用 JavaScript shell 實驗。請參見 <a href="/zh_tw/JavaScript_shell_入門" title="zh tw/JavaScript shell 入門">JavaScript shell 入門</a> 以得知如何建造及使用 shell。</p>
-
-<h2 id="使用_JavaScript_1.7" name="使用_JavaScript_1.7">使用 JavaScript 1.7</h2>
-
-<p>為了使用 JavaScript 1.7 的一些新機能,你必須在 HTML 或 XUL 的原始碼中指明你希望使用 JavaScript 1.7:</p>
-
-<pre class="eval"> &lt;script type="application/javascript;version=1.7"/&gt;
-</pre>
-
-<p>當使用 <a href="/zh_tw/JavaScript_shell_入門" title="zh tw/JavaScript shell 入門">JavaScript shell</a> 的時候,你需要設定想要使用的版本,可以在命令列加上 <code>-version 170</code> 或使用 <code>version()</code> 函式:</p>
-
-<pre class="eval"> version(170);
-</pre>
-
-<p>當碰到必須使用新關鍵字「yield」和「let」的機能時,你必須指定版本 1.7,因為既有的程式可能會將那些關鍵字判讀為變數或函數的名字。當某項機能並未引入新關鍵字時(分割代入和陣列簡約式),可不必指定 JavaScript 的版本。</p>
-
-<h2 id="產生器與迭代器" name="產生器與迭代器">產生器與迭代器</h2>
-
-<p>當開發中的代碼涉及到迭代演算法時(例如迭代整個列表或在同一組資料上反覆進行計算),在計算處理期間還需要維護狀態變數的值。傳統上,你必須使用 Callback 函數以取得迭代演算法的立即值。</p>
-
-<h3 id="產生器" name="產生器">產生器</h3>
-
-<p>思考下面的迭代演算法,他會計算費伯納契數︰</p>
-
-<pre class="brush: js">function do_callback(num) {
- document.write(num + "&lt;BR&gt;\n");
-}
-
-function fib() {
- var i = 0, j = 1, n = 0;
- while (n &lt; 10) {
- do_callback(i);
- var t = i;
- i = j;
- j += t;
- n++;
- }
-}
-
-fib();
-</pre>
-
-<p>代碼中使用的 Callback 常式會在演算法每一次的迭代步驟中進行運算。在本例中,每一個費伯納契數只是簡單的輸出到控制台上。</p>
-
-<p>產生器和迭代器的結合運用可提供較佳的新方式來完成這一動作。讓我們來看看使用產生器所寫成的費伯納契數常式的樣子︰</p>
-
-<pre class="brush: js">function fib() {
- var i = 0, j = 1;
- while (true) {
- yield i;
- var t = i;
- i = j;
- j += t;
- }
-}
-
-var g = fib();
-for (var i = 0; i &lt; 10; i++) {
- document.write(g.next() + "&lt;BR&gt;\n");
-}
-</pre>
-
-<p>內含 <code>yield</code> 關鍵字的函數便是產生器。當你呼叫函數的時候,函數的形式參數受限於實際的參數,但函數本身並不會被實際進行求值。取而代之的是產生器迭代器(generator-iterator)的返回。每當呼叫產生器迭代器的 <code>next()</code> 方法就進行迭代演算法的下一步驟。每一步驟的值都是由 <code>yield</code> 關鍵字的值所指定。可以把 <code>yield</code> 想成是產生器迭代器版本的 <code>return</code>,並指明演算法每一回迭代之間的分界線。每當你呼叫 <code>next()</code> 的時候,產生器的代碼會從 <code>yield</code> 之後的語句開始恢復執行。</p>
-
-<p>你可以反覆呼叫產生器迭代器的 <code>next()</code> 方法,直到達到你所想要的結果為止。在本例中,我們可以取得任意多的費伯納契數,只要我們持續呼叫 <code>g.next()</code> 直到拿到所需數目的結果為止。</p>
-
-<h5 id="Resuming_a_generator_at_a_specific_point" name="Resuming_a_generator_at_a_specific_point">在指定點上恢復產生器的執行</h5>
-
-<p>產生器的 <code>next()</code> 方法一經呼叫以後產生器就會被啟動,你可以使用 <code>send()</code> 傳入指定的值,傳入的值會被視為最後一個 <code>yield</code> 的結果。產生器將會返回隨後的 <code>yield</code> 的運算元。</p>
-
-<p>你不能在任意點上啟動產生器;在你可以使用 <code>send()</code> 傳入指定值以前,你必須先以 <code>next()</code> 啟動。</p>
-
-<div class="note"><strong>附註:</strong> 有趣的一點是,呼叫 <code>send(undefined)</code> 和呼叫 <code>next()</code> 是等價的。然而,使用除了 undefined 以外的任意值來呼叫 <code>send()</code> 並啟動新生的產生器,將會導致 <code>TypeError</code> 的例外。</div>
-
-<h5 id="Exceptions_in_generators" name="Exceptions_in_generators">產生器裡的例外</h5>
-
-<p>你可以呼叫產生器的 <code>throw()</code> 方法並傳入要拋出的例外值,強制使產生器拋出例外。例外將會從產生器當下被暫停的內容中拋出,彷彿 <code>throw <em>value</em></code> 被代換成目前被暫停的 <code>yield</code> 語句。</p>
-
-<p>如果在拋出例外的過程中沒有遇到 yield,例外將會不斷擴散直到呼叫 <code>next()</code>,而隨後呼叫的 <code>next()</code> 將會導致 <code>StopIteration</code> 被拋出。</p>
-
-<h5 id="Closing_a_generator" name="Closing_a_generator">關閉產生器</h5>
-
-<p>產生器有一個 <code>close()</code> 方法可強制產生器關閉他自己。關閉產生器的作用有︰</p>
-
-<ol>
- <li>執行產生器函數裡面所有活動中的 <code>finally</code> 子句。</li>
- <li>如果 <code>finally</code> 子句拋出除了 <code>StopIteration</code> 以外的任何例外,例外會被擴散到 <code>close()</code> 方法的呼叫端。</li>
- <li>結束產生器。</li>
-</ol>
-
-<h5 id="Generator_Example" name="Generator_Example">產生器的範例</h5>
-
-<p>下面的代碼驅動的產生器將會產生 100 個迴圈。</p>
-
-<pre class="brush: js">var gen = generator();
-
-function driveGenerator() {
-  if (gen.next()) {
-    window.setTimeout(driveGenerator, 0);
-  } else {
-    gen.close();
-  }
-}
-
-function generator() {
-  while (i &lt; something) {
-    /** stuff **/
-
-    ++i;
-    /** 100 loops per yield **/
-    if ((i % 100) == 0) {
-      yield true;
-    }
-  }
-  yield false;
-}
-</pre>
-
-<h3 id="迭代器" name="迭代器">迭代器</h3>
-
-<p><em>迭代器</em>是一種特殊的物件,可讓你在資料上進行迭代。</p>
-
-<p>在正常使用下,迭代器物件是「看不見的」;你並不需要直接在裡面做操作,但會使用到 JavaScript 的 <a href="/zh_tw/Core_JavaScript_1.5_教學/物件的操作語法" title="zh tw/Core JavaScript 1.5 教學/物件的操作語法"><code>for...in</code> 和 <code>for each...in</code> 語法</a> 在物件的鍵值上自然的循環。</p>
-
-<pre class="brush: js">var objectWithIterator = getObjectSomehow();
-
-for (var i in objectWithIterator)
-{
- document.write(objectWithIterator[i] + "&lt;BR&gt;\n");
-}
-</pre>
-
-<p>如果你正在實裝你自己的迭代器物件,或者有另一個需要直接操作的迭代器,你將需要知道 <code>next</code> 方法、<code>StopIteration</code> 例外、還有 <code>__iterator__</code> 方法。</p>
-
-<p>你可以藉著呼叫 <code>Iterator(<em>objectname</em>)</code> 來為物件建立迭代器;物件的迭代器會透過物件的 <code>__iterator__</code> 方法找出來,如果沒有提供 <code>__iterator__</code> 方法,就會建立預設的迭代器。預設的迭代器會提供物件的屬性,通常是對應於 <code>for...in</code> 和 <code>for each...in</code> 的模式。如果你想要提供自訂的迭代器,你就要覆蓋 <code>__iterator__</code> 方法並返回你自訂的迭代器的實體。要從 Script 取得物件的迭代器,你就要使用 <code>Iterator(<em>obj</em>)</code> 而非直接存取 <code>__iterator__</code> 屬性。前者可用於陣列;而後者不行。</p>
-
-<p>一旦你有了迭代器以後,你就可以藉由呼叫迭代器的 <code>next()</code> 方法輕鬆的取得物件中的下一項。如果已無下一項資料,就會拋出 <code>StopIteration</code> 例外。</p>
-
-<p>下面是直接操作迭代器的簡單範例︰</p>
-
-<pre class="brush: js">var obj = {name:"Jack Bauer", username:"JackB", id:12345, agency:"CTU", region:"Los Angeles"};
-
-var it = Iterator(obj);
-
-try {
- while (true) {
- document.write(it.next() + "&lt;BR&gt;\n");
- }
-} catch (err if err instanceof StopIteration) {
- document.write("記錄結束。&lt;BR&gt;\n");
-} catch (err) {
- document.write("未知的錯誤︰" + err.description + "&lt;BR&gt;\n");
-}
-</pre>
-
-<p>這個程式的輸出就像下面這樣︰</p>
-
-<pre>name,Jack Bauer
-username,JackB
-id,12345
-agency,CTU
-region,Los Angeles
-記錄結束。
-</pre>
-
-<p>當你正在建立你的迭代器的時候,也可以選擇性的指定第二個參數,這個參數是真假值,可表明每當你呼叫 <code>next()</code> 方法時是否只想要返回鍵的部分。把前面例子的 <code>var it = Iterator(obj);</code> 改成 <code>var it = Iterator(obj, true);</code> 會變成以下的輸出內容︰</p>
-
-<pre>name
-username
-id
-agency
-region
-記錄結束。
-</pre>
-
-<p>在這兩種情況下,返回的資料的實際順序主要是由實裝方式所決定。在此並沒有統一的資料順序。</p>
-
-<p>迭代器是用來掃描物件裡的資料的簡便方式,包括那些你沒注意到的內容。如果你需要維護應用程式無法預期的資料的話,這一點將會特別實用。</p>
-
-<h2 id="陣列簡約式" name="陣列簡約式">陣列簡約式</h2>
-
-<p>陣列簡約式的用法和產生器一樣,可提供簡便的方式進行陣列的初始化。例如︰</p>
-
-<pre class="brush: js">function range(begin, end) {
- for (let i = begin; i &lt; end; ++i) {
- yield i;
- }
-}
-</pre>
-
-<p><code>range()</code> 是可返回介於 <code>begin</code> 和 <code>end</code> 之間所有的值的產生器。有了上面的定義,我們可以如下使用︰</p>
-
-<pre class="brush: js">var ten_squares = [i * i for (i in range(0, 10))];
-</pre>
-
-<p>這個預先初始化內容的新陣列 <var>ten_squares</var>,內含 <code>0..9</code> 範圍內所有數值的平方。</p>
-
-<p>在初始化陣列的時候,你可以採用任意的條件。如果你想要初始化內含 0 到 20 之間的偶數的陣列,你可以使用下面的代碼︰</p>
-
-<pre class="brush: js">var evens = [i for (i in range(0, 21)) if (i % 2 == 0)];
-</pre>
-
-<p>在 JavaScript 1.7 以前,就必須編寫成像下面這個樣子︰</p>
-
-<pre class="brush: js">var evens = [];
-for (var i=0; i &lt;= 20; i++) {
- if (i % 2 == 0)
- evens.push(i);
-}
-</pre>
-
-<p>陣列簡約式不只是更加的緊密,一旦熟悉了這個概念,就會發現陣列簡約式也真的更加易讀。</p>
-
-<h4 id="作用域規則" name="作用域規則">作用域規則</h4>
-
-<p>陣列簡約式中包含在方括號內部的所有東西具有內含的區塊,就像隱含了 <code>let</code> 宣告一樣。</p>
-
-<h2 id="使用_let_的區塊作用域" name="使用_let_的區塊作用域">使用 <code>let</code> 的區塊作用域</h2>
-
-<p><code>let</code> 可用來管理資料和函數的區塊作用域,在此有許多種方式︰</p>
-
-<ul>
- <li><strong><code>let</code> 語法</strong> 可提供在區塊的作用域內部連結值與變數的方式,而不影響區塊外部相同名稱的變數的值。</li>
- <li><strong><code>let</code> 表達式</strong> 可讓你只對單一的表達式確立變數的作用域。</li>
- <li><strong><code>let</code> 定義</strong> 可定義區塊使變數的作用域受限於這個區塊。這個語法和 <code>var</code> 語法的用法非常類似。</li>
- <li>你也可以使用 <code>let</code> 來確立只存在於 <code>for</code> 循環的條件式內部的變數。</li>
-</ul>
-
-<h3 id="let_語法" name="let_語法"><code>let</code> 語法</h3>
-
-<div class="warning">
-<p>The <code>let</code> block and <code>let</code> expression syntax is non-standard and will be removed in the future. Do not use them! See {{bug(1023609)}} for more details.</p>
-</div>
-
-<p><code>let</code> 語法可提供給變數一個局域作用域。他會作用於被約束在單一區塊範圍內零個以上的變數;否則,他就和 <a href="/../../../../zh_tw/Core_JavaScript_1.5_參考/語法/區塊" rel="internal" title="../../../../zh tw/Core JavaScript 1.5 參考/語法/區塊">區塊語法</a> 完全一樣。須特別注意的是,在 <code>let</code> 語法內部使用以 <code>var</code> 宣告過的變數,如果變數已在 <code>let</code> 語法外部宣告過,其作用域仍和外部的一樣;這樣的變數仍具有函數作用域。</p>
-
-<p>例如︰</p>
-
-<pre class="brush: js">var x = 5;
-var y = 0;
-
-let (x = x+10, y = 12) {
- print(x+y + "\n");
-}
-
-print((x + y) + "\n");
-</pre>
-
-<p>程式的輸出結果會是︰</p>
-
-<pre>27
-5
-</pre>
-
-<p>代碼區塊的規則和 JavaScript 中的任何代碼區塊完全一樣。他會有自己的使用 <code>let</code> 宣告所確立的局域變數。</p>
-
-<div class="note"><strong>附註:</strong> 當使用 <code>let</code> 語法的時候,<code>let</code> 後面的圓括弧是必要的。漏掉圓括弧將導致語法錯誤。</div>
-
-<h4 id="作用域規則" name="作用域規則">作用域規則</h4>
-
-<p>用 <code>let</code> 所定義的變數其作用域即為 <code>let</code> 區塊本身,也包括其內部的區塊,除非內部區塊定義了相同名稱的變數。</p>
-
-<h3 id="let_表達式" name="let_表達式"><code>let</code> 表達式</h3>
-
-<div class="warning">
-<p>The <code>let</code> block and <code>let</code> expression syntax is non-standard and will be removed in the future. Do not use them! See {{bug(1023609)}} for more details.</p>
-</div>
-
-<p>你可以使用 <code>let</code> 來確立只對單一表達式有效的變數:</p>
-
-<pre class="brush: js">var x = 5;
-var y = 0;
-document.write( let(x = x + 10, y = 12) x+y + "&lt;BR&gt;\n");
-document.write(x+y + "&lt;BR&gt;\n");
-</pre>
-
-<p>結果為:</p>
-
-<pre>27
-5
-</pre>
-
-<p>在這個例子中,將 <var>x </var>和 y 指定為 <code>x+10</code> 和 <code>12</code> 只對 <code>x+y</code> 這個表達式有效。</p>
-
-<h4 id="作用域規則" name="作用域規則">作用域規則</h4>
-
-<p>假設有一個 <code>let</code> 表示式:</p>
-
-<pre class="eval">let (<var>decls</var>) <var>expr</var>
-</pre>
-
-<p>這裡的 <var>expr</var> 也會被隱含的區塊所包圍。</p>
-
-<h3 id="let_定義" name="let_定義"><code>let</code> 定義</h3>
-
-<p><code>let</code> 關鍵字也可以用來定義在區塊中的變數。</p>
-
-<div class="note"><strong>附註:</strong> 如果你有更多有趣的例子是有關於 <code>let</code> 定義的使用方式,可以考慮加到此處。</div>
-
-<pre class="brush: js">if (x &gt; y) {
- let gamma = 12.7 + y;
- i = gamma * x;
-}</pre>
-
-<p>你可以在擴充套件的代碼中使用 <code>let</code> 定義假命名空間的別名。(詳見 <a href="/zh_tw/擴充套件中安全性的最佳實踐" title="zh tw/擴充套件中安全性的最佳實踐">擴充套件中安全性的最佳實踐</a>。)</p>
-
-<pre class="brush: js">let Cc = Components.classes, Ci = Components.interfaces;
-</pre>
-
-<p>當使用到內部函數的時候,有時 <code>let</code> 語法、表達式和定義可使代碼更為簡潔。</p>
-
-<pre class="brush: js">var list = document.getElementById("list");
-
-for (var i = 1; i &lt;= 5; i++) {
-  var item = document.createElement("LI");
-  item.appendChild(document.createTextNode("Item " + i));
-
-  let j = i;
-  item.onclick = function (ev) {
-    alert("Item " + j + " is clicked.");
-  };
-  list.appendChild(item);
-}
-</pre>
-
-<p>上面的例子有意如此運作,五個(匿名)內部函數的實體分別參考到五個不同變數 <code>j</code> 的實體。注意,如果你改用 <code>var</code> 取代 <code>let</code>,或是移除變數 <code>j</code> 並簡單的在內部函數中使用變數 <code>i</code>,他就不再如此運作。</p>
-
-<h4 id="作用域規則" name="作用域規則">作用域規則</h4>
-
-<p>使用 <code>let</code> 宣告的變數其作用域不僅是限於所在的區塊,也可用於所在區塊的任意子區塊之中,只要這些子區塊未再次定義同樣的變數。在這個方式下,<code>let</code> 的運作就非常類似 <code>var</code>。主要的不同點在於 <code>var</code> 變數的作用域的範圍是整塊函數︰</p>
-
-<pre class="brush: js"> function varTest() {
- var x = 31;
- if (true) {
- var x = 71; // 相同的變數!
- alert(x); // 71
- }
- alert(x); // 71
- }
-
- function letTest() {
- let x = 31;
- if (true) {
- let x = 71; // 不同的變數
- alert(x); // 71
- }
- alert(x); // 31
- }
-</pre>
-
-<p><code>=</code> 右邊的表達式受限於區塊的內部。和 <code>let</code> 表達式 以及 <code>let</code> 語法 的作用範圍不同︰</p>
-
-<pre class="brush: js"> function letTests() {
- let x = 10;
-
- // let 語法
- let (x = x + 20) {
- alert(x); // 30
- }
-
- // let 表達式
- alert(let (x = x + 20) x); // 30
-
- // let 定義
- {
- let x = x + 20; // 此處的 x 會被求值成 undefined
- alert(x); // undefined + 20 ==&gt; NaN
- }
- }
-</pre>
-
-<p>在程式或類別中,<code>let</code> 並不會像 <code>var</code> 那樣在全域物件上建立屬性;取而代之的是,在對某個內容的語句求值之際,隱含的區塊會被建立,<code>let</code> 便會在隱含的區塊中建立屬性。其本質上的意義是 <code>let</code> 並不會覆蓋先前使用 <code>var</code> 定義的變數。例如︰</p>
-
-<pre class="brush: js">var x = 'global';
-let x = 42;
-document.write(this.x + "&lt;br&gt;\n");
-</pre>
-
-<p>代碼所顯示的輸出將會是 "global" 而非 "42"。</p>
-
-<p><span style="color: rgb(0, 0, 255);">隱含的區塊</span>並不使用圓括弧來界定,他是由 JavaScript 引擎暗中建立的。</p>
-
-<p>在函數中,以 <code>eval()</code> 執行的 <code>let</code> 並不像 <code>var</code> 那樣在變數物件上(活動中的物件或最內部的區塊)建立屬性;取而代之的是,在對程式中的語句求值之際,隱含的區塊會被建立,<code>let</code> 便會在隱含的區塊中建立屬性。這是 <code>eval()</code> 在程式上以前述規則作用的結果。</p>
-
-<p>換句話說,當你使用 <code>eval()</code> 來執行代碼的時候,這些代碼會被視為獨立的程式,這些程式的代碼會被隱含的區塊所包圍。</p>
-
-<h3 id="for_迴圈裡加上_let_的變數" name="for_迴圈裡加上_let_的變數"><code>for</code> 迴圈裡加上 <code>let</code> 的變數</h3>
-
-<p>你可以使用 <code>let</code> 關鍵字把局域變數限制在 <code>for</code> 迴圈的作用域裡,就像使用 <code>var</code> 一般。</p>
-
-<pre class="brush: js">** 加入 obj **
- var i=0;
- for ( let i=i ; i &lt; 10 ; i++ )
- document.write(i + "&lt;BR&gt;\n");
-
- for ( let [name,value] in obj )
- document.write("名稱: " + name + ", 值: " + value + "&lt;BR&gt;\n");
-</pre>
-
-<h4 id="作用域規則" name="作用域規則">作用域規則</h4>
-
-<pre class="eval">for (let <var>expr1</var>; <var>expr2</var>; <var>expr3</var>) <var>statement</var>
-</pre>
-
-<p>在本例中,<var>expr2</var>、<var>expr3</var>、<var>statement</var> 都會被含括在隱含的區塊裡,而這個區塊裡內含以 <code>let <var>expr1</var></code> 宣告的區塊局域變數。這是前述的第一個迴圈的示例。</p>
-
-<pre class="eval">for (let <var>expr1</var> in <var>expr2</var>) <var>statement</var>
-for each(let <var>expr1</var> in <var>expr2</var>) <var>statement</var>
-</pre>
-
-<p>這兩種情況都會有一個內含每一個 <var>statement</var> 的隱含區塊。其中第一個是前述的第二個迴圈。</p>
-
-<h2 id="分割代入" name="分割代入">分割代入</h2>
-
-<p>分割代入是利用反映出陣列或物件結構的字面表達的語法,從陣列或物件抽取資料。</p>
-
-<p>陣列或物件的字面表達式可提供簡易的方式來建立特用的資料封包。這些資料封包一經建立之後,就能以任意方式來做想做的事。你甚至可以從函數裡返回這些資料封包。</p>
-
-<p>分割代入其中一件特別實用的用法是以單一的語句讀取整個結構,不過還有很多有趣的使用方式,並會在隨後小節中顯示完整的範例。</p>
-
-<p>這種能力很類似 Perl 或 Python 等語言所具有的機能。</p>
-
-<h3 id="範例" name="範例">範例</h3>
-
-<p>分割代入最好的解釋方式就是使用範例,所以這裡有一些可供你閱讀並從中學習。</p>
-
-<h4 id="避免臨時變數" name="避免臨時變數">避免臨時變數</h4>
-
-<p>你可以使用分割代入交換變數值,例如︰</p>
-
-<pre class="brush: js">var a = 1;
-var b = 3;
-
-[a, b] = [b, a];
-</pre>
-
-<p>執行代碼之後,<var>b</var> 變成 1 且 <var>a</var> 變成 3。如果沒有分割代入,就需要臨時變數交換兩個變數值(在某些低階語言中,可以使用 <a class="external" href="http://en.wikipedia.org/wiki/XOR_swap">XOR-交換技巧</a>)。</p>
-
-<p>同樣的,也可以用來交換三個以上的變數︰</p>
-
-<pre class="brush: js">var a = 'o';
-var b = "&lt;font color = 'green'&gt;o&lt;/font&gt;";
-var c = 'o';
-var d = 'o';
-var e = 'o';
-var f = "&lt;font color = 'blue'&gt;o&lt;/font&gt;";
-var g = 'o';
-var h = 'o';
-
-for (lp=0;lp&lt;40;lp++)
- {[a, b, c, d, e, f, g, h] = [b, c, d, e, f, g, h, a];
- document.write(a+''+b+''+c+''+d+''+e+''+f+''+g+''+h+''+"&lt;br /&gt;");}
-</pre>
-
-<p>執行代碼時,就會顯示變動的色彩循環效果。</p>
-
-<p>回到我們先前費伯納契數產生器的範例,我們可以去掉臨時變數 "t",改在單一的群組代入語法中計算 "i" 和 "j" 的新值︰</p>
-
-<pre class="brush: js">function fib() {
- var i = 0, j = 1;
- while (true) {
- yield i;
- [i, j] = [j, i + j];
- }
-}
-
-var g = fib();
-for (let i = 0; i &lt; 10; i++)
- print(g.next());
-</pre>
-
-<h4 id="返回多重值" name="返回多重值">返回多重值</h4>
-
-<p>感謝有了分割代入,函數因此能夠返回多重值。儘管一直都可以從函數返回陣列,不過分割代入可提供更進一步的靈活性。</p>
-
-<pre class="brush: js">function f() {
- return [1, 2];
-}
-</pre>
-
-<p>如你所見,返回值是以類似陣列的記法把所有要返回的值含括在方括號內來完成的。你可以使用這個方式來返回任意數目的結果。在本例中,<code>f()</code> 返回變數 <code>{{ mediawiki.external('1, 2') }}</code> 作為他的輸出。</p>
-
-<pre class="brush: js">var a, b;
-[a, b] = f();
-document.write ("A is " + a + " B is " + b + "&lt;BR&gt;\n");
-</pre>
-
-<p>指令 <code>{{ mediawiki.external('a, b') }} = f()</code> 會把函數返回的結果依序代入到方括號裡的變數︰<var>a</var> 會被設成 1 而 <var>b</var> 會被設成 2。</p>
-
-<p>你也可以如同陣列一般取回返回值︰</p>
-
-<pre class="brush: js">var a = f();
-document.write ("A is " + a);
-</pre>
-
-<p>在本例中,<var>a</var> 是內含有值 1 和值 2 的陣列。</p>
-
-<h4 id="在物件上循環" name="在物件上循環">在物件上循環</h4>
-
-<p>你也可以使用分割代入從物件取出資料︰</p>
-
-<pre class="brush: js">var obj = { width: 3, length: 1.5, color: "orange" };
-
-for (let[name, value] in obj) {
- document.write ("Name: " + name + ", Value: " + value + "&lt;BR&gt;\n");
-}
-</pre>
-
-<p>這個循環會遍歷 <var>obj</var> 物件所有的鍵值對,並顯示這些鍵值對的名稱和值。在本例中,其輸出如下︰</p>
-
-<pre>Name: width, Value: 3
-Name: length, Value: 1.5
-Name: color, Value: orange
-</pre>
-
-<p>在 JavaScript 1.7 中,圍繞著 <code>obj</code> 的 <code>Iterator()</code> 並不是必要的;不過在 <a href="/zh_tw/JavaScript_1.8_新鮮事" title="zh tw/JavaScript 1.8 新鮮事">JavaScript 1.8</a> 則是必要的。這是為了使分割代入可用於陣列(詳見 {{ Bug(366941) }})。</p>
-
-<h4 id="在物件的陣列中的值上循環" name="在物件的陣列中的值上循環">在物件的陣列中的值上循環</h4>
-
-<p>你可以遍歷物件上的陣列,在每一個物件上取出感興趣的資料欄位︰</p>
-
-<pre class="brush: js">var people = [
- {
- name: "Mike Smith",
- family: {
- mother: "Jane Smith",
- father: "Harry Smith",
- sister: "Samantha Smith"
- },
- age: 35
- },
- {
- name: "Tom Jones",
- family: {
- mother: "Norah Jones",
- father: "Richard Jones",
- brother: "Howard Jones"
- },
- age: 25
- }
-];
-
-for each (let {name: n, family: { father: f } } in people) {
- document.write ("Name: " + n + ", Father: " + f + "&lt;BR&gt;\n");
-}
-</pre>
-
-<p>本例會取出 <var>name</var> 和 <var>family.father</var> 欄位,存在 <var>n</var> 和 <var>f</var> 裡,並輸出其內容。這會對 <var>people</var> 陣列裡的每一個物件進行處理。其輸出如下︰</p>
-
-<pre>Name: Mike Smith, Father: Harry Smith
-Name: Tom Jones, Father: Richard Jones
-</pre>
-
-<h4 id="忽略部分返回值" name="忽略部分返回值">忽略部分返回值</h4>
-
-<p>你也可以忽略不想要的返回值︰</p>
-
-<pre class="brush: js">function f() {
- return [1, 2, 3];
-}
-
-var [a, , b] = f();
-document.write ("A is " + a + " B is " + b + "&lt;BR&gt;\n");
-</pre>
-
-<p>執行這個代碼之後,a 變成 1 而 b 變成 3。值 2 會被忽略。你可以按這個方式忽略任意(或全部)的返回值。例如︰</p>
-
-<pre class="brush: js">[,,,] = f();
-</pre>
-
-<h4 id="從正規表達式的比對結果取值" name="從正規表達式的比對結果取值">從正規表達式的比對結果取值</h4>
-
-<p>當正規表達式的 <code><a href="/zh_tw/Core_JavaScript_1.5_參考/全域物件/RegExp/exec" title="zh tw/Core JavaScript 1.5 參考/全域物件/RegExp/exec">exec()</a></code> 方法找到符合結果時,就會返回比對結果的陣列。其中第一項是要比對的完整字串,之後是符合正規表達式中的每一個圓括弧的子字串。分割代入可讓你更簡單的從陣列中取出一部分資料,忽略不需要的比對結果。</p>
-
-<pre class="brush: js">// 使用簡單的正規表達式比對 http / https / ftp 形式的 URL。
-var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
-if (!parsedURL)
- return null;
-var [, protocol, fullhost, fullpath] = parsedURL;
-</pre>
-
-<p>{{ languages( { "en": "en/New_in_JavaScript_1.7", "es": "es/Novedades_en_JavaScript_1.7", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.7", "it": "it/Novit\u00e0_in_JavaScript_1.7", "ja": "ja/New_in_JavaScript_1.7", "pl": "pl/Nowo\u015bci_w_JavaScript_1.7" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.8.1/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.8.1/index.html
deleted file mode 100644
index 699ff53f02..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.8.1/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: JavaScript 1.8.1 新鮮事
-slug: Web/JavaScript/New_in_JavaScript/1.8.1
-tags:
- - ECMAScript5
- - Firefox 3.5
- - Gecko 1.9.1
- - JavaScript
- - JavaScript 1.8.1
- - JavaScript_version_overviews
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8.1
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-<div>
-<p>{{ gecko_minversion_header("1.9.1") }}</p>
-
-<p>  JavaScript 1.8.1 僅只修改了一小部份語法。主要的改變可以看 <a class="internal" href="/En/SpiderMonkey/Internals/Tracing_JIT" title="En/SpiderMonkey/Internals/Tracing JIT">Tracemonkey just-in-time compiler</a>,大多是關於效能增進的部份。</p>
-
-<p>  以下列舉一些值得注意的 API 變動 (細節詳見 <a class="external" href="http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/a4d1fe147761aacb#" title="http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/a4d1fe147761aacb#">detailed in this newsgroup posting</a>):</p>
-
-<h2 id="語言新增">語言新增</h2>
-
-<dl>
- <dt><a class="internal" href="../../../../En/Core_JavaScript_1.5_Reference/Global_Objects/Object/GetPrototypeOf" rel="internal"><code>Object.getPrototypeOf()</code></a></dt>
- <dd>這個新函式可以回傳物件的 prototype。</dd>
- <dt><a class="internal" href="/En/Using_native_JSON" title="En/Using JSON in Firefox">Using native JSON</a></dt>
- <dd>Firefox 3.5 可以原生支援 <a class="internal" href="/en/JSON" title="En/JSON">JSON</a> 的操作了。</dd>
- <dt>增加了新的 trim 函式到 String 物件</dt>
- <dd>現在 <a class="internal" href="../../../../en/Core_JavaScript_1.5_Reference/Global_Objects/String" rel="internal"><code>String</code></a> 物件擁有 <a class="internal" href="../../../../En/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim" rel="internal"><code>trim()</code></a>, <code><a class="internal" href="../../../../En/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimLeft" rel="internal">trimLeft()</a> 和</code> <a class="internal" href="../../../../En/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimRight" rel="internal"><code>trimRight()</code></a> 函式。</dd>
-</dl>
-
-<h2 id="其他改良">其他改良</h2>
-
-<ul>
- <li>Implicit setting of properties in object and array initializers no longer execute setters in JavaScript. This makes the behavior of setting the values of properties more predictable. See the blog post <a class="external" href="/web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated" title="https://developer.mozilla.org/editor/fckeditor/core/editor/web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated/">Object and array initializers should not invoke setters when evaluated</a> for details.</li>
-</ul>
-
-<p>{{ languages( { "ja": "ja/New_in_JavaScript_1.8.1"} ) }}</p>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.8.5/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.8.5/index.html
deleted file mode 100644
index 3515191b8b..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.8.5/index.html
+++ /dev/null
@@ -1,132 +0,0 @@
----
-title: New in JavaScript 1.8.5
-slug: Web/JavaScript/New_in_JavaScript/1.8.5
-tags:
- - ECMAScript5
- - JavaScript
- - JavaScript 1.8.5
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8.5
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>以下為 JavaScript 1.8.5 的更新日誌,此版本被涵蓋於 <a href="/zh-TW/Firefox/Releases/4">Firefox 4</a> 之中。</p>
-
-<h2 id="JavaScript_1.8.5_新功能">JavaScript 1.8.5 新功能</h2>
-
-<h3 id="新函數">新函數</h3>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">函數</th>
- <th scope="col">敘述</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{jsxref("Object.create()")}}</td>
- <td>
- <p>基於一個特定的原型物件和屬性,建立一個新物件。{{bug("492840")}}</p>
- </td>
- </tr>
- <tr>
- <td>{{jsxref("Object.defineProperty()")}}</td>
- <td>Adds the named property described by a given descriptor to an object.</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.defineProperties()")}}</td>
- <td>Adds the named properties described by the given descriptors to an object.</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.getOwnPropertyDescriptor()")}}</td>
- <td>Returns a property descriptor for a named property on an object. {{bug("505587")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.keys()")}}</td>
- <td>Returns an array of all enumerable properties on an object. {{bug("307791")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.getOwnPropertyNames()")}}</td>
- <td>Returns an array of all enumerable and non-enumerable properties on an object. {{bug("518663")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.preventExtensions()")}}</td>
- <td>Prevents any extensions of an object. {{bug("492849")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.isExtensible()")}}</td>
- <td>Determine if extending of an object is allowed. {{bug("492849")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.seal()")}}</td>
- <td>
- <p>避免其他程式碼刪除一個物件的屬性。 {{bug("492845")}}</p>
- </td>
- </tr>
- <tr>
- <td>{{jsxref("Object.isSealed()")}}</td>
- <td>Determine if an object is sealed. {{bug("492845")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.freeze()")}}</td>
- <td>凍結一個物件:其他程式碼無法刪除或更便任何屬性。{{bug("492844")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Object.isFrozen()")}}</td>
- <td>辨識一個物件是否遭凍結。{{bug("492844")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Array.isArray()")}}</td>
- <td>檢查一個變數是否為陣列。{{bug("510537")}}</td>
- </tr>
- <tr>
- <td>{{jsxref("Date.prototype.toJSON()")}}</td>
- <td>回傳一個 JSON 格式的字串 給<code>Date</code> 物件。</td>
- </tr>
- <tr>
- <td>{{jsxref("Function.prototype.bind()")}}</td>
- <td>
- <p>Creates a new function that, when called, itself calls this function in the context provided (with a given sequence of arguments) {{bug("429507")}}</p>
- </td>
- </tr>
- </tbody>
-</table>
-
-<h3 id="New_ECMAScript5_features">New ECMAScript5 features</h3>
-
-<ul>
- <li><code><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/get" title="JavaScript/Reference/Operators/Special Operators/get Operator">get</a></code> and <code><a href="/zh-TW/docs/Web/JavaScript/Reference/Operators/set" title="JavaScript/Reference/Operators/Special Operators/set Operator">set</a></code> operators now allows the identifier to be numeric or a string. {{bug("520696")}}</li>
- <li>{{jsxref("Function.apply()")}} can accept any array-like object as the arguments list, instead of only true arrays.</li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode" title="JavaScript/Strict mode">strict mode support</a></li>
- <li>{{jsxref("Array.toString()")}} now works even on non-arrays by either returning the result of calling its <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Array/join" title="JavaScript/Reference/Global Objects/Array/join"><code>join()</code></a> method if one is available or by calling its <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Object/toString" title="JavaScript/Reference/Global Objects/Object/toString"><code>toString()</code></a> method.</li>
-</ul>
-
-<h3 id="Other_standardization_work">Other standardization work</h3>
-
-<p>Various non-standard syntaxes for defining getters and setters have been removed; ECMAScript 5 defined syntax has not been changed. These were all pretty esoteric and rarely used; if this affects you, see <a class="external" href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/" title="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">this blog post</a> for details.</p>
-
-<h3 id="新物件">新物件</h3>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Object</th>
- <th scope="col">Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{jsxref("Proxy")}}</td>
- <td>Offers support for creating <code>Object</code> and <code>Function</code> proxies that enable meta-programming in JavaScript.</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Changed_functionality_in_JavaScript_1.8.5">Changed functionality in JavaScript 1.8.5</h2>
-
-<ul>
- <li>ISO 8601 support in <code>Date</code>: The {{jsxref("Date")}} object's <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Date/parse" title="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse">parse()</a> method now supports simple ISO 8601 format date strings.</li>
- <li>Global objects made read only: The <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/NaN" title="JavaScript/Reference/Global Objects/NaN"><code>NaN</code></a>, <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Infinity" title="JavaScript/Reference/Global Objects/Infinity"><code>Infinity</code></a>, and <a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/undefined" title="JavaScript/Reference/Global Objects/undefined"><code>undefined</code></a> global objects have been made read only, per the ECMAScript 5 specification.</li>
- <li><a href="/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Object/Parent" title="JavaScript/Reference/Global Objects/Object/Parent"><code>obj.__parent__</code></a> and <code>obj.__count__</code> become obsolete. Some information about why: <a class="external" href="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/" title="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/">SpiderMonkey change du jour: the special __parent__ property has been removed</a> {{bug("551529")}} &amp; {{bug("552560")}}.</li>
- <li>Trailing commas no longer accepted in {{jsxref("JSON.parse()")}}.</li>
-</ul>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/1.8/index.html b/files/zh-tw/web/javascript/new_in_javascript/1.8/index.html
deleted file mode 100644
index 63ab0e81b0..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/1.8/index.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-title: JavaScript 1.8 新鮮事
-slug: Web/JavaScript/New_in_JavaScript/1.8
-tags:
- - JavaScript
- - JavaScript_version_overviews
-translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-<p>{{ Fx_minversion_header(3) }} JavaScript 1.8 是 Gecko 1.9(包含於 <a href="/zh_tw/Firefox_3_技術文件" title="zh tw/Firefox 3 技術文件">Firefox 3</a>)的一部分。相較於 <a href="/zh_tw/JavaScript_1.7_新鮮事" title="zh tw/JavaScript 1.7 新鮮事">JavaScript 1.7</a> 此版只是個小更新,不過部分更新是為了跟進 ECMAScript 4/JavaScript 2。此次的釋出版本包含所有在 <a href="/zh_tw/JavaScript_1.6_新鮮事" title="zh tw/JavaScript 1.6 新鮮事">JavaScript 1.6</a> 和 <a href="/zh_tw/JavaScript_1.7_新鮮事" title="zh tw/JavaScript 1.7 新鮮事">JavaScript 1.7</a> 出現的新機能。</p>
-
-<p>詳見 {{ Bug(380236) }} 以追蹤 JavaScript 1.8 的開發狀態。本文件的狀態可見 {{ Bug(421027) }}。</p>
-
-<h3 id="使用_JavaScript_1.8" name="使用_JavaScript_1.8">使用 JavaScript 1.8</h3>
-
-<p>為了在 HTML 中使用 JavaScript 1.8 的新機能,需要像下面那樣來使用︰</p>
-
-<pre class="brush: js"> &lt;script type="application/javascript;version=1.8"&gt; ... 你的代碼 ... &lt;/script&gt;
-</pre>
-
-<p>另一個方式(不推薦)是使用已廢棄的 <code>&lt;script&gt;</code> 語言屬性並把他定義為 "JavaScript1.8"。</p>
-
-<p>如果是使用 <a href="/zh_tw/SpiderMonkey/JavaScript_shell_入門" title="zh tw/SpiderMonkey/JavaScript shell 入門">JavaScript shell</a>,JavaScript XPCOM 元件,或 XUL <code>&lt;script&gt;</code> 元件,會自動({{ Bug(381031) }}, {{ Bug(385159) }})使用最新的 JS 版本(在 Mozilla 1.9 中是 JS1.8)。</p>
-
-<p>如果某一機能需要使用到新關鍵字 "yield" 和 "let",你就要指定 1.7 以上的版本,因為現存的代碼可能會使用這些關鍵字作為變數或函數名。至於未使用到新關鍵字的機能(例如產生器表達式)可以直接使用,不需指定 JavaScript 版本。</p>
-
-<h3 id="表達式化簡" name="表達式化簡">表達式化簡</h3>
-
-<p>表達式化簡(Expression closures)提供類似 典型 <a class="external" href="http://en.wikipedia.org/wiki/Lambda_calculus#Lambda_calculus_and_programming_languages">Lambda 記法</a> 的語法,除了用於簡單函數的簡寫以外,並未帶來其他新機能。</p>
-
-<p><a href="/zh_tw/JavaScript_1.7_新鮮事" title="zh tw/JavaScript 1.7 新鮮事">JavaScript 1.7</a> 及早期版本︰</p>
-
-<pre class="brush: js"> function(x) { return x * x; }
-</pre>
-
-<p>JavaScript 1.8︰</p>
-
-<pre class="brush: js"> function(x) x * x
-</pre>
-
-<p>這個語法可讓你省略花括弧和 'return' 語法 - 使這些隱含化。以這種風格編寫的代碼除了簡短以外,並沒有其他額外的優點。</p>
-
-<p><strong>範例:</strong></p>
-
-<p>連結事件接收器的簡寫︰</p>
-
-<pre class="brush: js"> document.addEventListener("click", function() false, true);
-</pre>
-
-<p>在來自 <a href="/zh_tw/JavaScript_1.6_新鮮事" title="zh tw/JavaScript 1.6 新鮮事">JavaScript 1.6</a> 的 some 中使用這個記法︰</p>
-
-<pre class="brush: js"> elems.some(function(elem) elem.type == "text");
-</pre>
-
-<h3 id="產生器表達式" name="產生器表達式">產生器表達式</h3>
-
-<p>This addition allows you to simply create generators (which were introduced in <a href="/en/New_in_JavaScript_1.7" title="en/New_in_JavaScript_1.7">JavaScript 1.7</a>). Typically you would have to create a custom function which would have a yield in it, but this addition allows you to use array comprehension-like syntax to create an identical generator statement.</p>
-
-<p>In <a href="/en/New_in_JavaScript_1.7" title="en/New_in_JavaScript_1.7">JavaScript 1.7</a>, you might write something like the following in order to create a custom generator for an object:</p>
-
-<pre class="brush: js"> function add3(obj) {
- for ( let i in obj )
- yield i + 3;
- }
-
- let it = add3(someObj);
- try {
- while (true) {
- document.write(it.next() + "&lt;br&gt;\n");
- }
- } catch (err if err instanceof StopIteration) {
- document.write("End of record.&lt;br&gt;\n");
- }
-</pre>
-
-<p>In JavaScript 1.8, you can circumvent having to create a custom generator function by using a generator expression instead:</p>
-
-<pre class="brush: js"> let it = (i + 3 for (i in someObj));
- try {
- while (true) {
- document.write(it.next() + "&lt;br&gt;\n");
- }
- } catch (err if err instanceof StopIteration) {
- document.write("End of record.&lt;br&gt;\n");
- }
-</pre>
-
-<p>Generator expressions can also be passed in, as values, to a function. This is particularly noteworthy since generators aren't run until they are absolutely needed (unlike for typical array comprehension situations, where the arrays are constructed ahead of time). An example of the difference can be seen here:</p>
-
-<p>Using JavaScript 1.7 Array Comprehension</p>
-
-<pre class="brush: js"> handleResults([ i for ( i in obj ) if ( i &gt; 3 ) ]);
-
- function handleResults( results ) {
- for ( let i in results )
- // ...
- }
-</pre>
-
-<p>Using JavaScript 1.8 Generator Expressions</p>
-
-<pre class="brush: js"> handleResults( i for ( i in obj ) if ( i &gt; 3 ) );
-
- function handleResults( results ) {
- for ( let i in results )
- // ...
- }
-</pre>
-
-<p>The significant difference between the two examples being that by using the generator expressions, you would only have to loop over the 'obj' structure once, total, as opposed to once when comprehending the array, and again when iterating through it.</p>
-
-<h3 id="陣列更進一步的擴充" name="陣列更進一步的擴充">陣列更進一步的擴充</h3>
-
-<p>There are two new iterative <code><a href="/en/Core_JavaScript_1.5_Reference/Global_Objects/Array" title="en/Core_JavaScript_1.5_Reference/Global_Objects/Array">Array</a></code> methods included in JavaScript 1.8, specifically:</p>
-
-<ul>
- <li><code><a href="/En/Core_JavaScript_1.5_Reference/Global_Objects/Array/Reduce" title="en/Core_JavaScript_1.5_Reference/Objects/Array/reduce">reduce()</a></code> - runs a function on every item in the array and collects the results from previous calls.</li>
- <li><code><a href="/En/Core_JavaScript_1.5_Reference/Global_Objects/Array/ReduceRight" title="en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight">reduceRight()</a></code> - runs a function on every item in the array and collects the results from previous calls, but in reverse.</li>
-</ul>
-
-<h3 id="for..in_分割代入的變更" name="for..in_分割代入的變更">for..in 分割代入的變更</h3>
-
-<p>One change that occurred in the release of JavaScript 1.8 was a bug fix related to the key/value <a class="internal" href="/en/New_in_JavaScript_1.7" title="En/New in JavaScript 1.7">destructuring of arrays</a> introduced in JavaScript 1.7. Previously it was possible to destructure the keys/values of an array by using for ( var [key, value] in array ). However that made it impossible to destructure the values of an array - that were arrays. This has been resolved now. ({{ Bug(366941) }}).</p>
-
-<p>{{ languages( { "en": "en/New_in_JavaScript_1.8", "es": "es/Novedades_en_JavaScript_1.8", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.8", "ja": "ja/New_in_JavaScript_1.8", "pl": "pl/Nowo\u015bci_w_JavaScript_1.8", "pt": "pt/Novidades_no_Javascript_1.8", "ko": "ko/New_in_JavaScript_1.8" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/new_in_javascript/index.html b/files/zh-tw/web/javascript/new_in_javascript/index.html
deleted file mode 100644
index 0dd24e1d1d..0000000000
--- a/files/zh-tw/web/javascript/new_in_javascript/index.html
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: JavaScript 新鮮事
-slug: Web/JavaScript/New_in_JavaScript
-tags:
- - NeedsTranslation
- - TopicStub
-translation_of: Archive/Web/JavaScript/New_in_JavaScript
----
-<div>{{jsSidebar("New_in_JS")}}</div>
-
-<p>This chapter contains information about JavaScript's version history and implementation status for Mozilla/SpiderMonkey-based JavaScript applications, such as Firefox.</p>
-
-<h2 id="ECMAScript_versions">ECMAScript versions</h2>
-
-<dl>
- <dt><a href="/zh-TW/docs/Web/JavaScript/Language_Resources">Language resources</a></dt>
- <dd>Learn more about the ECMAScript standards on which the JavaScript language is based on.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5 support</a></dt>
- <dd>Implementation status for the current standard ECMA-262 Edition 5.1 in Mozilla-based engines and products.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 2015 support</a></dt>
- <dd>Implementation status for the draft ECMA-262 Edition 6 (ES2015 or ES6) in Mozilla-based engines and products.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_Next_support_in_Mozilla">ECMAScript Next support</a></dt>
- <dd>Implementation status for upcoming ECMA-262 features as per the yearly (ES2016/ES2017/ES2018/...) release schedule in Mozilla-based engines and products.</dd>
-</dl>
-
-<h2 id="JavaScript_release_notes">JavaScript release notes</h2>
-
-<dl>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/Firefox_JavaScript_changelog">Firefox JavaScript changelog</a></dt>
- <dd>See this changelog for JavaScript features implemented in Firefox 5 and later.</dd>
-</dl>
-
-<h2 id="JavaScript_versions">JavaScript versions</h2>
-
-<p><strong>Deprecated</strong> ({{deprecated_inline}}). The explicit versioning and opt-in of language features was Mozilla-specific and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867609">is in process of being removed</a>. Firefox 4 was the last version which referred to an JavaScript version (1.8.5). With new ECMA standards, JavaScript language features are now often mentioned with their initial definition in ECMA-262 Editions such as Edition 6 (ES2015/ES6).</p>
-
-<p>JavaScript was released as version 1.0 in March 1996 in Netscape Navigator 2.0 and Internet Explorer 2.0.</p>
-
-<dl>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.1">JavaScript 1.1</a></dt>
- <dd>Version shipped in Netscape Navigator 3.0. Released on August 19, 1996.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.2">JavaScript 1.2</a></dt>
- <dd>Version shipped in Netscape Navigator 4.0-4.05. Released on June 11, 1997.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.3">JavaScript 1.3</a></dt>
- <dd>Version shipped in Netscape Navigator 4.06-4.7x. Released on October 19, 1998.<br>
- Standardization work to be compliant with ECMA-262 1st and 2nd Edition.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.4">JavaScript 1.4</a></dt>
- <dd>Version shipped in Netscape's server side JavaScript. Released in 1999.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.5">JavaScript 1.5</a></dt>
- <dd>Version shipped in Netscape Navigator 6.0 and Firefox 1.0. Release on November 14, 2000.<br>
- Standardization work to be compliant with ECMA-262 3rd Edition.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a></dt>
- <dd>Version shipped in Firefox 1.5. Released in November 2005.<br>
- Includes ECMAScript for XML (E4X), new <code>Array</code> methods plus <code>String</code> and <code>Array</code> generics.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7</a></dt>
- <dd>Version shipped in Firefox 2. Released in October 2006.<br>
- Includes generators, iterators, array comprehensions, <code>let</code> expressions, and destructuring assignment.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.8">JavaScript 1.8</a></dt>
- <dd>Version shipped in Firefox 3. Released in June 2008.<br>
- Includes expression closures, generator expressions and <code>Array.reduce()</code></dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.8.1">JavaScript 1.8.1</a></dt>
- <dd>Version shipped in Firefox 3.5. Released on June 30, 2009.<br>
- Includes the TraceMonkey JIT and supports native JSON.</dd>
- <dt>JavaScript 1.8.2</dt>
- <dd>Version shipped in Firefox 3.6. Released June 22, 2009.<br>
- Includes only minor changes.</dd>
- <dt><a href="/zh-TW/docs/Web/JavaScript/New_in_JavaScript/1.8.5">JavaScript 1.8.5</a></dt>
- <dd>Version shipped in Firefox 4. Released July 27, 2010.<br>
- Includes many new features for ECMA-262 Edition 5 compliance.<br>
- This is the last JavaScript version.</dd>
-</dl>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/index.html
deleted file mode 100644
index aaf64ed784..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Java 向 JavaScript 的通訊
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/Java_向_JavaScript_的通訊
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<p>如果你想要在 Java 中使用 JavaScript 物件,你必須在你的 Java 原始碼中引入 <code>netscape.javascript</code> 包裝。這個包裝定義了下面的類別︰</p>
-<ul> <li><code><a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E5%8F%83%E8%80%83/LiveConnect/JSObject" title="zh tw/Core JavaScript 1.5 參考/LiveConnect/JSObject">netscape.javascript.JSObject</a></code> 可讓 Java 代碼存取 JavaScript 的方法和屬性。</li> <li><code><a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E5%8F%83%E8%80%83/LiveConnect/JSException" title="zh tw/Core JavaScript 1.5 參考/LiveConnect/JSException">netscape.javascript.JSException</a></code> 可讓 Java 代碼處理 JavaScript 的錯誤。</li>
-</ul>
-<p>詳見 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E5%8F%83%E8%80%83" title="zh tw/Core JavaScript 1.5 參考">Core JavaScript 參考</a> 以取得關於此類別的更多資訊。</p>
-<h3 id="LiveConnect_類別的位置" name="LiveConnect_類別的位置">LiveConnect 類別的位置</h3>
-<p>在舊版 Netscape 瀏覽器中,這些類別是連同瀏覽器一起散佈的。從 JavaScript 1.2 開始,這些類別是放在 .jar 檔案中散佈的;在稍早的 JavaScript 版本中,這些類別是放在 .zip 檔案中散佈的。例如,Windows NT 版本的 Netscape Navigator 4,這些類別是放在 Navigator 底下的 <code>Program\Java\Classes</code> 目錄裡的 <code>java40.jar</code> 檔案中散佈的。</p>
-<p>最近這些類別已改和昇陽的 Java Runtime 一同散佈;一開始是放在 Java Runtime 的散佈版本(JRE 1.3)底下的 "jre/lib" 目錄裡的 "jaws.jar" 檔案中,然後改放在同一目錄下的 "plugin.jar" 檔案中(JRE 1.4 以上)。</p>
-<h3 id="在_JDK_中使用_LiveConnect_類別" name="在_JDK_中使用_LiveConnect_類別">在 JDK 中使用 LiveConnect 類別</h3>
-<p>若要存取 LiveConnect 類別,有如下兩種方式可以指定 JDK 編譯器的 <code>CLASSPATH</code> 裡的 .jar 或 .zip 檔案位置︰</p>
-<ul> <li>建立 <code>CLASSPATH</code> 環境變數,並指明 .jar 或 .zip 檔案的路徑和名稱。</li> <li>當你編譯的時候,使用 <code>-classpath</code> 命令列參數指明 .jar 或 .zip 檔案的位置。</li>
-</ul>
-<p>要在 Windows NT 下指定環境變數,你可在控制台中雙擊系統圖示,並建立稱作 <code>CLASSPATH</code> 的使用者環境變數,其中的值類似下面︰</p>
-<pre class="eval">C:\Program Files\Java\jre1.4.1\lib\plugin.jar
-</pre>
-<p>詳見昇陽 JDK 文件,以取得有關 <code>CLASSPATH</code> 的更多資訊。</p>
-<p><strong>附註:</strong> 因為 Java 是強類型語言,而 JavaScript 是弱類型,當你使用 LiveConnect 的時候,JavaScript 執行時期引擎會為其他語言把參數值轉換成適當的資料類型。詳見 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/LiveConnect_%E6%A6%82%E8%A6%81/%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B%E7%9A%84%E8%BD%89%E6%8F%9B" title="zh tw/Core JavaScript 1.5 教學/LiveConnect 概要/資料類型的轉換">資料類型的轉換</a> 取得完整資訊。</p>
-<p>{{ PreviousNext("Core_JavaScript_1.5_教學:LiveConnect_概要:JavaScript_向_Java_的通訊", "Core_JavaScript_1.5_教學:LiveConnect_概要:Java_向_JavaScript_的通訊:LiveConnect_類別的使用") }}</p>
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Java_to_JavaScript_Communication", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Comunicaci\u00f3n_de_Java_con_JavaScript", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Java_to_JavaScript_Communication", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Komunikacja_mi\u0119dzy_Java_a_JavaScript" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/liveconnect_類別的使用/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/liveconnect_類別的使用/index.html
deleted file mode 100644
index e66427fab8..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/java_向_javascript_的通訊/liveconnect_類別的使用/index.html
+++ /dev/null
@@ -1,105 +0,0 @@
----
-title: LiveConnect 類別的使用
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/Java_向_JavaScript_的通訊/LiveConnect_類別的使用
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<h3 id="LiveConnect_類別的使用" name="LiveConnect_類別的使用">LiveConnect 類別的使用</h3>
-<p>所有在 Java 代碼中的 JavaScript 物件都是以 <code>netscape.javascript.JSObject</code> 的實體呈現的。當你在你的 Java 代碼內部呼叫方法時,你可以把 JavaScript 物件當作方法的其中一個參數來傳入。要做到這一點,你必須定義能夠對應於 <code>JSObject</code> 類型的方法的參數形式。</p>
-<p>除此之外,當你在 Java 代碼中使用 JavaScript 物件的任何時候,你就要把使用到 JavaScript 物件的呼叫放置於 <code>try...catch</code> 語法之中,並處理 <code>netscape.javascript.JSException</code> 類型的例外。如此一來,當執行 JavaScript 代碼並出現 <code>JSException</code> 類型的例外時,就可讓你的 Java 代碼處理這些錯誤。</p>
-<h4 id="使用_JSObject_存取_JavaScript" name="使用_JSObject_存取_JavaScript">使用 JSObject 存取 JavaScript</h4>
-<p>舉例來說,假定你正在使用稱為 JavaDog 的 Java 類別。如同下面的代碼所示,<code>JavaDog</code> 建構子可接受 JavaScript 物件 <code>jsDog</code>,這個物件被定義成和參數一樣的 <code>JSObject</code> 類型︰</p>
-<pre>import netscape.javascript.*;
-
-public class JavaDog
-{
- public String dogBreed;
- public String dogColor;
- public String dogSex;
-
- // define the class constructor
- public JavaDog(JSObject jsDog)
- {
- // use try...catch to handle JSExceptions here
- this.dogBreed = (String)jsDog.getMember("breed");
- this.dogColor = (String)jsDog.getMember("color");
- this.dogSex = (String)jsDog.getMember("sex");
- }
-}
-</pre>
-<p>注意 <code>JSObject</code> 的 <code>getMember</code> 方法是用來存取 JavaScript 物件的屬性。這個例子中使用 <code>getMember</code> 把 JavaScript 的 <code>jsDog.breed</code> 屬性值代給 Java 的資料成員 <code>JavaDog.dogBreed</code>。</p>
-<p><strong>附註:</strong> 更接近實際使用的例子會把 <code>getMember</code> 的呼叫放置在 <code>try...catch</code> 語法的內部,以處理 <code>JSException</code> 類型的錯誤。詳見 在 Java 中處理 JavaScript 例外 以取得更多資訊。</p>
-<p>為了獲得對 <code>getMember</code> 如何運作的良好感覺,仔細閱讀自訂 JavaScript 的物件 <code>Dog</code> 的定義︰</p>
-<pre>function Dog(breed,color,sex) {
- this.breed = breed
- this.color = color
- this.sex = sex
-}
-</pre>
-<p>你可以如下呼叫 gabby 來建立 JavaScript 的 Dog 實體︰</p>
-<pre>gabby = new Dog("lab","chocolate","female")
-</pre>
-<p>如果你對 <code>gabby.color</code> 求值,你會看到他的值是 "chocolate"。現在假定你在你的 JavaScript 代碼中把 <code>gabby</code> 物件傳給建構子並建立 <code>JavaDog</code> 的實體如下︰</p>
-<pre>javaDog = new Packages.JavaDog(gabby)
-</pre>
-<p>如果你對 <code>javaDog.dogColor</code> 求值,你會看到他的值也是 "chocolate",因為在 Java 的建構子中的 <code>getMember</code> 方法會把 <code>gabby.color</code> 的值代給 <code>dogColor</code>。</p><h4 id="在_Java_中處理_JavaScript_例外" name="在_Java_中處理_JavaScript_例外">在 Java 中處理 JavaScript 例外</h4>
-<p>當在 Java 裡被呼叫的 JavaScript 代碼在執行時期失敗的時候,他就會拋出例外。如果你有意在 Java 裡呼叫 JavaScript 代碼,你可以在 <code>try...catch</code> 區塊裡捕捉例外。在你的 Java 代碼中可以取得形如 <code>netscape.javascript.JSException</code> 實體的 JavaScript 例外。</p>
-<p><code>JSException</code> 即包裝了由 JavaScript 拋出的所有例外類型的 Java 包裝器,類似於用在 JavaScript 物件的包裝器 <code>JSObject</code> 實體的運作方式。當你在 Java 代碼中對 JavaScript 求值時可以使用 <code>JSException</code>。</p>
-<p>當你在 Java 中對 JavaScript 代碼求值的時候,下列情況便會導致執行時期錯誤︰</p>
-<ul> <li>JavaScript 代碼並未被求值,原因可能出在 JavaScript 編譯上的錯誤或在執行時期所發生的某些其他錯誤。JavaScript 解譯器產生的錯誤訊息會被轉換成 <code>JSException</code> 的實體。</li> <li>Java 成功的對 JavaScript 代碼求值,但 JavaScript 代碼執行的是未經處理的 throw 語法。JavaScript 拋出的例外是被包裝成 JSException 的實體。可以使用 JSException 的 getWrappedException 方法在 Java 中解開例外。</li>
-</ul>
-<p>舉例來說,假設 Java 物件 <code>eTest</code> 會對你所傳入的字串 <code>jsCode</code> 求值。你可以藉由例外處理器的實行,來回應求值時所產生的任何一種執行時期錯誤的類型︰</p>
-<pre>import netscape.javascript.JSObject;
-import netscape.javascript.JSException;
-
-public class eTest {
- public static Object doit(JSObject obj, String jsCode) {
- try {
- obj.eval(jsCode);
- } catch (JSException e) {
- if (e.getWrappedException()==null)
- return e;
- return e.getWrappedException();
- }
- return null;
- }
-}
-</pre>
-<p>在本範例中,在 try 區塊裡的代碼試圖對你所傳入的字串 <code>jsCode</code> 求值。就讓我們假設你傳入了字串 "<code>myFunction()</code>" 當作 <code>jsCode</code> 的值。如果 myFunction 並未定義成 JavaScript 的函數,JavaScript 解譯器無法對 jsCode 求值。解譯器便會產生錯誤訊息,Java 處理器捕捉到錯誤訊息,然後 <code>doit</code> 方法會返回 <code>netscape.javascript.JSException</code> 的實體。</p>
-<p>然而,假設 <code>myFunction</code> 已在 JavaScript 中定義如下︰</p>
-<pre>function myFunction() {
- try {
- if (theCondition == true) {
- return "Everything's ok";
- } else {
- throw "JavaScript error occurred" ;
- }
- } catch (e) {
- if (canHandle == true) {
- handleIt();
- } else {
- throw e;
- }
- }
-}
-</pre>
-<p>如果 <code>theCondition</code> 為 false,函數就會拋出例外。例外會在 JavaScript 代碼中被捕捉,如果 <code>canHandle</code> 為 true,JavaScript 就會處理例外。如果 <code>canHandle</code> 為 false,就會再度拋出例外,Java 處理器捕捉到例外,然後 doit 方法返回 Java 字串︰</p>
-<pre>JavaScript error occurred
-</pre>
-<p>詳見 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/%E4%BE%8B%E5%A4%96%E8%99%95%E7%90%86%E8%AA%9E%E6%B3%95" title="zh tw/Core JavaScript 1.5 教學/例外處理語法">例外處理語法</a> 以取得有關 JavaScript 例外的完整資訊。</p><h4 id="向後相容性" name="向後相容性">向後相容性</h4>
-<p>在 JavaScript 1.3 及早期版本中,<code>JSException</code> 類別具有三個公開的建構子可選擇性的接受字串參數,這個參數可指明詳細的訊息或其他有關例外的資訊。<code>getWrappedException</code> 無法使用。</p>
-<p>使用 <code>try...catch</code> 語法如下,以在 JavaScript 1.3 及其早期版本中處理 LiveConnect 例外︰</p>
-<pre>try {
- global.eval("foo.bar = 999;");
-} catch (Exception e) {
- if (e instanceof JSException) {
- jsCodeFailed()";
- } else {
- otherCodeFailed();
- }
-}
-</pre>
-<p>在本例子中,如果 foo 尚未定義,<code>eval</code> 語句就會失敗。如果 <code>eval</code> 語句在 <code>try</code> 區塊中拋出 <code>JSException</code>,<code>catch</code> 區塊就會執行 <code>jsCodeFailed</code> 方法;如果 <code>try</code> 區塊拋出其他的錯誤,就會執行 <code>otherCodeFailed</code> 方法。</p>
-<p>{{ PreviousNext("Core_JavaScript_1.5_教學:LiveConnect_概要:Java_向_JavaScript_的通訊", "Core_JavaScript_1.5_教學:LiveConnect_概要:資料類型的轉換") }}</p>
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Java_to_JavaScript_Communication/Using_the_LiveConnect_Classes", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Comunicaci\u00f3n_de_Java_con_JavaScript/Utilizar_las_clases_de_LiveConnect", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Java_to_JavaScript_Communication/Using_the_LiveConnect_Classes", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Komunikacja_mi\u0119dzy_Java_a_JavaScript/U\u017cywanie_klas_LiveConnect" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/javascript_向_java_的通訊/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/javascript_向_java_的通訊/index.html
deleted file mode 100644
index df24e60251..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/javascript_向_java_的通訊/index.html
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: JavaScript 向 Java 的通訊
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/JavaScript_向_Java_的通訊
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<h3 id="JavaScript_向_Java_的通訊" name="JavaScript_向_Java_的通訊">JavaScript 向 Java 的通訊</h3>
-<p>當你參考 Java 的包裝 (package) 或類別的時候,或者運用 Java 物件或陣列的時候,你就使用了獨特的 LiveConnect 物件。所有 JavaScript 向 Java 的存取動作都會使用到這個物件,有關這些的摘要已列在下表中。</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>物件</th> <th>說明</th> </tr> <tr> <td>JavaArray</td> <td>已包裝的 Java 陣列,會在 JavaScript 中的代碼存取。</td> </tr> <tr> <td>JavaClass</td> <td>JavaScript 對 Java 類別的參考。</td> </tr> <tr> <td>JavaObject</td> <td>已包裝的 Java 物件,會在 JavaScript 中的代碼存取。</td> </tr> <tr> <td>JavaPackage</td> <td>JavaScript 對 Java 包裝(package)的參考。</td> </tr> </tbody>
-</table>
-<p><small><strong>表 9.1 LiveConnect 物件</strong></small></p>
-<p><br>
-<strong>附註:</strong> 因為 Java 是強類型的語言,而 JavaScript 是弱類型,當你使用 LiveConnect 的時候,JavaScript 執行時期引撉會針對其他的語言把參數值轉換成適當的資料類型。參閱 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/%E5%80%BC#%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B%E7%9A%84%E8%BD%89%E6%8F%9B" title="zh tw/Core JavaScript 1.5 教學/值#資料類型的轉換">資料類型的轉換</a> 以取得完整資訊。</p>
-<p>某方面來看,LiveConnect 物件是一種隱形的存在,因為你會以相當直觀的方法與 Java 互動。例如,你可以使用 new 運算子和 Java 的建構子建立 Java 的 String 物件,並把這個物件代入給 JavaScript 的變數 <code>myString</code>,如下︰</p>
-<pre>var myString = new java.lang.String("Hello world")
-</pre>
-<p>在這個例子中,變數 <code>myString</code> 就是 <code>JavaObject</code>,因為他握有 Java 物件 <code>String</code> 的實體。就如同 <code>JavaObject</code>,<code>myString</code> 也可以存取 <code>java.lang.String</code> 公開的實體方法,以及他的親類別 <code>java.lang.Object</code>。這些 Java 方法就在 JavaScript 中作為 <code>JavaObject</code> 的方法來使用,你可以按如下方式呼叫︰</p>
-<pre>myString.length() // 返回 11
-</pre>
-<p>可在 JavaClass 物件上直接呼叫靜態成員。</p>
-<pre>alert(java.lang.Integer.MAX_VALUE); // 警報 2147483647
-</pre>
-<h4 id="Packages_物件" name="Packages_物件">Packages 物件</h4>
-<p>如果有某一個 Java 類別並不屬於 <code>java</code>、<code>sun</code>、<code>netscape</code> 包裝,你就使用到 <code>Packages</code> 來存取那個類別。例如,假設 Redwood 公司使用了稱為 <code>redwood</code> 的 Java 包裝用來容納各種該公司所實裝的 Java 類別。若要建立 <code>redwood</code> 裡的 <code>HelloWorld</code> 類別的實體,你可如下存取類別的建構子︰</p>
-<pre>var red = new Packages.redwood.HelloWorld()
-</pre>
-<p>你也可以存取位在預設包裝中的類別(也就是無須明確表示包裝名稱的類別)。例如,如果 HelloWorld 類別正好位在 <code>CLASSPATH</code> 裡而不在包裝裡,你可如下來做存取︰</p>
-<pre>var red = new Packages.HelloWorld()
-</pre>
-<p>LiveConnect 的 <code>java</code>、<code>sun</code>、<code>netscape</code> 物件針對常用的 Java 包裝提供簡寫。例如,你可如下使用︰</p>
-<pre>var myString = new java.lang.String("Hello world")
-</pre>
-<p>以取代較長的形式︰</p>
-<pre>var myString = new Packages.java.lang.String("Hello world")
-</pre><h4 id="Java_陣列的運用" name="Java_陣列的運用">Java 陣列的運用</h4>
-<p>當你在 JavaScript 中使用任意的 Java 方法建立陣列並加以參照的時候,你已經使用到 <code>JavaArray</code>。例如,下面的代碼以 10 個類型為 int 的元素建立了 <code>JavaArray x</code>︰</p>
-<pre>x = java.lang.reflect.Array.newInstance(java.lang.Integer, 10)
-</pre>
-<p>就如同 JavaScript <code>Array</code> 物件,<code>JavaArray</code> 也有可返回元素數目的 length 屬性。有別於 <code>Array.length</code>,<code>JavaArray.length</code> 是唯讀的屬性,因為 Java 陣列中的元素數目在建立的時候就已經固定住了。</p><h4 id="包裝和類別的參考" name="包裝和類別的參考">包裝和類別的參考</h4>
-<p>在 JavaScript 中建立 JavaPackage 和 <code>JavaClass</code> 物件,就能簡單的參照 Java 包裝和類別。在稍早的 Redwood 公司的例子中,參考 Packages.redwood 的就是 JavaPackage 物件。同樣的,參考諸如 <code>java.lang.String</code> 的也是 <code>JavaClass</code> 物件。</p>
-<p>大多數時候,你不必為 <code>JavaPackage</code> 和 <code>JavaClass</code> 物件而擔心—你只需使用 Java 包裝和類別來做事,LiveConnect 會默默的建立這些物件。在此有一個 LiveConnect 載入類別時會失敗的例子,而且需要你如下手工載入︰</p>
-<pre>var Widgetry = java.lang.Thread.currentThread().getContextClassLoader().loadClass("org.mywidgets.Widgetry");
-</pre>
-<p>在 JavaScript 1.3 及早期版本中,當你把 <code>JavaClass</code> 物件傳給 Java 方法作為參數的時候,這些物件並不會自動轉換成 <code>java.lang.Class</code> 的實體—你必須建立 <code>java.lang.Class</code> 實體的包裝器 (wrapper)。在下面的範例中,<code>forName</code> 方法建立了包裝器物件 <code>theClass</code>,然後把他傳給 <code>newInstance</code> 方法來建立陣列。</p>
-<pre>// JavaScript 1.3
-theClass = java.lang.Class.forName("java.lang.String")
-theArray = java.lang.reflect.Array.newInstance(theClass, 5)
-</pre>
-<p>在 JavaScript 1.4 以後的版本中,你可以直接把 <code>JavaClass</code> 物件傳送給方法,就如同下面的例子︰</p>
-<pre>// JavaScript 1.4
-theArray = java.lang.reflect.Array.newInstance(java.lang.String, 5)
-</pre><h4 id="char_類型的參數" name="char_類型的參數">char 類型的參數</h4>
-<p>在 JavaScript 1.4 和以後的版本中,你可以把單一字元的字串傳給所需參數的類型為 <code>char</code> 的 Java 方法。例如,你可以把字串 "H" 傳給 <code>Character</code> 建構子如下︰</p>
-<pre>c = new java.lang.Character("H")
-</pre>
-<p>在 JavaScript 1.3 和早期版本中,你就必須給這些方法傳入與字元的 Unicode 值相對應的整數。例如,下面的代碼會把值 "H" 代入給變數 <code>c</code>︰</p>
-<pre>c = new java.lang.Character(72)
-</pre><h4 id="在_JavaScript_中處理_Java_的例外" name="在_JavaScript_中處理_Java_的例外">在 JavaScript 中處理 Java 的例外</h4>
-<p>當 Java 代碼在執行時期失敗的時候,他就會丟出例外。如果你的 JavaScript 代碼存取 Java 的資料成員或方法並且失敗的時候,Java 的例外會被傳送到 JavaScript 以供你處理。從 JavaScript 1.4 開始,你可以在 <code>try...catch</code> 區塊裡捕捉這些例外。(雖然這個機能連同其他部分已在 Gecko 1.9 中失效 (詳見 <strong><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=391642">bug 391642</a></strong>),不再於 Mozilla 內部維護 Mozilla 特有的 LiveConnect 代碼,但已在 Java 6 更新的 11 和 12 的建置版本中,在 Mozilla 實裝的通用 (跨瀏覽器) <a class="internal" href="/zh_tw/%E6%8F%92%E4%BB%B6" title="zh tw/插件">NPAPI</a> 插件的代碼中提供對 Java 的支援,並修復此問題。)</p>
-<p>例如,假設你使用 Java 的 <code>forName</code> 方法把 Java 類別的名稱代給稱為 <code>theClass</code> 的變數。如果你傳給他的值並不是 Java 類別的名稱,<code>forName</code> 方法就會丟出例外。把 <code>forName</code> 的代入語句放在 try 區塊以處理例外,如下︰</p>
-<pre>function getClass(javaClassName) {
- try {
- var theClass = java.lang.Class.forName(javaClassName);
- } catch (e) {
- return ("The Java exception is " + e);
- }
- return theClass
-}
-</pre>
-<p>在這個例子中,如果 <code>javaClassName</code> 可求出合理的類別名稱,例如 "java.lang.String",代入就會成功。如果 <code>javaClassName</code> 求出無效的類別名稱,例如 "String",<code>getClass</code> 函數會捕捉例外,並返回類似下面的東西︰</p>
-<pre>The Java exception is java.lang.ClassNotFoundException: String
-</pre>
-<p>若要針對例外的類型做特別的處理,可以使用 <code>instanceof</code> 運算子︰</p>
-<pre>try {
- // ...
-} catch (e) {
- if (e instanceof java.io.FileNotFound) {
- // handling for FileNotFound
- } else {
- throw e;
- }
-}
-</pre>
-<p>參閱 <a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/%E4%BE%8B%E5%A4%96%E8%99%95%E7%90%86%E8%AA%9E%E6%B3%95" title="zh tw/Core JavaScript 1.5 教學/例外處理語法">例外處理語法</a> 以取得更多有關於 JavaScript 例外的資訊。</p>
-<p>{{ PreviousNext("Core_JavaScript_1.5_教學:LiveConnect_概要:包裝器的運用", "Core_JavaScript_1.5_教學:LiveConnect_概要:Java_向_JavaScript_的通訊") }}</p>
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/JavaScript_to_Java_Communication", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Comunicaci\u00f3n_de_JavaScript_con_Java", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/JavaScript_to_Java_Communication", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Komunikacja_mi\u0119dzy_JavaScript_a_Java" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/包裝器的運用/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/包裝器的運用/index.html
deleted file mode 100644
index 91b98b1697..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/包裝器的運用/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: 包裝器的運用
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/包裝器的運用
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<h3 id="包裝器的運用" name="包裝器的運用">包裝器的運用</h3>
-<p>在 JavaScript 中,<em>包裝器</em> (<em>wrapper</em>) 是一種目的語言資料類型的物件,可包裝來源語言的物件。當在 JavaScript 中設計程式的時候,你可以使用包裝器物件存取 Java 物件的方法和欄位;呼叫或存取包裝器裡的方法或屬性,用以在 Java 物件上產生呼叫。對 Java 而言,JavaScript 物件是被包裝在類別為 <code>netscape.javascript.JSObject</code> 的實體之中,並傳送給 Java。</p>
-<p>當 JavaScript 物件傳送給 Java 的時候,執行時期引撉會建立類型為 <code>JSObject</code> 的 Java 包裝器;當 <code>JSObject</code> 從 Java 傳送到 JavaScript 的時候,執行時期引撉會解開包裝,還原為原本的 JavaScript 物件類型。<code>JSObject</code> 類別提供了可呼叫 JavaScript 方法和檢查 JavaScript 屬性的介面。</p>
-<p>{{ PreviousNext("Core_JavaScript_1.5_教學:LiveConnect_概要", "Core_JavaScript_1.5_教學:LiveConnect_概要:JavaScript_向_Java_的通訊") }}</p>
-
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Working_with_Wrappers", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Trabajando_con_envoltorios", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Working_with_Wrappers", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Praca_z_klas\u0105_opakowuj\u0105c\u0105" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/index.html
deleted file mode 100644
index b541dc1aaf..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: 資料類型的轉換
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/資料類型的轉換
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<h3 id="資料類型的轉換" name="資料類型的轉換">資料類型的轉換</h3>
-<p>因為 Java 是一種強類型的語言,而 JavaScript 是弱類型,JavaScript 執行時期引擎會在使用 LiveConnect 的時候,為其他的語言把參數值轉換成適當的資料類型。這些轉換過程會在以下的章節中詳述︰</p>
-<ul> <li><a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/LiveConnect_%E6%A6%82%E8%A6%81/%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B%E7%9A%84%E8%BD%89%E6%8F%9B/%E5%BE%9E_JavaScript_%E5%88%B0_Java_%E7%9A%84%E8%BD%89%E6%8F%9B" title="zh tw/Core JavaScript 1.5 教學/LiveConnect 概要/資料類型的轉換/從 JavaScript 到 Java 的轉換">從 JavaScript 到 Java 的轉換</a></li> <li><a class="internal" href="/zh_tw/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/LiveConnect_%E6%A6%82%E8%A6%81/%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B%E7%9A%84%E8%BD%89%E6%8F%9B/%E5%BE%9E_Java_%E5%88%B0_JavaScript_%E7%9A%84%E8%BD%89%E6%8F%9B" title="zh tw/Core JavaScript 1.5 教學/LiveConnect 概要/資料類型的轉換/從 Java 到 JavaScript 的轉換">從 Java 到 JavaScript 的轉換</a></li>
-</ul>
-<p>{{ PreviousNext("Core_JavaScript_1.5_教學:LiveConnect_概要:Java_向_JavaScript_的通訊:LiveConnect_類別的使用", "Core_JavaScript_1.5_教學:LiveConnect_概要:資料類型的轉換:從_JavaScript_到_Java_的轉換") }}</p>
-<p> </p>
-
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Data_Type_Conversions", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Conversiones_de_tipos_de_datos", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Data_Type_Conversions", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Konwersja_typu_danych" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_java_到_javascript_的轉換/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_java_到_javascript_的轉換/index.html
deleted file mode 100644
index 258cd81717..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_java_到_javascript_的轉換/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: 從 Java 到 JavaScript 的轉換
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/資料類型的轉換/從_Java_到_JavaScript_的轉換
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<h3 id="從_Java_到_JavaScript_的轉換" name="從_Java_到_JavaScript_的轉換">從 Java 到 JavaScript 的轉換</h3>
-<p>從 Java 傳給 JavaScript 的值將如下做轉換︰</p>
-<ul> <li>Java 的 byte、char、short、int、long、float、double 會被轉換成 JavaScript 數字。</li> <li>Java 的 boolean 會被轉換成 JavaScript 真假值。</li> <li>類別 netscape.javascript.JSObject 的物件會被轉換成原始的 JavaScript 物件。</li> <li>Java 的陣列會被轉換成 JavaScript 的模擬版 Array 物件;這個物件的行為就像 JavaScript 的 Array 物件︰你可以使用 arrayName{{ mediawiki.external('index') }}(index 部分是整數)語法來存取陣列,以及使用 arrayName.length 得知陣列的長度。</li> <li>所有其他類別的 Java 物件會被轉換成 JavaScript 的包裝器,包裝器可用來存取 Java 物件的方法或欄位︰ <ul> <li>呼叫在原始物件上的 toString 方法把包裝器轉換成字串。</li> <li>呼叫 doubleValue 方法轉換成數字,如果不可能的話就會失敗。</li> <li>在 JavaScript 1.3 及其後版本中轉換成真假值,如果物件為 null,就會返回 false,其餘為 true。</li> <li>在 JavaScript 1.2 及早期版本中呼叫 booleanValue 方法轉換成真假值,如果不可能的話就會失敗。</li> </ul> </li>
-</ul>
-<p>注意,java.lang.Double 或 java.lang.Integer 的實體會被轉換成 JavaScript 物件,而非 JavaScript 數字。同樣的,java.lang.String 實體也會被轉換成 JavaScript 物件,而非 JavaScript 字串。</p>
-<p>Java 的 String 物件也可對應於 JavaScript 的包裝器。如果你呼叫需要 JavaScript 字串的 JavaScript 方法,並且把包裝器傳給這個方法,你會碰到錯誤。正確方法是,藉由附加空的字串把包裝器轉換成 JavaScript 字串,如下所示︰</p>
-<pre>var JavaString = JavaObj.methodThatReturnsAString();
-var JavaScriptString = JavaString + "";
-</pre>
-<p>{{ Previous("Core_JavaScript_1.5_教學:LiveConnect_概要:資料類型的轉換:從_JavaScript_到_Java_的轉換") }}</p>
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Data_Type_Conversions/Java_to_JavaScript_Conversions", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Conversiones_de_tipos_de_datos/Conversiones_de_Java_a_JavaScript", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Data_Type_Conversions/Java_to_JavaScript_Conversions", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Konwersja_typu_danych/Konwersja_Java_do_JavaScript" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_javascript_到_java_的轉換/index.html b/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_javascript_到_java_的轉換/index.html
deleted file mode 100644
index a928ec1a0d..0000000000
--- a/files/zh-tw/web/javascript/obsolete_pages/obsolete_pages/obsolete_pages/liveconnect_概要/資料類型的轉換/從_javascript_到_java_的轉換/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: 從 JavaScript 到 Java 的轉換
-slug: >-
- Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/LiveConnect_概要/資料類型的轉換/從_JavaScript_到_Java_的轉換
-translation_of: Archive/Web/LiveConnect/LiveConnect_Overview
----
-<p> </p>
-<h3 id="從_JavaScript_到_Java_的轉換" name="從_JavaScript_到_Java_的轉換">從 JavaScript 到 Java 的轉換</h3>
-<p>當你從 JavaScript 呼叫 Java 的方法並傳入參數的時候,你所傳入的參數的資料類型會按下列規則而被轉換︰</p>
-<ul> <li>{{ Anch("數值") }}</li> <li>{{ Anch("真假值") }}</li> <li>{{ Anch("字串值") }}</li> <li>{{ Anch("Undefined 值") }}</li> <li>{{ Anch("Null 值") }}</li> <li>{{ Anch("JavaArray 以及 JavaObject 物件") }}</li> <li>{{ Anch("JavaClass 物件") }}</li> <li>{{ Anch("其他的 JavaScript 物件") }}</li>
-</ul>
-<p><code>netscape.javascript.JSObject</code> 的方法的返回值永遠會被轉換成 <code>java.lang.Object</code> 的實體。這些返回值的轉換規則也會在這些小節中描述。</p>
-<p>舉例來說,如果 <code>JSObject.eval</code> 返回了 JavaScript 數值,你可以在 {{ Anch("數值") }} 中找到數字轉成 <code>java.lang.Object</code> 實體的規則。</p>
-<h4 id="數值" name="數值">數值</h4>
-<p>當你給 Java 方法傳入 JavaScript 數字類型當作參數的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>double</td> <td> <ul> <li>值會被分毫不差的傳給 Java,而不經過捨入、或精度、符號的損失。</li> <li>NaN 會被轉換成 NaN。</li> </ul> </td> </tr> <tr> <td>java.lang.Double<br> java.lang.Object</td> <td>java.lang.Double 的新實體會被建立,值會被分毫不差的傳給 Java,而不經過捨入、或精度、符號的損失。</td> </tr> <tr> <td>float</td> <td> <ul> <li>值會被捨入成浮點精度。</li> <li>過大或過小的值會被表示為捨入過的正無限大或負無限大。</li> <li>NaN 會被轉換成 NaN。</li> </ul> </td> </tr> <tr> <td>byte<br> char<br> int<br> long<br> short</td> <td> <ul> <li>值會以捨入至負無限大的方向進行捨入。</li> <li>過大或過小的值將導致執行時期錯誤。</li> <li>無法轉換 NaN 並導致執行時期錯誤。</li> </ul> </td> </tr> <tr> <td>java.lang.String</td> <td>值會被轉換成字串。例如︰ <ul> <li>237 變成 "237"</li> </ul> </td> </tr> <tr> <td>boolean</td> <td> <ul> <li>0 和 NaN 值會被轉換成 false。</li> <li>其他的值會被轉換成 true。</li> </ul> </td> </tr> </tbody>
-</table>
-<p>當 JavaScript 的數字被當作參數傳給 Java 的方法時,Java 的方法預期的是 <code>java.lang.String</code> 的實體,數字會被轉換成字串。使用 <code>equals()</code> 方法來和其他的字串值比較轉換的結果。</p><h4 id="真假值" name="真假值">真假值</h4>
-<p>當你把 JavaScript 的布林類型當作參數傳給 Java 方法的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>boolean</td> <td>所有的值全都直接被轉換成 Java 的等價物。</td> </tr> <tr> <td>java.lang.Boolean<br> java.lang.Object</td> <td><code>java.lang.Boolean</code> 的新實體會被建立。每一個參數都會建立一個新實體,而非一個實體持有同一原始值。</td> </tr> <tr> <td>java.lang.String</td> <td>值會被轉換成字串。例如︰ <ul> <li>true 變成 "true"</li> <li>false 變成 "false"</li> </ul> </td> </tr> <tr> <td>byte<br> char<br> double<br> float<br> int<br> long<br> short</td> <td> <ul> <li>true 變成 1</li> <li>false 變成 0</li> </ul> </td> </tr> </tbody>
-</table>
-<p>當 JavaScript 的真假值被當作參數傳給 Java 方法的時候,Java 方法預期的是 <code>java.lang.String</code> 的實體,真假值會被轉換成字串。使用 == 運算子與其他的字串值和轉換的結果做比較。</p><h4 id="字串值" name="字串值">字串值</h4>
-<p>當你把 JavaScript 的字串類型當作參數傳給 Java 方法的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>java.lang.String<br> java.lang.Object</td> <td> <p>JavaScript 1.4︰</p> <ul> <li>JavaScript 字串會被轉換成以 Unicode 值表示的 java.lang.String 實體。</li> </ul> <p>JavaScript 1.3 及早期版本︰</p> <ul> <li>JavaScript 字串會被轉換成以 ASCII 值表示的 java.lang.String 實體。</li> </ul> </td> </tr> <tr> <td>byte<br> double<br> float<br> int<br> long<br> short</td> <td>所有的值都會被轉換成 ECMA-262 所述的數字。JavaScript 字串值會根據 ECMA-262 所述的規則轉換成數字。</td> </tr> <tr> <td>char</td> <td> <p>JavaScript 1.4︰</p> <ul> <li>單一字元的字串會被轉換成 Unicode 字元。</li> <li>其餘的值會被轉換成數字。</li> </ul> <p>JavaScript 1.3 及早期版本︰</p> <ul> <li>所有的值都會被轉換成數字。</li> </ul> </td> </tr> <tr> <td>boolean</td> <td> <ul> <li>空字串會變成 false。</li> <li>其餘的值會變成 true。</li> </ul> </td> </tr> </tbody>
-</table>
-<h4 id="Undefined_值" name="Undefined_值">Undefined 值</h4>
-<p>當你把 JavaScript 的 undefined 類型當作參數傳給 Java 方法的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>lava.lang.String<br> java.lang.Object</td> <td>值會被轉換成 java.lang.String 實體,且其值為字串 "undefined"。</td> </tr> <tr> <td>boolean</td> <td>值會變成 false。</td> </tr> <tr> <td>double<br> float</td> <td>值會變成 NaN。</td> </tr> <tr> <td>byte<br> char<br> int<br> long<br> short</td> <td>值會變成 0。</td> </tr> </tbody>
-</table>
-<p>undefined 的值轉換只能出現在 JavaScript 1.3 及其後版本。JavaScript 的早期版本並不支援 undefined 值。</p>
-<p>當 JavaScript 的 undefined 被當作參數傳給 Java 的方法時,Java 的方法預期的是 java.lang.String 的實體,undefined 值會被轉換成字串。使用 == 運算子來和其他的字串值比較轉換的結果。</p><h4 id="Null_值" name="Null_值">Null 值</h4>
-<p>當你把 JavaScript 的 null 值當作參數傳給 Java 方法的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>所有的類別<br> 所有的界面類型</td> <td>值會變成 null。</td> </tr> <tr> <td>byte<br> char<br> double<br> float<br> int<br> long<br> short</td> <td>值會變成 0。</td> </tr> <tr> <td>boolean</td> <td>值會變成 false。</td> </tr> </tbody>
-</table>
-<h4 id="JavaArray_以及_JavaObject_物件" name="JavaArray_以及_JavaObject_物件">JavaArray 以及 JavaObject 物件</h4>
-<p>在大多數情況下,當你把 JavaScript 的 JavaArray 或 JavaObject 當作參數傳給 Java 方法的時候,Java 只是簡單的把物件解開;在少數情況下,物件會根據描述在下表中的規則,強制轉換成其他的資料類型。</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>任何與解開後的物件具代入相容性的界面或類別。</td> <td>直接解開物件。</td> </tr> <tr> <td>java.lang.String</td> <td>直接解開物件,解開後的 Java 物件的 toString 方法會被呼叫,並返回 java.lang.String 的新實體。</td> </tr> <tr> <td>byte<br> char<br> double<br> float<br> int<br> long<br> short</td> <td> <p>直接解開物件,並發生下列其中一種情況︰</p> <ul> <li>如果解開後的 Java 物件具有 doubleValue 方法,JavaArray 或 JavaObject 就會被轉換成這個方法的返回值。</li> <li>如果解開後的 Java 物件沒有 doubleValue 方法,就會發生錯誤。</li> </ul> </td> </tr> <tr> <td>boolean</td> <td> <p>在 JavaScript 1.3 及其後版本中,會直接解開物件並發生下列其中一種情況︰</p> <ul> <li>如果物件是 null,就會把他轉換成 false。</li> <li>如果物件具有任何其他的值,就會把他轉換成 true。</li> </ul> <p>在 JavaScript 1.2 及早期版本中,會直接解開物件並發生下列其中一種情況︰</p> <ul> <li>如果解開後的物件具有 booleanValue 方法,來源物件就會被轉換成這個方法的返回值。</li> <li>如果物件沒有 booleanValue 方法,轉換就會失敗。</li> </ul> </td> </tr> </tbody>
-</table>
-<p>如果解開後的物件是 Java 參數類型的實體,界面或類別就與這個解開後的物件具有代入相容性。也就是說,下面的語句必須返回 true︰</p>
-<pre>unwrappedObject instanceof parameterType
-</pre>
-<h4 id="JavaClass_物件" name="JavaClass_物件">JavaClass 物件</h4>
-<p>當你把 JavaScript 的 JavaClass 物件當作參數傳給 Java 方法的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>java.lang.Class</td> <td>直接解開物件。</td> </tr> <tr> <td>netscape.javascript.JSObject<br> java.lang.Object</td> <td>JavaClass 物件會被包裝在新的 netscape.javascript.JSObject 實體。</td> </tr> <tr> <td>java.lang.String</td> <td>直接解開物件,解開後的 Java 物件的 toString 方法會被呼叫,並返回新的 java.lang.String 實體。</td> </tr> <tr> <td>boolean</td> <td> <p>在 JavaScript 1.3 及其後版本中,會直接解開物件並發生下列其中一種情況︰</p> <ul> <li>如果物件是 null,就會把他轉換成 false。</li> <li>如果物件具有任何其他的值,就會把他轉換成 true。</li> </ul> <p>在 JavaScript 1.2 及早期版本中,會直接解開物件並發生下列其中一種情況︰</p> <ul> <li>如果解開後的物件具有 booleanValue 方法,來源物件就會被轉換成這個方法的返回值。</li> <li>如果物件沒有 booleanValue 方法,轉換就會失敗。</li> </ul> </td> </tr> </tbody>
-</table><h4 id="其他的_JavaScript_物件" name="其他的_JavaScript_物件">其他的 JavaScript 物件</h4>
-<p>當你把 JavaScript 的任何其他的物件當作參數傳給 Java 方法的時候,Java 會按照描述在下表中的對應規則做轉換︰</p>
-<table class="fullwidth-table"> <tbody> <tr> <th>Java 參數類型</th> <th>轉換規則</th> </tr> <tr> <td>netscape.javascript.JSObject<br> java.lang.Object</td> <td>物件會被包裝在新的 netscape.javascript.JSObject 實體。</td> </tr> <tr> <td>java.lang.String</td> <td>直接解開物件,解開後的 Java 物件的 toString 方法會被呼叫,並返回新的 java.lang.String 實體。</td> </tr> <tr> <td>byte<br> <p>char<br> double<br> float<br> int<br> long</p> short</td> <td>物件會使用在 ECMA-262 中所述的 ToPrimitive 運算子的邏輯轉換成值。運算子所使用的 PreferredType 提示是 Number。</td> </tr> <tr> <td>boolean</td> <td> <p>在 JavaScript 1.3 及其後版本中,會直接解開物件並發生下列其中一種情況︰</p> <ul> <li>如果物件是 null,就會把他轉換成 false。</li> <li>如果物件具有任何其他的值,就會把他轉換成 true。</li> </ul> <p>在 JavaScript 1.2 及早期版本中,會直接解開物件並發生下列其中一種情況︰</p> <ul> <li>如果解開後的物件具有 booleanValue 方法,來源物件就會被轉換成這個方法的返回值。</li> <li>如果物件沒有 booleanValue 方法,轉換就會失敗。</li> </ul> </td> </tr> </tbody>
-</table>
-<p>{{ PreviousNext("Core_JavaScript_1.5_教學:LiveConnect_概要:資料類型的轉換", "Core_JavaScript_1.5_教學:LiveConnect_概要:資料類型的轉換:從_Java_到_JavaScript_的轉換") }}</p>
-<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Data_Type_Conversions/JavaScript_to_Java_Conversions", "es": "es/Gu\u00eda_JavaScript_1.5/Concepto_general_de_LiveConnect/Conversiones_de_tipos_de_datos/Conversiones_de_JavaScript_a_Java", "ja": "ja/Core_JavaScript_1.5_Guide/LiveConnect_Overview/Data_Type_Conversions/JavaScript_to_Java_Conversions", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Podgl\u0105d_klas_LiveConnect/Konwersja_typu_danych/Konwersja_JavaScript_do_Java" } ) }}</p>
diff --git a/files/zh-tw/web/javascript/reference/global_objects/object/watch/index.html b/files/zh-tw/web/javascript/reference/global_objects/object/watch/index.html
deleted file mode 100644
index 9dc8afa27f..0000000000
--- a/files/zh-tw/web/javascript/reference/global_objects/object/watch/index.html
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: Object.prototype.watch()
-slug: Web/JavaScript/Reference/Global_Objects/Object/watch
-translation_of: Archive/Web/JavaScript/Object.watch
----
-<div>{{JSRef}}</div>
-
-<div class="warning">
-<p><strong>Warning:</strong> Generally you should avoid using <code>watch()</code> and {{jsxref("Object.prototype.unwatch", "unwatch()")}} when possible. These two methods are implemented only in Gecko, and they're intended primarily for debugging use. In addition, using watchpoints has a serious negative impact on performance, which is especially true when used on global objects, such as <code>window</code>. You can usually use <a href="/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">setters and getters</a> or proxies instead. See {{anch("Browser compatibility")}} for details. Also, do not confuse {{jsxref("Object.prototype.watch", "Object.watch")}} with {{jsxref("Object.prototype.observe", "Object.observe")}}.</p>
-</div>
-
-<p>The <code><strong>watch()</strong></code> method watches for a property to be assigned a value and runs a function when that occurs.</p>
-
-<h2 id="語法">語法</h2>
-
-<pre class="syntaxbox"><code><var>obj</var>.watch(<var>prop</var>, <var>handler</var>)</code></pre>
-
-<h3 id="參數">參數</h3>
-
-<dl>
- <dt><code>prop</code></dt>
- <dd>所需要監聽其值是否改變的物件屬性</dd>
- <dt><code>handler</code></dt>
- <dd>當監聽的變數其數值變換時所執行的function</dd>
-</dl>
-
-<h3 id="回傳值">回傳值</h3>
-
-<p>{{jsxref("undefined")}}.</p>
-
-<h2 id="Description">Description</h2>
-
-<p>Watches for assignment to a property named <code>prop</code> in this object, 呼叫 <code>handler(prop, oldval, newval)</code> whenever <code>prop</code> is set and storing the return value in that property. A watchpoint can filter (or nullify) the value assignment, by returning a modified <code>newval</code> (or by returning <code>oldval</code>).</p>
-
-<p>當你刪掉所監聽的物件屬性,並不會結束針對該物件屬性的監聽。當你重新產生該屬性時,監聽依舊維持作用。</p>
-
-<p>要停止該次監聽, 須使用 {{jsxref("Object.unwatch", "unwatch()")}} 函式. By default, the <code>watch</code> method is inherited by every object descended from {{jsxref("Object")}}.</p>
-
-<p>The JavaScript debugger has functionality similar to that provided by this method, as well as other debugging options. For information on the debugger, see <a href="/en-US/docs/Venkman">Venkman</a>.</p>
-
-<p>In Firefox, <code>handler</code> is only called from assignments in script, not from native code. For example, <code>window.watch('location', myHandler)</code> will not call <code>myHandler</code> if the user clicks a link to an anchor within the current document. However, <code>window.location += '#myAnchor'</code> will call <code>myHandler</code>.</p>
-
-<div class="note">
-<p><strong>Note:</strong> Calling <code>watch()</code> on an object for a specific property overrides any previous handler attached for that property.</p>
-</div>
-
-<h2 id="範例">範例</h2>
-
-<h3 id="使用watch_和_unwatch">使用watch 和 unwatch</h3>
-
-<pre class="brush: js">var o = { p: 1 };
-
-o.watch('p', function (id, oldval, newval) {
- console.log('o.' + id + ' changed from ' + oldval + ' to ' + newval);
- return newval;
-});
-
-o.p = 2;
-o.p = 3;
-delete o.p;
-o.p = 4;
-
-o.unwatch('p');
-o.p = 5;
-</pre>
-
-<p>上述程式執行結果:</p>
-
-<pre>o.p changed from 1 to 2
-o.p changed from 2 to 3
-o.p changed from undefined to 4
-</pre>
-
-<h3 id="使用_watch_驗證物件的屬性">使用 <code>watch</code> 驗證物件的屬性</h3>
-
-<p>You can use <code>watch</code> to test any assignment to an object's properties. This example ensures that every Person always has a valid name and an age between 0 and 200.</p>
-
-<pre class="brush: js">Person = function(name, age) {
- this.watch('age', Person.prototype._isValidAssignment);
- this.watch('name', Person.prototype._isValidAssignment);
- this.name = name;
- this.age = age;
-};
-
-Person.prototype.toString = function() {
- return this.name + ', ' + this.age;
-};
-
-Person.prototype._isValidAssignment = function(id, oldval, newval) {
- if (id === 'name' &amp;&amp; (!newval || newval.length &gt; 30)) {
- throw new RangeError('invalid name for ' + this);
- }
- if (id === 'age' &amp;&amp; (newval &lt; 0 || newval &gt; 200)) {
- throw new RangeError('invalid age for ' + this);
- }
- return newval;
-}
-
-will = new Person('Will', 29);
-console.log(will); // Will, 29
-
-try {
- will.name = '';
-} catch (e) {
- console.log(e);
-}
-
-try {
- will.age = -4;
-} catch (e) {
- console.log(e);
-}
-</pre>
-
-<p>上述程式執行結果:</p>
-
-<pre>Will, 29
-RangeError: invalid name for Will, 29
-RangeError: invalid age for Will, 29
-</pre>
-
-<h2 id="規格">規格</h2>
-
-<p>Not part of any specifications. Implemented in JavaScript 1.2.</p>
-
-<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
-
-<div>{{CompatibilityTable}}</div>
-
-<div id="compat-desktop">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatNo}}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<div id="compat-mobile">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Chrome for Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatNo}}</td>
- <td>{{CompatNo}}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<h2 id="Compatibility_notes">Compatibility notes</h2>
-
-<ul>
- <li>This <a class="external link-https" href="https://gist.github.com/384583">Polyfill</a> offers <code>watch</code> to all ES5 compatible browsers.</li>
- <li>Using a {{jsxref("Proxy")}} enables you do even deeper changes to how property assignments work.</li>
- <li>Calling <code>watch()</code> on the {{domxref("Document")}} object throws a {{jsxref("TypeError")}} since Firefox 23 ({{bug(903332)}}). This regression has been fixed with Firefox 27.</li>
-</ul>
-
-<h2 id="參閱">參閱</h2>
-
-<ul>
- <li>{{jsxref("Object.unwatch()")}}</li>
- <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li>
-</ul>
diff --git a/files/zh-tw/webapi/alarm/index.html b/files/zh-tw/webapi/alarm/index.html
deleted file mode 100644
index fc1eddb8d3..0000000000
--- a/files/zh-tw/webapi/alarm/index.html
+++ /dev/null
@@ -1,196 +0,0 @@
----
-title: Alarm API
-slug: WebAPI/Alarm
-translation_of: Archive/B2G_OS/API/Alarm_API
----
-<p>{{ SeeCompatTable() }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Alarm API 可存取裝置的警示設定功能。而警示設定功能可排定通知的時間,或在特定時間啟動某個 App。如鬧鐘、行事曆、自動更新等的 Apps,就可能需要透過 Alarm API,在特定時點觸發裝置的特定動作。</p>
-<p>而 Alarm API 本身僅可進行警示排程。透過 System Message API 即可將警示發送到 Apps,因此若 Apps 要對警示做出反應,就必須先將 Apps 註冊至 <code>alarm</code> 訊息。</p>
-<p>另外,使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozAlarmsManager" title="/en-US/docs/Web/API/MozAlarmsManager"><code>MozAlarmsManager</code></a> 介面的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozAlarms" title="/en-US/docs/Web/API/window.navigator.mozAlarms"><code>window.navigator.mozAlarms</code></a> 物件,即可設定警示。</p>
-<h2 id="example" name="example">警示排程</h2>
-<p>使用警示功能的第一件事,就是警示排程。若依照時區來分,共可分成 2 種警示,且均可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozAlarmsManager.add" title="/en-US/docs/Web/API/MozAlarmsManager.add"><code>MozAlarmsManager.add</code></a> 函式進行排程。</p>
-<div class="note">
- <p><strong>注意:</strong>若未針對特定 Apps 來設定警示,則只要是正在監聽警示的 Apps,均將接到系統所發送的警示。</p>
-</div>
-<h3 id="忽略時區的警示">忽略時區的警示</h3>
-<p>系統將根據裝置的本端時間,發送此類警示。若裝置變更了時區設定,則系統將根據新的時區而發送警示。舉例來說,如果使用者位在巴黎,設定了 12 PM CET (<em>Central European Time</em>) 發出警示,結果出差到舊金山時,那同樣會在 12 PM PDT (<em>Pacific Daylight Time</em>) 發送警示。</p>
-<pre class="brush: js">// This the date to schedule the alarm
-var myDate = new Date("May 15, 2012 16:20:00");
-
-// This is arbitrary data pass to the alarm
-var data = {
- foo: "bar"
-}
-
-// The "ignoreTimezone" string is what make the alarm ignoring it
-var request = navigator.mozAlarms.add(myDate, "ignoreTimezone", data);
-
-request.onsuccess = function () {
- console.log("The alarm has been scheduled");
-};
-
-request.onerror = function () {
- console.log("An error occurred: " + this.error.name);
-};
-</pre>
-<h3 id="遵守時區的警示">遵守時區的警示</h3>
-<p>系統將根據排程當下的時區,發送此類警示。若裝置因為某個理由變更了時區,系統同樣是根據原始的排程時區而發出警示。舉例來說,如果使用者位在巴黎,設定於 12 PM CET (<em>Central European Time</em>) 發送警示,結果出差到舊金山時,系統將於 3 AM PDT (<em>Pacific Daylight Time</em>) 發送警示。</p>
-<pre class="brush: js">// This the date to schedule the alarm
-var myDate = new Date("May 15, 2012 16:20:00");
-
-// This is arbitrary data pass to the alarm
-var data = {
- foo: "bar"
-}
-
-// The "honorTimezone" string is what make the alarm honoring it
-var request = navigator.mozAlarms.add(myDate, "honorTimezone", data);
-
-request.onsuccess = function () {
- console.log("The alarm has been scheduled");
-};
-
-request.onerror = function () {
- console.log("An error occurred: " + this.error.name);
-};
-</pre>
-<h2 id="管理警示">管理警示</h2>
-<p>針對目前 App 已排定的警示,<a href="https://developer.mozilla.org/en-US/docs/Web/API/MozAlarmsManager.getAll" title="/en-US/docs/Web/API/MozAlarmsManager.getAll"><code>MozAlarmsManager.getAll</code></a> 函式將回傳完整的警示清單。這份清單則為<a href="https://developer.mozilla.org/en-US/docs/WebAPI/Alarm#mozAlarm"> mozAlarm</a> 物件的<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">陣列</a>。</p>
-<h3 id="mozAlarm">mozAlarm</h3>
-<p>這些物件均為非同步 JavaScript 物件,並包含下列屬性:</p>
-<dl>
- <dt>
- <code>id</code></dt>
- <dd>
- 1 組號碼代表警示的 ID</dd>
- <dt>
- <code>date</code></dt>
- <dd>
- <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="/en-US/docs/JavaScript/Reference/Global_Objects/Date">Date</a> 物件代表警示的排程時間</dd>
- <dt>
- <code>respectTimezone</code></dt>
- <dd>
- 1 組字串指出警示將遵守或忽略 <code>date</code> 物件的時區資訊。該值可為 <code>ignoreTimezone</code> 或 <code>honorTimezone </code></dd>
- <dt>
- <code>data</code></dt>
- <dd>
- 與警示一同儲存的所有資料,均納入此 JavaScript 物件中</dd>
-</dl>
-<pre class="brush: js">var request = navigator.mozAlarms.getAll();
-
-request.onsuccess = function () {
- this.result.forEach(function (alarm) {
- console.log('Id: ' + alarm.id);
- console.log('date: ' + alarm.date);
- console.log('respectTimezone: ' + alarm.respectTimezone);
- console.log('data: ' + JSON.stringify(alarm.data));
- });
-};
-
-request.onerror = function () {
- console.log("An error occurred: " + this.error.name);
-};
-</pre>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozAlarmsManager.remove" title="/en-US/docs/Web/API/MozAlarmsManager.remove"><code>MozAlarmsManager.remove</code></a> 函式則可解除已排程的警示。</p>
-<pre class="brush: js">var alarmId;
-
-// Set an alarm and store it's id
-var request = navigator.mozAlarms.add(new Date("May 15, 2012 16:20:00"), "honorTimezone");
-
-request.onsuccess = function () {
- alarmId = this.result;
-}
-
-// ...
-
-// Later on, removing the alarm if it exists
-if (alarmId) {
- navigator.mozAlarms.remove(alarmId);
-}
-</pre>
-<h2 id="處理警示">處理警示</h2>
-<p>在系統發送警示之後,任何 Apps 均可做出回應。為了要能處理警示,Apps 必須將本身註冊為警示處理器 (Alarm handler)。透過 System Messaging API 的 2 個步驟即可完成註冊:</p>
-<p>首先,Apps 必須將 <code>alarm</code> 納入<a href="https://developer.mozilla.org/en-US/docs/Apps/Manifest#messages" title="/en-US/docs/Apps/Manifest#messages">本身 manifest 檔案的 message 屬性</a>中,而此 manifest 檔案需包含「已註冊回呼 (Callback) 函式的文件」之網址。一旦發送警示時,就會呼叫該文件中所註冊的回呼函式。</p>
-<pre class="brush: js">"messages": [
- { "alarm": "/index.html" }
-]</pre>
-<p>其次,Apps 必須以 <code>alarm</code> 訊息綁定回呼函式;可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>navigator.mozSetMessageHandler</code></a> 函式完成此步驟。此回呼函式將接收 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Alarm#mozAlarm">mozAlarm</a> 物件,其內為警示所附掛的資料。</p>
-<pre class="brush: js">navigator.mozSetMessageHandler("alarm", function (mozAlarm) {
- alert("alarm fired: " + JSON.stringify(mozAlarm.data));
-});
-</pre>
-<p>如果 App 想確認是否有警示延宕在系統端尚未發出,則可使用<a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozHasPendingMessage" title="/en-US/docs/Web/API/window.navigator.mozHasPendingMessage"><code>navigator.mozHasPendingMessage</code></a> 函式並搭配 <code>alarm</code> 值。</p>
-<pre class="brush: js">navigator.mozHasPendingMessage("alarm");
-</pre>
-<h2 id="規格">規格</h2>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{SpecName('Alarm API')}}</td>
- <td>{{Spec2('Alarm API')}}</td>
- <td>Initial specification.</td>
- </tr>
- </tbody>
-</table>
-<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
-<p>{{ CompatibilityTable() }}</p>
-<div id="compat-desktop">
- <table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{ CompatUnknown()}}</td>
- <td>{{CompatGeckoDesktop("16")}} {{ property_prefix("moz") }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- </tr>
- </tbody>
- </table>
-</div>
-<div id="compat-mobile">
- <table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Chrome for Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{ CompatUnknown() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{CompatGeckoMobile("10")}} {{ property_prefix("moz") }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- </tr>
- </tbody>
- </table>
-</div>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("window.navigator.mozAlarms","navigator.mozAlarms")}}</li>
- <li>{{domxref("MozAlarmsManager")}}</li>
- <li>{{domxref("window.navigator.mozSetMessageHandler")}}</li>
-</ul>
diff --git a/files/zh-tw/webapi/camera/index.html b/files/zh-tw/webapi/camera/index.html
deleted file mode 100644
index f6f1df5e2c..0000000000
--- a/files/zh-tw/webapi/camera/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Camera API
-slug: WebAPI/Camera
-translation_of: Archive/B2G_OS/API/Camera_API
----
-<p>{{ ApiRef() }}</p>
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-<p><strong>Camera API</strong> 可讓 Apps 管理裝置上的相機,進一步拍照、錄製影片,並取得如焦距、縮放、白平衡、閃光燈等的資訊。Camera API 屬於 Priviledged API,並僅限 Certified Apps 使用。</p>
-<div class="note">
- <p><strong>注意:</strong>除非你打算建構新 App 以取代預設的「<em>Camera</em>」App,否則應不會使用此 API。如果你只是要使用裝置上的相機功能,則應使用 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Web_Activities" title="/en-US/docs/Web/API/Web_Activities">Web Activities API</a>。</p>
-</div>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("window.navigator.mozCameras", "navigator.mozCameras")}}</li>
- <li>{{domxref("CameraManager")}}</li>
- <li>{{domxref("CameraControl")}}</li>
- <li>{{domxref("CameraCapabilities")}}</li>
-</ul>
-<p> </p>
diff --git a/files/zh-tw/webapi/contacts/index.html b/files/zh-tw/webapi/contacts/index.html
deleted file mode 100644
index 6775c57248..0000000000
--- a/files/zh-tw/webapi/contacts/index.html
+++ /dev/null
@@ -1,197 +0,0 @@
----
-title: Contacts API
-slug: WebAPI/Contacts
-translation_of: Archive/B2G_OS/API/Contacts_API
----
-<p>{{ SeeCompatTable }}</p>
-<p>{{ B2GOnlyHeader2('privileged') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Contacts API 提供簡易的管理介面,可用於系統通訊錄所儲存的聯絡人資訊。Contacts API 的常見使用範例,就是針對通訊錄而建構出管理 Apps。</p>
-<div class="note">
- <p><strong>注意:</strong>由於聯絡人資訊屬於高敏感性的個人資料,因此僅限 Privileged 與 Certified Apps 可直接存取該 API。其他 Apps 均建議透過 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Web_Activities" title="/en-US/docs/WebAPI/Web_Activities">Web Activities</a> 而委派相關作業。</p>
-</div>
-<h2 id="管理聯絡人資訊">管理聯絡人資訊</h2>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager" title="/en-US/docs/Web/API/ContactManager">ContactManager</a> 介面的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozContacts" title="/en-US/docs/Web/API/window.navigator.mozContacts">navigator.mozContacts</a> 屬性,即可存取儲存於系統通訊錄中的資訊。</p>
-<h3 id="新增聯絡人">新增聯絡人</h3>
-<p>若要在系統通訊錄中建立新的項目,可分為 2 個步驟:</p>
-<ol>
- <li>建立新的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact" title="The MozContact interface is used to describe a single contact in the device's contact database.">mozContact</a> 物件,並列出其必要屬性的欄位。<a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact" title="The MozContact interface is used to describe a single contact in the device's contact database.">mozContact</a> 介面將定義既有聯絡人的所有可能屬性。這些屬性絕大部分均與 vCard 4.0 規格所定義的相同。以下列出例外:
- <ul>
- <li>vCard N 分為 5 項屬性:<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.familyName" title="/en-US/docs/Web/API/ContactProperties.familyName"><code>familyName</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.givenName" title="/en-US/docs/Web/API/ContactProperties.givenName"><code>givenName</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.additionalName" title="/en-US/docs/Web/API/ContactProperties.additionalName"><code>additionalName</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.honorificPrefix" title="/en-US/docs/Web/API/ContactProperties.honorificPrefix"><code>honorificPrefix</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.honorificSuffix" title="/en-US/docs/Web/API/ContactProperties.honorificSuffix"><code>honorificSuffix</code></a></li>
- <li>vCard FN 屬性已重新命名為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.name" title="/en-US/docs/Web/API/ContactProperties.name"><code>name</code></a></li>
- <li>vCard GENDER 分為 2 項屬性:<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.sex" title="/en-US/docs/Web/API/ContactProperties.sex"><code>sex</code></a>、<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactProperties.genderIdentity" title="/en-US/docs/Web/API/ContactProperties.genderIdentity"><code>genderIdentity</code></a></li>
- </ul>
- </li>
- <li>以 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.save" title="/en-US/docs/Web/API/ContactManager.save">ContactManager.save()</a> 函式搭配聯絡人物件,並作為第一屬性。此函式將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest">DOMRequest</a> 以追蹤儲存作業是否成功或發生錯誤。</li>
-</ol>
-<pre class="brush: js">var person = new mozContact();
-person.givenName = ["John"];
-person.familyName = ["Doe"];
-person.nickName = ["No kidding"];
-
-var saving = navigator.mozContacts.save(person);
-
-saving.onsuccess = function() {
- console.log('new contact saved');
- // This update the person as it is stored
- // It includes its internal unique ID
- // Note that saving.result is null here
-};
-
-saving.onerror = function(err) {
- console.error(err);
-};
-</pre>
-<h3 id="尋找聯絡人">尋找聯絡人</h3>
-<p>有 2 個函式可檢索系統通訊錄中的聯絡人:</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.find" title="/en-US/docs/Web/API/ContactManager.find">ContactManager.find()</a> 可檢索特定的聯絡人清單。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.getAll" title="/en-US/docs/Web/API/ContactManager.getAll">ContactManager.getAll()</a> 可檢索全部聯絡人。</li>
-</ul>
-<p>這 2 組函式都是讓參數 (本身即為物件) 能定義出篩選與排序的選項。<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.getAll" title="The getAll method is used to access a sorted list of contact from the device's contact database. This method is best suited to access a large data set, where find() is better suited for a small data set.">ContactManager.getAll</a> 僅接受排序選項。這些選項為:</p>
-<ul>
- <li><code>sortBy</code><code>:</code>此字串將為排序過的搜尋結果。目前僅支援 givenName 與 familyName。</li>
- <li><code>sortOrder</code>::此字串將顯示結果的排序。可能為 <code>descending</code> (降冪) 或 <code>ascending</code> (升冪)。</li>
-</ul>
-<p>還有其他搜尋選項:</p>
-<ul>
- <li><code>filterBy</code><code>:</code>此字串陣列代表所要篩選的全部欄位。</li>
- <li><code>filterValue</code><code>:</code>符合的數值。</li>
- <li><code>filterOp</code><code>:</code>所要使用的篩選器比較運算子,可能為 <code>equals</code>、<code>startsWith</code>、<code>match</code>。則最後的 <code>match</code> 則特別用於電話號碼。</li>
- <li><code>filterLimit</code><code>:</code><a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.find" title="/en-US/docs/Web/API/ContactManager.find"><code>find</code></a> <code>函式所將檢索的聯絡人數量。</code></li>
-</ul>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.find" title="The find method is used to retrieve a limited list of contacts from the device's contact database. This method is best suited to access a small data set, where getAll() is better suited for a large data set.">find</a> 將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="A DOMRequest object represents an ongoing operation. It provides callbacks that are called when the operation completes, as well as a reference to the operation's result. A DOM method that initiates an ongoing operation may return a DOMRequest object that">DOMRequest</a> 物件;<a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.getAll" title="The getAll method is used to access a sorted list of contact from the device's contact database. This method is best suited to access a large data set, where find() is better suited for a small data set.">getAll</a> 將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMCursor" title="A DOMCursor object represents an ongoing operation over a list of results. It is an enhanced DOMRequest that allows to iterate through a list of results asynchronously. Each time its continue() method is called, the DOMCursor tries to reach the next resul">DOMCursor</a> 物件,以存取成功或錯誤的搜尋作業。</p>
-<p>若搜尋成功,則可於 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest.result" title="/en-US/docs/Web/API/DOMRequest.result">DOMRequest.result</a> 屬性中找到搜尋結果。可能是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.find" title="The find method is used to retrieve a limited list of contacts from the device's contact database. This method is best suited to access a small data set, where getAll() is better suited for a large data set.">find</a> 的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact" title="The MozContact interface is used to describe a single contact in the device's contact database.">mozContact</a> 物件陣列;也可能是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.getAll" title="The getAll method is used to access a sorted list of contact from the device's contact database. This method is best suited to access a large data set, where find() is better suited for a small data set.">getAll</a> 的單一 <a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact" title="The MozContact interface is used to describe a single contact in the device's contact database.">mozContact</a> 物件。若要以 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.getAll" title="The getAll method is used to access a sorted list of contact from the device's contact database. This method is best suited to access a large data set, where find() is better suited for a small data set.">getAll</a> 接收清單中的其他結果,則可呼叫指示器的 <code>continue()</code> 函式。</p>
-<pre class="brush: js">var options = {
- filterValue : "John",
- filterBy : ["givenName","name","nickName"],
- filterOp : "contains",
- filterLimit : 1,
- sortBy : "familyName"
- sortOrder : "ascending"
-}
-
-var search = navigator.mozContacts.find(options);
-
-search.onsuccess = function() {
- if (search.result.length === 1) {
- var person = search.result[0];
- console.log("Found:" + person.givenName[0] + " " + person.familyName[0]);
- } else {
- console.log("Sorry, there is no such contact.")
- }
-}
-
-search.onerror = function() {
- console.warn("Uh! Something goes wrong, no result found!");
-}
-
-var allContacts = navigator.mozContacts.getAll({sortBy: "familyName", sortOrder: "descending"});
-
-allContacts.onsuccess = function(event) {
- var cursor = event.target;
- if (cursor.result) {
- console.log("Found: " + cursor.result.givenName[0] + " " + cursor.result.familyName[0]);
- cursor.continue();
- } else {
- console.log("No more contacts");
- }
-}
-
-allContacts.onerror = function() {
- console.warn("Something went terribly wrong! :(");
-}
-
-</pre>
-<h3 id="更新聯絡人">更新聯絡人</h3>
-<p>在透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.find" title="/en-US/docs/Web/API/ContactManager.find"><code>find()</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.getAll" title="/en-US/docs/Web/API/ContactManager.getAll"><code>getAll()</code></a> 檢索聯絡人時,又或針對新聯絡人而成功呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.save" title="/en-US/docs/Web/API/ContactManager.save"><code>save()</code></a> 時,此聯絡人必須附加某些後設資料 (Meta-data):</p>
-<ul>
- <li>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact.id" title="The id property is a unique string representing the contact within the device's contact database.">mozContact.id</a> 取得專屬 ID</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact.updated" title="The updated property provides the date of when the contact was updated for the last time on the device's contact database.">mozContact.updated</a> 中的 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="/en-US/docs/JavaScript/Reference/Global_Objects/Date">Date</a> 物件,將代表聯絡人最後的更新時間</li>
-</ul>
-<p>若更新某位聯絡人,其實只是更改其屬性值,再呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.save" title="/en-US/docs/Web/API/ContactManager.save">save()</a> 函式即可儲存。</p>
-<div class="note">
- <p><strong>注意:</strong>每次只要新增、更新、刪除聯絡人,就會觸發 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/contactchange" title="/en-US/docs/Web/Reference/Events/contactchange">contactchange</a> 事件,以追蹤系統通訊錄的所有變更。另可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.oncontactchange" title="/en-US/docs/Web/API/ContactManager.oncontactchange">ContactManager.oncontactchange</a> 屬性而處理該事件。</p>
-</div>
-<h3 id="刪除聯絡人">刪除聯絡人</h3>
-<p>呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.remove" title="/en-US/docs/Web/API/ContactManager.remove"><code>ContactManager.remove()</code></a> 函式,只會刪除已傳入的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact" title="The MozContact interface is used to describe a single contact in the device's contact database.">mozContact</a> 物件。</p>
-<p>在某些極端情況下,也可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager.clear" title="/en-US/docs/Web/API/ContactManager.clear"><code>ContactManager.clear()</code></a> 而刪除所有的聯絡人。因為一旦完成就沒辦法恢復資料,所以呼叫此函式時請特別謹慎。</p>
-<h2 id="Specifications" name="Specifications">規格</h2>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{ SpecName('Contacts', '', 'Contacts Manager API') }}</td>
- <td>{{ Spec2('Contacts') }}</td>
- <td>First Working Draft (未穩定)</td>
- </tr>
- <tr>
- <td><a href="http://tools.ietf.org/html/rfc6350" title="http://tools.ietf.org/html/rfc6350">vCard Format Specification</a></td>
- <td>RFC</td>
- <td><code>RFC6350</code></td>
- </tr>
- </tbody>
-</table>
-<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
-<p>{{ CompatibilityTable() }}</p>
-<div id="compat-desktop">
- <table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td>基本支援</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- </tr>
- </tbody>
- </table>
-</div>
-<div id="compat-mobile">
- <table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Chrome for Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td>基本支援</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatVersionUnknown()}}</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- <td>{{CompatNo()}}</td>
- </tr>
- </tbody>
- </table>
-</div>
-<h3 id="Gecko_說明">Gecko 說明</h3>
-<p>此規格尚未確定,因此目前 Gecko 仍屬非標準建構。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozContacts" title="Return a ContactManager to access and manage all the contacts available on the device.">navigator.mozContacts</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/mozContact" title="The MozContact interface is used to describe a single contact in the device's contact database.">mozContact</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ContactManager" title="The ContactManager interface is used to access and manage the contact available on the device.">ContactManager</a></li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozContactChangeEvent" title="The MozContactChangeEvent interface provides information about the contact that has changed. It inherits from the Event interface.">MozContactChangeEvent</a></li>
-</ul>
diff --git a/files/zh-tw/webapi/device_storage/index.html b/files/zh-tw/webapi/device_storage/index.html
deleted file mode 100644
index d09fd49015..0000000000
--- a/files/zh-tw/webapi/device_storage/index.html
+++ /dev/null
@@ -1,228 +0,0 @@
----
-title: Device Storage API
-slug: WebAPI/Device_Storage
-translation_of: Archive/B2G_OS/API/Device_Storage_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('privileged') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Device Storage API 可存取 Web Apps 中的檔案系統。存取檔案系統可能牽涉極高的安全敏感度,所以此 API 僅可用於 Privileged Apps。</p>
-<div class="note">
- <p><strong>注意:</strong>若裝置儲存媒體的存取速度極慢,可能是受限於實體層 (Physical level) 的關係。在許多情況下,若以 <a href="https://developer.mozilla.org/en-US/docs/IndexedDB" title="/en-US/docs/IndexedDB">IndexedDB</a> 資料庫儲存檔案,取代實體的裝置儲存媒體,將可達到更高的速度。</p>
-</div>
-<h2 id="存取儲存媒體">存取儲存媒體</h2>
-<h3 id="進入點">進入點</h3>
-<p>若使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.getDeviceStorage" title="/en-US/docs/Web/API/window.navigator.getDeviceStorage"><code>navigator.getDeviceStorage()</code></a> 函式,則可存取儲存區。此函式所接受的字串參數,可代表所要存取的儲存媒體名稱。函式回傳的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage" title="/en-US/docs/Web/API/DeviceStorage"><code>DeviceStorage</code></a> 物件,可存取相關的儲存區。</p>
-<p>Firefox OS 提供下列儲存名稱:</p>
-<ul>
- <li><code>apps:</code><code>此儲存範圍可用以儲存 </code>Apps<code> 所需的使用者資料。因為這些屬於重要資料,所以若要存取此儲存</code>區<code>,將需要額外的授權,且僅限 </code>Certified Apps。</li>
- <li><code>music</code>:音樂與音訊檔案的儲存區。</li>
- <li><code>pictures</code>:圖片檔案的儲存區。</li>
- <li><code>sdcard</code><code>:裝置的</code> SD 記憶卡儲存區。</li>
- <li><code>videos</code><code>:視訊檔案的儲存區。</code></li>
-</ul>
-<pre class="brush: js">var pics = navigator.getDeviceStorage('pictures');</pre>
-<p>為了要能使用所有儲存區,Apps 必須在自己的 manifest 檔案中載明這些儲存區。舉例來說,如果 Apps 要存取 <code>sdcard</code> 儲存區,則其 manifest 檔案中必須具備「<code>device-storage:sdcard」的授權。</code></p>
-<pre class="brush: js">"permissions": {
- "device-storage:videos":{ "access": "readonly" },
- "device-storage:pictures":{ "access": "readwrite" }
-}</pre>
-<h2 id="使用儲存媒體">使用儲存媒體</h2>
-<p>只要 Apps 能夠存取儲存區,就可在該儲存區中新增、取得、移除檔案。</p>
-<h3 id="新增檔案">新增檔案</h3>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.addNamed" title="/en-US/docs/Web/API/DeviceStorage.addNamed"><code>addNamed</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.add" title="/en-US/docs/Web/API/DeviceStorage.add"><code>add</code></a> 函式,即可新增檔案。前者可在儲存檔案時,設定明確的名稱;而後者則可自動建立名稱。這 2 組函式均屬非同步函式,並將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件以處理作業的 <code>success</code> 或 <code>error</code> 狀態。因為在實體層上讀/寫檔案極為緩慢,所以此作業特別重要。</p>
-<p>這 2 組函式均以 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Blob" title="/en-US/docs/Web/API/Blob"><code>Blob</code></a> 作為其第一參數。此物件將於背景之下轉為檔案並儲存起來。當建立 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Blob" title="/en-US/docs/Web/API/Blob"><code>Blob</code></a> 物件時將強制給予其 <code>type,而因為某些儲存區會因類型而有所限制,所以此</code> MIME 類型格外重要:</p>
-<ul>
- <li><code>music</code> 僅接受「具備有效音訊 MIME 類型」的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Blob" title="/en-US/docs/Web/API/Blob"><code>Blob</code></a></li>
- <li><code>pictures</code> 僅接受「具備有效圖像 MIME 類型」的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Blob" title="/en-US/docs/Web/API/Blob"><code>Blob</code></a></li>
- <li><code>videos</code> 僅接受「具備有效視訊 MIME 類型」的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Blob" title="/en-US/docs/Web/API/Blob"><code>Blob</code></a></li>
-</ul>
-<pre class="brush: js">var sdcard = navigator.getDeviceStorage("sdcard");
-var file = new Blob(["This is a text file."], {type: "text/plain"});
-
-var request = sdcard.addNamed(file, "my-file.txt");
-
-request.onsuccess = function () {
- var name = this.result;
- console.log('File "' + name + '" successfully wrote on the sdcard storage area');
-}
-
-// An error typically occur if a file with the same name already exist
-request.onerror = function () {
- console.warn('Unable to write the file: ' + this.error);
-}
-</pre>
-<div class="note">
- <p><strong>注意:</strong>儲存區中的 Repository (Repo) 屬於隱性 (Implicit),因此不能建立顯性 (Explicit) 的空白 Repo。如果要使用 Repo 的結構,則必須針對 Repo 的名稱,使之成為儲存檔案名稱的一部分。所以,如果你要在 <code>foo</code> 庫中儲存 <code>bar</code> 檔案,就必須使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.addNamed" title="/en-US/docs/Web/API/DeviceStorage.addNamed"><code>addNamed</code></a> 函式再搭配 <code>addNamed(</code><em>blob</em><code>, "foo/bar") 檔案的完整路徑名稱。一旦要使用這個名稱檢索檔案,也可使用同樣的方式 </code>(參閱下列)。</p>
- <p>基於安全理由,如果檔案新增於既定的受限儲存區內,則檔案路徑名稱不能以「<code>/」或「../」開頭</code> (且「<code>./」為無意義</code>)。</p>
-</div>
-<h3 id="取得檔案">取得檔案</h3>
-<p>現有 2 種方法可檢索檔案:使用檔案名稱,或依序存取檔案列表。</p>
-<p>最簡單的方式,就是使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.get" title="/en-US/docs/Web/API/DeviceStorage.get"><code>get</code></a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.getEditable" title="/en-US/docs/Web/API/DeviceStorage.getEditable"><code>getEditable</code></a> 函式來檢索檔案。前者可提供<a href="https://developer.mozilla.org/en-US/docs/Web/API/File" title="/en-US/docs/Web/API/File"><code>File</code></a> 物件,即如同唯讀檔案一樣;後者則提供 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FileHandle" title="/en-US/docs/Web/API/FileHandle"><code>FileHandle</code></a> 物件,可更新底層檔案 (Under-laying file)。這 2 組函式均屬非同步函式,並會回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理作業的 <code>success</code> 或 <code>error</code> 狀態。</p>
-<pre class="brush: js">var sdcard = navigator.getDeviceStorage('sdcard');
-
-var request = sdcard.get("my-file.txt");
-
-request.onsuccess = function () {
- var file = this.result;
- console.log("Get the file: " + file.name);
-}
-
-request.onerror = function () {
- console.warn("Unable to get the file: " + this.error);
-}
-</pre>
-<p>另一個檔案檢索方式,就是透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.enumerate" title="/en-US/docs/Web/API/DeviceStorage.enumerate"><code>enumerate</code></a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.enumerateEditable" title="/en-US/docs/Web/API/DeviceStorage.enumerateEditable"><code>enumerateEditable</code></a> 函式瀏覽儲存區的內容。前者可提供 <a href="https://developer.mozilla.org/en-US/docs/Web/API/File" title="/en-US/docs/Web/API/File"><code>File</code></a> 物件;後者則提供 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FileHandle" title="/en-US/docs/Web/API/FileHandle"><code>FileHandle</code></a> 物件。此 2 組均為非同步函式,並可回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMCursor" title="/en-US/docs/Web/API/DOMCursor"><code>DOMCursor</code></a> 物件以依序存取檔案列表。<a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMCursor" title="/en-US/docs/Web/API/DOMCursor"><code>DOMCursor</code></a> 其實就是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a>,但又額外具備「非同步依序存取列表 (這裡則指檔案列表)」的功能。</p>
-<pre class="brush: js">var pics = navigator.getDeviceStorage('pictures');
-
-// Let's browse all the images available
-var cursor = pics.enumerate();
-
-cursor.onsuccess = function () {
- var file = this.result;
- console.log("File found: " + file.name);
-
- // Once we found a file we check if there is other results
- if (!this.done) {
- // Then we move to the next result, which call the cursor
- // success with the next file as result.
- this.continue();
- }
-}
-
-cursor.onerror = function () {
- console.warn("No file found: " + this.error);
-}
-
-</pre>
-<p>只要傳送 2 組選擇性參數至 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.enumerate" title="/en-US/docs/Web/API/DeviceStorage.enumerate"><code>enumerate</code></a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.enumerateEditable" title="/en-US/docs/Web/API/DeviceStorage.enumerateEditable"><code>enumerateEditable</code></a> 函式,即可限制結果的數量。</p>
-<p>第一組參數可為字串,代表所要搜尋的子資料夾。</p>
-<p>第二組參數則是具備 <code>since </code>屬性的物件,可限制在既定期間內搜尋。</p>
-<pre class="brush: js">var pics = navigator.getDeviceStorage('pictures');
-
-// Lets retrieve picture from the last week.
-var param = {
- since: new Date((+new Date()) - 7*24*60*60*1000)
-}
-
-var cursor = pics.enumerate(param);
-
-cursor.onsuccess = function () {
- var file = this.result;
- console.log("Picture taken on: " + file.<code class="language-js">lastModifiedDate</code>);
-
- if (!this.done) {
- this.continue();
- }
-}
-
-</pre>
-<h3 id="刪除檔案">刪除檔案</h3>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.delete" title="/en-US/docs/Web/API/DeviceStorage.delete"><code>delete</code></a> 函式,即可從儲存區移除檔案。此函式僅需所要刪除的檔案名稱。如同來自於 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage" title="/en-US/docs/Web/API/DeviceStorage"><code>DeviceStorage</code></a> 介面的其他所有函式,此函式亦屬於非同步 API,並會回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理作業的 <code>success</code> 或 <code>error</code> 的狀態。</p>
-<pre class="brush: js">var sdcard = navigator.getDeviceStorage('sdcard');
-
-var request = sdcard.delete("my-file.txt");
-
-request.onsuccess = function () {
- console.log("File deleted");
-}
-
-request.onerror = function () {
- console.log("Unable to delete the file: " + this.error);
-}
-
-</pre>
-<h2 id="儲存資訊">儲存資訊</h2>
-<p>除了存取檔案之外,儲存區亦提供數個函式,可輕鬆取得某些重要資訊。</p>
-<h3 id="可用空間">可用空間</h3>
-<p>在儲存檔案時,必須先了解的要素之一就是可用空間。<a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage" title="/en-US/docs/Web/API/DeviceStorage"><code>DeviceStorage</code></a> 介面則針對空間而提供 2 組有用函式:</p>
-<ul>
- <li>{{domxref("DeviceStorage.freeSpace()","freeSpace()")}} 可取得「儲存新檔案」的空間容量</li>
- <li>{{domxref("DeviceStorage.freeSpace()","usedSpace()")}} 可取得「已儲存檔案」的空間容量</li>
-</ul>
-<p>這些函式亦屬於非同步 APIs,並會回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理作業的 <code>success</code> 或 <code>error</code> 的狀態。</p>
-<pre class="brush: js">var videos = navigator.getDeviceStorage('videos');
-
-var request = videos.usedSpace();
-
-request.onsuccess = function () {
- // The result is express in bytes, lets turn it into megabytes
- var size = this.result / 1000000;
-
- console.log("The videos on your device use a total of " + size.toFixed(2) + "Mo of space.");
-}
-
-request.onerror = function () {
- console.warn("Unable to get the space used by videos: " + this.error);
-}
-</pre>
-<h3 id="監聽變動狀態">監聽變動狀態</h3>
-<p>可能有許多 Apps 同時存取相同的儲存區。如果 Apps 能知道儲存區中的變化,則可避免不必要的錯誤。又若 Apps 不依賴 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage" title="/en-US/docs/Web/API/DeviceStorage"><code>DeviceStorage</code></a> 介面的函式所回傳的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,卻需執行非同步作業,那得知儲存區的變化亦頗有助益。</p>
-<p>因為如此,只要建立、修改、刪除了某個檔案,就會觸發 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/change" title="/en-US/docs/Web/Reference/Events/change">change</a> 事件。而透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage.onchange" title="/en-US/docs/Web/API/DeviceStorage.onchange"><code>onchange</code></a> 屬性或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener" title="/en-US/docs/Web/API/EventTarget.addEventListener"><code>addEventListener()</code></a> 函式,即可取得這個事件。而事件處理器 (Event Handler) 所取得的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorageChangeEvent" title="/en-US/docs/Web/API/DeviceStorageChangeEvent"><code>DeviceStorageChangeEvent</code></a> 物件,則是擁有額外 2 組屬性的常態 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Event" title="/en-US/docs/Web/API/Event"><code>Event</code></a> 物件:</p>
-<ul>
- <li>{{domxref("DeviceStorageChangeEvent.reason")}} 將提供變更 (<code>created 或 modified</code> 或 <code>deleted</code>) 的理由。</li>
- <li>{{domxref("DeviceStorageChangeEvent.path")}} 則針對受變更所影響的檔案,提供其完整的路徑。</li>
-</ul>
-<pre class="brush: js">var sdcard = navigator.getDeviceStorage('sdcard');
-
-sdcard.onchange = function (change) {
- var reason = change.reason;
- var path = change.path;
-
- console.log('The file "' + path + '" has been ' + reason);
-}
-</pre>
-<h2 id="規格">規格</h2>
-<p>目前尚無規格。</p>
-<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
-<p>{{ CompatibilityTable() }}</p>
-<div id="compat-desktop">
- <table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{ CompatUnknown() }}</td>
- <td>{{ CompatUnknown() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- </tr>
- </tbody>
- </table>
-</div>
-<div id="compat-mobile">
- <table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{ CompatUnknown() }}</td>
- <td>{{ CompatUnknown() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- </tr>
- </tbody>
- </table>
-</div>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("window.navigator.getDeviceStorage()","navigator.getDeviceStorage()")}}</li>
- <li>{{domxref("DeviceStorage")}}</li>
- <li>{{domxref("DeviceStorageChangeEvent")}}</li>
-</ul>
diff --git a/files/zh-tw/webapi/idle/index.html b/files/zh-tw/webapi/idle/index.html
deleted file mode 100644
index e4eaaaaac2..0000000000
--- a/files/zh-tw/webapi/idle/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: Idle
-slug: WebAPI/Idle
-translation_of: Archive/B2G_OS/API/Idle_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>當使用者讓裝置進入閒置/待機狀態,可通知 App 以採取相對應的行動。最常見的情形就是待機省電。而待機省電狀態又可另外搭配 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Power_Management" title="/en-US/docs/WebAPI/Power_Management">Power Management API</a>。</p>
-<h2 id="Idle_Observer">Idle Observer</h2>
-<p>若要讓任一 App 收到「系統閒置」的通知,就必須先註冊 Idle Observer。而 Idle Observer 物件具備了 3 項屬性:</p>
-<ul>
- <li><code>time</code> 屬性將定義使用者最後的動作之後,理應進入閒置/待機狀態的時間 (以秒計算)。</li>
- <li><code>onidle</code> 屬性則是判斷使用者閒置之後,所會呼叫的函式。</li>
- <li><code>onactive</code> 屬性則是使用者再度啟動裝置之後,所會呼叫的函式。</li>
-</ul>
-<pre class="brush: js">// NOTE: mozPower is part of the Power Management API
-
-var fadeLight = {
- time: 10, // Ten seconds
-
- onidle: function () {
- // The user does not seem active, let's dim the screen down
- navigator.mozPower.screenBrightness = 0.5;
- },
-
- onactive: function () {
- // Ok, the user is back, let's brighten the screen up
- navigator.mozPower.screenBrightness = 1;
- }
-}
-
-var screenOff = {
- time: 15, // fifteen seconds
-
- onidle: function () {
- // Ok, the user had his chance but he's really idle, let's turn the screen off
- navigator.mozPower.screenEnabled = false;
- },
-
- onactive: function () {
- // Ok, the user is back, let's turn the screen on
- navigator.mozPower.screenEnabled = true;
- }
-}
-</pre>
-<p>任一 App 均可依需要而定義為多個 Idle Observer。但不論定義成幾個 Idle Observer,都必須以 <a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.addIdleObserver" title="/en-US/docs/DOM/window.navigator.addIdleObserver"><code>navigator.addIdleObserver()</code></a> 函式完成註冊,才能由系統所處理。</p>
-<pre class="brush: js">navigator.addIdleObserver(fadeLight);
-navigator.addIdleObserver(screenOff);
-</pre>
-<p>又如果 App 不再需要知道使用者是否閒置了系統,則可透過 <a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.removeIdleObserver" title="/en-US/docs/DOM/window.navigator.removeIdleObserver"><code>navigator.removeIdleObserver()</code></a> 函式移除 Idle Observer。</p>
-<pre class="brush: js">navigator.removeIdleObserver(fadeLight);
-navigator.removeIdleObserver(screenOff);
-</pre>
-<h2 id="規格">規格</h2>
-<p>目前仍未有任何規格,但 W3C 將此 API 納入為 <a href="http://www.w3.org/2012/sysapps/" title="http://www.w3.org/2012/sysapps/">System Applications Working Group</a> 討論的一部分。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("window.navigator.addIdleObserver","navigator.addIdleObserver")}}</li>
- <li>{{domxref("window.navigator.removeIdleObserver","navigator.removeIdleObserver")}}</li>
-</ul>
diff --git a/files/zh-tw/webapi/network_stats/index.html b/files/zh-tw/webapi/network_stats/index.html
deleted file mode 100644
index c9aa8a94c1..0000000000
--- a/files/zh-tw/webapi/network_stats/index.html
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 網路流量統計
-slug: WebAPI/Network_Stats
-translation_of: Archive/B2G_OS/API/Network_Stats_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Network Stats API 將監控資料用量,並將此數據提供給 Certified Apps。</p>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozNetworkStats" title="Returns a MozNetworkStatsManager object you can use to access data amount information."><code>navigator.mozNetworkStats</code></a> 屬於 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsManager" title="The MozNetworkStatsManager interface provides methods and properties to monitor data usage."><code>MozNetworkStatsManager</code></a> 介面的實體 (Instance)。透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozNetworkStats" title="Returns a MozNetworkStatsManager object you can use to access data amount information."><code>navigator.mozNetworkStats</code></a> 即可取得相關資料。</p>
-<h2 id="存取資料">存取資料</h2>
-<p>有關已接收/已傳送資料量的資訊,均將由系統自動儲存。而 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsManager.getNetworkStats" title="The getNetworkStats method allows to retrieve the data usage statistics for the various connection types."><code>MozNetworkStatsManager.getNetworkStats()</code></a> 函式可存取相關資訊。此函式的第一組參數屬於組態物件,且必備下列屬性:</p>
-<ul>
- <li><code>start</code>:資料物件,代表資料統計開始。</li>
- <li><code>end</code>:資料物件,代表資料統計結束。</li>
- <li><code>connectionType</code>:資料來源,亦即連線類型。可能為「<code>wifi</code>」<code>或</code>「<code>mobile</code>」<code>或</code>「<code>null</code>」<code>。若為</code> <code>null,則會合併此 2 項來源的資料統計量。若要事先知道資料來源是否有效,則 </code><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsManager.connectionTypes" title="The connectionTypes property is a list of all possible monitored connection type by the current device."><code>MozNetworkStatsManager.connectionTypes</code></a> 屬性可回傳由字串 (代表各種支援的連線類型) 所構成的 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a>。</li>
-</ul>
-<p>一旦呼叫此函式,隨即回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="A DOMRequest object represents an ongoing operation. It provides callbacks that are called when the operation completes, as well as a reference to the operation's result. A DOM method that initiates an ongoing operation may return a DOMRequest object that"><code>DOMRequest</code></a> 以處理資訊請求的成功或失敗狀態。若為成功狀態,則請求的 <code>result</code> 即為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStats" title="The MozNetworkStats objects gives access to statistics about the data usage for a given network."><code>MozNetworkStats</code></a> 物件。</p>
-<pre class="brush: js">var manageWifi = navigator.mozNetworkStats.connectionTypes.indexOf('wifi') &gt; -1;
-var manageMobile = navigator.mozNetworkStats.connectionTypes.indexOf('mobile') &gt; -1;
-
-var config = {
- start: new Date(),
- end : new Date(),
- connectionType: manageWifi ? 'wifi' : null
-};
-
-var request = navigator.mozNetworkStats.getNetworkStats(config);
-
-request.onsuccess = function () {
- console.log("Data received: " + request.result.data[0].rxBytes + " bytes");
- console.log("Data sent: " + request.result.data[0].txBytes + " bytes")
-}
-
-request.onerror = function () {
- console.log("Something goes wrong: ", request.error);
-}
-</pre>
-<h2 id="隨著時間連續取樣">隨著時間連續取樣</h2>
-<p>資料總量的相關資訊均儲存於區塊 (Chunk) 中,以利隨時查看資料流量。各個區塊均為 1 組值,代表上個區塊儲存之後所交換的資料總量。</p>
-<p>在請求統計資料時,<a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStats" title="The MozNetworkStats objects gives access to statistics about the data usage for a given network."><code>MozNetworkStats</code></a> 物件將針對 <code>start</code> 與 <code>end</code> 日期之間所定義的間隔,儘量攜帶夠多的資料區塊。區塊的總數將因下列 2 組參數 (均屬唯讀參數) 而有所變化:</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsManager.sampleRate" title="The sampleRate property indicates the time in second between two data usage chunk are stored."><code>MozNetworkStatsManager.sampleRate</code></a> 代表 2 組區塊之間的時間,以秒計算。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsManager.maxStorageSamples" title="The maxStorageSamples property indicates the maximum number of date usage chunk stored for each type of connection."><code>MozNetworkStatsManager.maxStorageSamples</code></a> 代表各種連線類型的最大區塊數量。</li>
-</ul>
-<p>各個資料區塊均為 1 個 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsData" title="The MozNetworkStatsData objects represent a chunk of data usage statistics."><code>MozNetworkStatsData</code></a> 物件。透過<a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStats.data" title="The data property is a list of data usage statistics chunk. Each chunk is a MozNetworkStatsData providing the total amount a bytes received and send during a given amount of time (this amount of time is accessible through the MozNetworkStatsManager.sample"><code>MozNetworkStats.data</code></a> 屬性即可取得各個既定時間框架 (Time frame) 的所有資料區塊,進而形成 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozNetworkStatsData" title="The MozNetworkStatsData objects represent a chunk of data usage statistics."><code>MozNetworkStatsData</code></a> 物件的 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a>。</p>
-<pre class="brush: js">var rate = navigator.mozNetworkStats.sampleRate;
-var max = navigator.mozNetworkStats.maxStorageSample;
-
-var config = {
- start: new Date() - (rate * max), // This allows to get all the available data chunks.
- end : new Date(),
- connectionType: 'mobile'
-};
-
-var request = navigator.mozNetworkStats.getNetworkStats(config);
-
-request.onsuccess = function () {
- var total = {
- receive: 0,
- send : 0
- };
-
- this.result.forEach(function (chunk) {
- total.receive += chunk.rxBytes;
- total.send += chunk.txBytes;
- });
-
- console.log("Since: " + config.start.toString());
- console.log("Data received: " + (total.receive * 1000).toFixed(2) + "Ko");
- console.log("Data sent: " + (total.send * 1000).toFixed(2) + "Ko")
-}
-
-request.onerror = function () {
- console.log("Something goes wrong: ", request.error);
-}</pre>
-<h2 id="規格">規格</h2>
-<p>尚無任何規格。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("window.navigator.mozNetworkStats","navigator.mozNetworkStats")}}</li>
- <li>{{domxref("MozNetworkStats")}}</li>
- <li>{{domxref("MozNetworkStatsData")}}</li>
- <li>{{domxref("MozNetworkStatsManager")}}</li>
- <li><a href="/en-US/docs/WebAPI/Network_Stats_2_0_proposal" title="/en-US/docs/WebAPI/Network_Stats_2_0_proposal">NetworkStats API 2.0 proposal</a></li>
-</ul>
diff --git a/files/zh-tw/webapi/power_management/index.html b/files/zh-tw/webapi/power_management/index.html
deleted file mode 100644
index da501d4238..0000000000
--- a/files/zh-tw/webapi/power_management/index.html
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Power Management
-slug: WebAPI/Power_Management
-translation_of: Archive/B2G_OS/API/Power_Management_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Power Management API 可管理裝置的耗電情形。</p>
-<h2 id="管理電力">管理電力</h2>
-<p>電力管理與電力本身不盡相同,如避免大量耗電、限制回流 (Reflow) 等等,都屬於電源管理的一部分。而 Power Management API 則直接控管如 CPU 與螢幕等的耗電量。透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPower" title="/en-US/docs/Web/API/window.navigator.mozPower"><code>navigator.mozPower</code></a> 即可存取電力管理的主要介面。而 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPower" title="/en-US/docs/Web/API/window.navigator.mozPower"><code>navigator.mozPower</code></a> 則為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager" title="/en-US/docs/Web/API/PowerManager"><code>PowerManager</code></a> 介面的實例 (Instance)。</p>
-<h3 id="基本電力操作">基本電力操作</h3>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager" title="/en-US/docs/Web/API/PowerManager"><code>PowerManager</code></a> 介面可管理基本的電力操作情形。</p>
-<h4 id="通用電力操作">通用電力操作</h4>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.powerOff" title="/en-US/docs/Web/API/PowerManager.powerOff"><code>powerOff()</code></a> 函式可關閉裝置;<a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.reboot" title="/en-US/docs/Web/API/PowerManager.reboot"><code>reboot()</code></a> 函式則可重新開機。</p>
-<pre class="brush: js">navigator.mozPower.powerOff();</pre>
-<h4 id="螢幕電力操作">螢幕電力操作</h4>
-<p>透過可讀寫的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.screenEnabled" title="/en-US/docs/Web/API/PowerManager.screenEnabled"><code>screenEnabled</code></a> 屬性即可開/關螢幕畫面;而存取/更改畫面亮度也能達到相同效果。如可讀寫的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.screenBrightness" title="/en-US/docs/Web/API/PowerManager.screenBrightness"><code>screenBrightness</code></a> (用以定義螢幕背光的亮度) 就能變更畫面亮度,可調整為 0 (全暗) 到 1 (全亮)。</p>
-<pre class="brush: js">// It doesn't make sense to change the brightness if the screen is off
-if (navigator.mozPower.screenEnabled) {
- navigator.mozPower.screenBrightness = 0.5;
-}</pre>
-<h4 id="CPU_電力操作">CPU 電力操作</h4>
-<p>目前並無法直接關閉 CPU。但可進一步設定 <a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.cpuSleepAllowed" title="/en-US/docs/Web/API/PowerManager.cpuSleepAllowed"><code>cpuSleepAllowed</code></a>,以決定關閉畫面之時是否要關閉 CPU。在畫面關閉 (<code>true</code>) 或開啟 (<code>false</code>) 時,此函式可定義是否讓裝置的 CPU 休眠。若畫面處於開啟狀態 (<code>false</code>),則該函式將避免裝置進入靜止狀態。</p>
-<h3 id="進階電力操作">進階電力操作</h3>
-<p>若管理電力的 Apps 可確實接收到第三方 Apps 的需求通知,就能達到更好的電力管理效果。舉例來說,在使用者欣賞影片時,當然不希望系統在幾分鐘之後自動關閉畫面。</p>
-<h4 id="請求_Wake_locks">請求 Wake locks</h4>
-<p>任何 Apps 均可請求 Wake locks,避免裝置切斷 Apps 本身所需資源的電力。可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.requestWakeLock" title="/en-US/docs/Web/API/window.navigator.requestWakeLock"><code>navigator.requestWakeLock()</code></a> 函式請求 Wake locks。</p>
-<p>特定資源所要求的 Wake locks,可能會因不同的理由而取消。舉例來說,行動裝置的電力管理功能,可能會在閒置一段時間之後決定關閉畫面,進而達到省電目的。在關閉相關資源之前,處理資源的 Apps 往往會檢查相關資源的鎖定狀態。再舉個例子,某個頁面可能持續 <code>screen </code>上的鎖定狀態,以避免畫面關閉或螢幕保護程式運作。</p>
-<p>依預設值,Firefox OS 允許 <code>screen、cpu、wifi</code> 資源。但只要是處理資源的任何 App 均可定義資源名稱,並針對該鎖定功能設定規則。舉例來說,資源管理功能可無視 Apps 對 <code>screen</code> 所進行的 Wake locks,讓 Apps 無法插手鎖定狀態。</p>
-<pre class="brush: js">var lock = navigator.requestWakeLock('screen');</pre>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.requestWakeLock" title="/en-US/docs/Web/API/window.navigator.requestWakeLock"><code>requestWakeLock</code></a> 函式所回傳的物件將包含 <code>topic</code> 屬性,代表目前要鎖定的資源。而 <code>unlock()</code> 函式可供手動解鎖。另請注意,若 App 進入關閉狀態 (真的關閉,而不是閒置),就會自動送出該 App 需要的所有鎖定請求。</p>
-<h4 id="處理_Wake_locks">處理 Wake locks</h4>
-<p>只要是可管理鎖定的 Certified Apps,均可得知鎖定狀態的變化。其實任何管理電力的 Apps 均應監聽 <code>screen</code> 與 <code>cpu 鎖定狀態的變化。透過</code> <a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.addWakeLockListener" title="/en-US/docs/Web/API/PowerManager.addWakeLockListener"><code>PowerManager.addWakeLockListener()</code></a> 函式即可達到此目的。另可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.removeWakeLockListener" title="/en-US/docs/Web/API/PowerManager.removeWakeLockListener"><code>PowerManager.removeWakeLockListener()</code></a> 函式而停止監聽鎖定請求。</p>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/PowerManager.addWakeLockListener" title="/en-US/docs/Web/API/PowerManager.addWakeLockListener"><code>addWakeLockListener</code></a> 函式所接收的回呼 (Callback) 需具備 2 組參數。第一組字串代表應處理的資源 (本範例為 <code>screen</code> 或 <code>cpu</code>);第二組字串則代表鎖定的狀態。</p>
-<p>鎖定可分為 3 種狀態:</p>
-<dl>
- <dt>
- <code>unlocked</code></dt>
- <dd>
- 沒有任何 App 針對既有資源持續 Wake lock。</dd>
- <dt>
- <code>locked-foreground</code></dt>
- <dd>
- 至少 1 個 App 持續 Wake lock,且於前景顯示該 App。</dd>
- <dt>
- <code>locked-background</code></dt>
- <dd>
- 至少 1 個 App 持續 Wake lock,但所有 Apps 均在背景而未顯示。</dd>
-</dl>
-<pre class="brush: js">// This is used to keep track of the last change on the lock state
-var screenTimeout;
-
-// A reference to the Power Manager
-var power = window.navigator.mozPower;
-
-// Here are the actions to handle based on the lock state
-var powerAction = {
-
- // If there is no lock at all, we will suspend the device:
- // * Turn the screen off
- // * Allow the cpu to shut down
- unlocked: function suspendDevice() {
- power.cpuSleepAllowed = true;
- power.screenEnabled = false;
- },
-
- // If there is a lock but the applications requesting it
- // are all in the background, we just turn the screen off
- 'locked-background': function shutOffOnlyScreen() {
- power.cpuSleepAllowed = false;
- power.screenEnabled = false;
- },
-
- // At last, if there is an active application that requests a lock,
- // actually there is nothing to do. That's the whole point.
-}
-
-function screenLockListener(topic, state) {
- // If the lock is not about the screen, there is nothing to do.
- if ('screen' !== topic) return;
-
- // Each time the lock changes state, we stop any pending power management operations
- window.clearTimeout(screenTimeout);
-
- // If there is an action defined for the given state
- if (powerAction[state]) {
- // We delay that action by 3s
- screenTimeout = window.setTimeout(powerAction[state], 3000);
- }
-}
-
-// We make sure our power management application is listening for any change on locks.
-power.addWakeLockListener(screenLockListener);</pre>
-<h2 id="Specification" name="Specification">規格</h2>
-<p>尚無任何規格。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{ domxref("window.navigator.mozPower","navigator.mozPower") }}</li>
- <li>{{ domxref("PowerManager") }}</li>
- <li>{{ domxref("window.navigator.requestWakeLock()","navigator.requestWakeLock()") }}</li>
-</ul>
diff --git a/files/zh-tw/webapi/settings/index.html b/files/zh-tw/webapi/settings/index.html
deleted file mode 100644
index 2e5198a2a0..0000000000
--- a/files/zh-tw/webapi/settings/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Settings API
-slug: WebAPI/Settings
-translation_of: Archive/B2G_OS/API/Settings_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Settings API 可存取、變更、監聽裝置設定的任何變化。裝置的設定選項可能帶有高敏感度的資訊並可能危害整個系統,因此僅限 Certified Apps 可使用此 API。</p>
-<h2 id="使用設定選項">使用設定選項</h2>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSettings" title="/en-US/docs/Web/API/window.navigator.mozSettings"><code>naviator.mozSettings</code></a> 物件 (即 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsManager" title="/en-US/docs/Web/API/SettingsManager"><code>SettingsManager</code></a> 介面的實例),即可操作設定選項。</p>
-<h3 id="存取設定選項">存取設定選項</h3>
-<p>若要存取設定選項,必須先以 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsManager.createLock" title="/en-US/docs/Web/API/SettingsManager.createLock"><code>createLock()</code></a> 函式建立鎖定機制。因為可能有多個 Apps 同時存取並更改設定,所以必須確保各個 App 不會受到其他 Apps 的影響。而建立鎖定機制之後,各個 App 均可於特定時間單獨存取設定。</p>
-<p>在 Apps 擁有鎖定機制後,即可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsLock.get" title="/en-US/docs/Web/API/SettingsLock.get"><code>get()</code></a> 函式讀取任何設定。此函式將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理成功或失敗的作業。不論任何狀況下,只要完成了成功/失敗的請求,均會自動解鎖之後才讓其他 Apps 存取設定。若有必要,也可透過鎖定機制的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsLock.closed" title="/en-US/docs/Web/API/SettingsLock.closed"><code>closed</code></a> 屬性,得知是否已解開鎖定。</p>
-<p>在下列程式碼片段中,則建立了鎖定並請求了系統 <code>wifi.enabled</code> 設定的數值。另呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/console.log" title="Outputs a message to the Web Console."><code>console.log()</code></a> 即可於主控台上顯示輸出的結果:</p>
-<pre class="brush: js">var lock = navigator.mozSettings.createLock();
-var setting = lock.get('wifi.enabled');
-
-setting.onsuccess = function () {
- console.log('wifi.enabled: ' + setting.result);
-}
-
-setting.onerror = function () {
- console.warn('An error occured: ' + setting.error);
-}
-</pre>
-<h3 id="更改設定">更改設定</h3>
-<p>設定值的更改程序與存取程序完全相同,但必須呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsLock.set" title="/en-US/docs/Web/API/SettingsLock.set"><code>set()</code></a> 函式,此函式將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,讓你知道設定更改請求是否成功。</p>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsLock.set" title="/en-US/docs/Web/API/SettingsLock.set"><code>set()</code></a> 函式會將物件作為自己的輸入參數。此物件為鍵值/數值的集合,而各個鍵值即代表 1 組設定的名稱,對應的數值又是設定的新數值。可參閱 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list">Firefox OS 設定清單</a>以進一步了解 (另請注意,不同裝置所使用的設定亦將有所差異)。</p>
-<p>這裡可看到建立的 1 組鎖定,並於主控台上顯示 <code>wifi.enabled</code> 設定的結果。</p>
-<pre class="brush: js">var lock = navigator.mozSettings.createLock();
-var result = lock.set({
- 'wifi.enabled': true
-});
-
-result.onsuccess = function () {
- console.log("the settings has been changed");
-}
-
-result.onerror = function () {
- console.log("An error occure, the settings remain unchanged");
-}</pre>
-<h3 id="監聽設定中的變化">監聽設定中的變化</h3>
-<p>App 除了讀取、更改設定之外,亦可監聽發生過的任何變更。只要變更過設定,系統隨即觸發 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/settingchange" title="/en-US/docs/Web/Reference/Events/settingchange">settingchange</a> 事件。此事件為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozSettingEvent" title="/en-US/docs/Web/API/MozSettingEvent"><code>MozSettingEvent</code></a>。此常態事件又可透過 2 項額外屬性進一步延伸:</p>
-<ul>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozSettingEvent.settingName" title="/en-US/docs/Web/API/MozSettingEvent.settingName"><code>settingName</code></a> 可提供變更過的設定名稱。</li>
- <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozSettingEvent.settingValue" title="/en-US/docs/Web/API/MozSettingEvent.settingValue"><code>settingValue</code></a> 可提供設定的新值。</li>
-</ul>
-<p>只要設定 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsManager.onsettingchange" title="/en-US/docs/Web/API/SettingsManager.onsettingchange"><code>SettingsManager.onsettingchange</code></a> 以指定 1 組回呼 (Callback,只要設定改變就會呼叫該回呼) 即可監聽 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/settingchange" title="/en-US/docs/Web/Reference/Events/settingchange">settingchange</a> 事件。如果只想監聽某一特定設定的變化,則可呼叫如下的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/SettingsManager.addObserver" title="/en-US/docs/Web/API/SettingsManager.addObserver"><code>SettingsManager.addObserver()</code></a> 函式:</p>
-<pre class="brush: js">function handleWifi(event) {
- if (event.settingValue === true) {
- console.log("Hey! I can download that crazy heavy 4GB file")
- } else {
- console.log("Oh! I should stop downloading that crazy 4GB file")
- }
-}
-
-navigator.mozSettings.addObserver('wifi.enabled', handleWifi);
-</pre>
-<p> </p>
-<h2 id="規格">規格</h2>
-<p>目前仍未有任何規格。可參與 W3C 於 <a href="http://www.w3.org/2012/sysapps/" title="http://www.w3.org/2012/sysapps/">System Applications Working Group</a> 中對此API 的討論。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("window.navigator.mozSettings","naviator.mozSettings")}}</li>
- <li>{{domxref("SettingsManager")}}</li>
- <li>{{domxref("SettingsLock")}}</li>
- <li>{{domxref("MozSettingEvent")}}</li>
-</ul>
diff --git a/files/zh-tw/webapi/simple_push/index.html b/files/zh-tw/webapi/simple_push/index.html
deleted file mode 100644
index da0015bd11..0000000000
--- a/files/zh-tw/webapi/simple_push/index.html
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: Simple Push API
-slug: WebAPI/Simple_Push
-translation_of: Archive/B2G_OS/API/Simple_Push_API
----
-<p>{{ SeeCompatTable() }}</p>
-<p><a href="https://wiki.mozilla.org/WebAPI/SimplePush" title="https://wiki.mozilla.org/WebAPI/SimplePush">Simple Push API</a> 也是所謂的 Push Notification API,可在接收通知時喚醒 App。多個 App 可請求「共用其伺服器」的單一網址,以便傳送 App 的後續版本號碼。另外亦可作為同步化機制,從第三方伺服器取得最新資料。</p>
-<p>SimplePush API 可透過 push 屬性 (來自於 <a href="https://developer.mozilla.org/en-US/docs/Web/API/PushManager" title="/en-US/docs/Web/API/PushManager">PushManager</a> 專案) 而擴充 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator" title="/en-US/docs/Web/API/window.navigator">window.navigator</a>,並添增新的事件給使用者,以監控推播 (Push) 的狀態。</p>
-<h2 id="範例">範例</h2>
-<p>在本範例中,我們將依照下列步驟而設定完整的推播:</p>
-<ol>
- <li>將 <code>push</code> <code>的授權</code>新增至 manifest 檔案中</li>
- <li>呼叫 <code>push.register()</code> 以請求終端 (Endpoint)</li>
- <li>將終端傳送到自己的伺服器</li>
- <li>針對 App 之內的推播通知,新增訊息處理器 (Message handler)</li>
- <li>從自己的伺服器中送出通知</li>
-</ol>
-<h3 id="修改_manifest_檔案">修改 manifest 檔案</h3>
-<p>另外需修改 manifest 檔案中的 2 個地方:</p>
-<ol>
- <li><a href="https://developer.mozilla.org/docs/Web/Apps/Manifest#messages" title="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest?redirectlocale=en-US&amp;redirectslug=Apps%2FManifest#messages">messages 欄位</a>:新增<code> push</code> 與 <code>push-register</code> 訊息。</li>
- <li><a href="https://developer.mozilla.org/docs/Web/Apps/Manifest#permissions" title="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest?redirectlocale=en-US&amp;redirectslug=Apps%2FManifest#permissions">permissions 欄位</a>:新增想要接收推播通知的 App。</li>
-</ol>
-<pre><span class="s2">"messages"</span><span class="o">:</span> <span class="cp">[</span>
- <span class="p">{</span> <span class="s2">"push"</span><span class="p">:</span> <span class="s2">"/index.html"</span><span class="p">},</span>
- <span class="p">{</span> <span class="s2">"push-register"</span><span class="p">:</span> <span class="s2">"/index.html"</span><span class="p">}</span>
-<span class="cp">]</span><span class="o">,</span>
-<span class="s2">"permissions"</span><span class="o">:</span> <span class="p">{</span>
- <span class="s2">"push"</span><span class="o">:</span> <span class="err">{
- </span>"description": "Required for be updated with new goals in soccer matchs",<span class="err">
-</span><span class="p"> }</span>
-<span class="err">}</span></pre>
-<h3 id="呼叫_domxref(PushManager.register)_以請求終端">呼叫 {{domxref("PushManager.register")}} 以請求終端</h3>
-<p>一旦你認為該是請求終端的時候 (例如使用者登入,或有人想看場棒球賽的時候),即可呼叫此程式碼。</p>
-<pre><span class="k">if</span> <span class="p">(</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">push</span><span class="p">)</span> <span class="p">{</span>
- <span class="kd">var</span> <span class="nx">req</span> <span class="o">=</span> <span class="nx">navigator</span><span class="p">.</span><span class="nx">push</span><span class="p">.</span><span class="nx">register</span><span class="p">();</span>
-
- <span class="nx">req</span><span class="p">.</span><span class="brush: js">onsuccess</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="kd">var</span> <span class="nx">endpoint</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">result</span><span class="p">;</span>
- <span class="nx">debug</span><span class="p">(</span><span class="s2">"New endpoint: "</span> <span class="o">+</span> <span class="nx">endpoint</span> <span class="p">);</span>
- <span class="p">}</span>
-
- <span class="nx">req</span><span class="p">.</span><span class="nx">onerror</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="nx">debug</span><span class="p">(</span><span class="s2">"Error getting a new endpoint: "</span> <span class="o">+</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">e</span><span class="p">));</span>
- <span class="p">}</span>
-<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="c1">// No push on the DOM</span>
-<span class="p">}</span></pre>
-<h3 id="將終端傳送至自己的伺服器">將終端傳送至自己的伺服器</h3>
-<p>一旦獲得終端之後,就必須將之傳送至自己的 App 伺服器上。現有很多傳送終端的方法,如寄送電子郵件,或透過 <code>POST、</code><code>PUT、</code><code>GET</code><code> </code>均可傳送終端。我們建議以「來自於 App 的使用者資料」來儲存終端,例如 cookie、使用者名稱,或任何你用來識別終端使用者的資料均可。</p>
-<p>但如果你正把資料傳送到伺服器,我們還是建議下列要點:</p>
-<ol>
- <li>以 XMLHttpRequest 傳送。</li>
- <li>最好使用 HTTPS。如果某人中斷了你的終端,即可開始將通知傳送到自己的 App。</li>
- <li>使用如 cookie 的機制,可比對使用者 (或 App 安裝作業) 與終端。</li>
-</ol>
-<h3 id="新增_push_訊息處理器">新增 <code>push</code> 訊息處理器</h3>
-<p>一旦設定終端完畢,就可讓 App 開始監聽推播訊息。此功能亦可註冊在主要的 <code>index.html</code> 檔案,或註冊在自己的 <code>main.js</code> 指令碼中;也能註冊在特殊的 <code>push-message.html</code> 檔案 (特殊之處在於該檔案之內僅有指令碼) 上。這功能之所以方便的原因在於:如果接收到 <code>push</code> 訊息且 App 處於關閉狀態時,則該 App 只會載入一小部分的 HTML/JavaScript 程式碼,而且你也可以決定是否要完全開啟 App,或在背景中執行某些作業即可。</p>
-<pre><span class="k">if</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">mozSetMessageHandler</span><span class="p">)</span> <span class="p">{</span>
- <span class="nb">window</span><span class="p">.</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">mozSetMessageHandler</span><span class="p">(</span><span class="s1">'push'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="nx">debug</span><span class="p">(</span><span class="s1">'My endpoint is '</span> <span class="o">+</span> <span class="nx">e</span><span class="p">.</span><span class="nx">pushEndpoint</span><span class="p">);</span>
- <span class="nx">debug</span><span class="p">(</span><span class="s1">'My new version is '</span> <span class="o">+</span> <span class="nx">e</span><span class="p">.</span><span class="nx">version</span><span class="p">);</span>
- <span class="c1">//Remember that you can handle here if you have more than</span>
- <span class="c1">//one pushEndpoint</span>
- <span class="k">if</span> <span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">pushEndpoint</span> <span class="o">===</span> <span class="nx">emailEndpoint</span><span class="p">)</span> <span class="p">{</span>
- <span class="nx">emailHandler</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">version</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">pushEndpoint</span> <span class="o">===</span> <span class="nx">imEndpoint</span><span class="p">)</span> <span class="p">{</span>
- <span class="nx">imHandler</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">version</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="p">});</span>
-<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="c1">// No message handler</span>
-<span class="p">}</span></pre>
-<h3 id="新增_push-register_訊息處理器">新增 <code>push-register</code> 訊息處理器</h3>
-<div class="note">
- <p>請確實添增此處理器,並檢查是否正常運作。只要在產生 <code>push-register </code>訊息當下,你並未重新註冊自己的終端,則之後將<strong>無法</strong>繼續接收其他推播通知。</p>
-</div>
-<p>一旦裝置變更了自己的 UAID (可能是因為推播伺服器變更,或當機之後需恢復作業,或其他更多情形),就會將 <code>push-register</code> 訊息傳送至所有 App。也就是說,因為你之前的終端均已無效,所以你<strong>必須</strong>再次重新註冊所有的終端。</p>
-<pre><span class="k">if</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">mozSetMessageHandler</span><span class="p">)</span> <span class="p">{</span>
- <span class="nb">window</span><span class="p">.</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">mozSetMessageHandler</span><span class="p">(</span><span class="s1">'push-register'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
- console.log<span class="p">(</span><span class="s1">'push-register received, I need to register my endpoint(s) again!'</span><span class="p">);</span>
-
-<span class="c1"> <span class="kd">var</span> <span class="nx">req</span> <span class="o">=</span> <span class="nx">navigator</span><span class="p">.</span><span class="nx">push</span><span class="p">.</span><span class="nx">register</span><span class="p">();</span>
- <span class="nx"> req</span><span class="p">.</span><span class="brush: js">onsuccess</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="kd"> var</span> <span class="nx">endpoint</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">result</span><span class="p">;</span>
- console.log<span class="p">(</span><span class="s2">"New endpoint: "</span> <span class="o">+</span> <span class="nx">endpoint</span> <span class="p">);
- localStorage.endpoint = endpoint;</span>
- <span class="p">}</span>
-
- <span class="nx"> req</span><span class="p">.</span><span class="nx">onerror</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
- console.error<span class="p">(</span><span class="s2">"Error getting a new endpoint: "</span> <span class="o">+</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">e</span><span class="p">));</span>
- <span class="p"> }</span></span>
- <span class="p">});</span>
-<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="c1">// No message handler</span>
-<span class="p">}</span></pre>
-<h3 id="傳送通知">傳送通知</h3>
-<p>一旦你的伺服器擁有 <code>endpoint</code> 之後,「傳送通知」就如同「將 <code>HTTP PUT</code> 的請求 (其內容具備 <code>version=&lt;version&gt;</code><code>) </code>傳送至終端」一樣簡單。先假想某個終端具備下列網址:</p>
-<p><code>https://push.src.openwebdevice.com/v1/notify/abcdef01234567890abcdefabcdef01234567890abcdef</code></p>
-<p>而且是版本 5:</p>
-<p><code>version=5</code></p>
-<p>搭配 curl:</p>
-<p><code>curl -X PUT -d "version=5" https://push.src.openwebdevice.com/v1/notify/abcdef01234567890abcdefabcdef01234567890abcdef</code></p>
-<p>如果伺服器正確運作,所取得的反應內容就會包含 <code>200 Status (OK)</code> 與 <code>{}</code> 各 1 組作為內容 (Body)。如果發生錯誤,則會送出有效的 JSON 以解釋該錯誤。</p>
-<p>另請注意,版號應該為逐漸遞增的整數。如果新版本的版號,小於裝置/伺服器上已儲存的版本,則 App <strong>不會</strong>獲得新的通知。</p>
-<h2 id="規格">規格</h2>
-<p>{{page("/en-US/docs/Web/API/PushManager","Specifications")}}</p>
-<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
-<p>{{page("/en-US/docs/Web/API/PushManager","Browser_compatibility")}}</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("PushManager")}}</li>
- <li>{{domxref("window.navigator.push","navigator.push")}}</li>
- <li><a href="https://github.com/frsela/pushJSlibrary" title="https://github.com/frsela/pushJSlibrary">pushJSLibrary, a push shim for browsers that do not implement the API</a></li>
-</ul>
diff --git a/files/zh-tw/webapi/tcp_socket/index.html b/files/zh-tw/webapi/tcp_socket/index.html
deleted file mode 100644
index ae0c75e434..0000000000
--- a/files/zh-tw/webapi/tcp_socket/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: TCP Socket
-slug: WebAPI/TCP_Socket
-translation_of: Archive/B2G_OS/API/TPC_Socket_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('privileged') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>TCPSocket API 可開啟並使用 TCP 連線,亦可讓 Apps 開發者基於 TCP 架構,建構相關通訊協定 (如 IMAP、IRC、POP、HTTP等);甚至建立自己所需的協定以滿足特殊需求。</p>
-<h2 id="概述">概述</h2>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozTCPSocket" title="Returns a TCPSocket object you can use to open other sockets."><code>navigator.mozTCPSocket</code></a> 屬性 (本身為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket" title="Provides access to a raw TCP socket API in JavaScript."><code>TCPSocket</code></a> 物件) 即可存取此 API。</p>
-<h3 id="開啟_Socket">開啟 Socket</h3>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.open" title="The open method is used to open a TCP connection to a given server on a given port."><code>TCPSocket.open()</code></a> 函式即可開啟 Socket。該函式共有 3 組參數:</p>
-<ol>
- <li>以 1 組字串代表所要連線的伺服器主機名稱 (亦可為該伺服器的原始 IP 位址)。</li>
- <li>以 1 組數字代表 Socket 所要使用的 TCP 通訊埠 (某些協定擁有標準埠,如 HTTP 為 80、SSL 為 447、SMTP 為 25 等。若為 1024 以上的通訊埠數字,則不會用於任何特定的通訊協定,也就是說可用於任何用途)。</li>
- <li>最後是 1 組選填的物件,內含最多 2 個選項。<br>
- i.) 名為 <code>useSSL</code> 的 Boolean 值,代表 Socket 必須使用 SSL,預設值為 <code>false。</code><br>
- ii.) 名為 <code>binaryType</code> 的字串,可指定 Apps 透過 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/data" title="/en-US/docs/Web/Reference/Events/data">data</a> 事件所取得的資料型態,可為 <code>string</code> 或 <code>arraybuffer</code> 值。預設值為 <code>string</code>。</li>
-</ol>
-<pre class="brush: js">var socket = navigator.mozTCPSocket.open('localhost', 80);</pre>
-<div class="note">
- <p><strong>注意:</strong>僅限 Certified Apps 可使用 1024 以下的通訊埠。</p>
-</div>
-<h3 id="傳送資料">傳送資料</h3>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.send" title="The send method is used to buffer data to be sent to the server."><code>TCPSocket.send()</code></a> 函式將透過 1 組字串,或 1 組 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Typed_arrays/Uint8Array" title="/en-US/docs/JavaScript/Typed_arrays/Uint8Array">Uint8Array</a> 物件而傳送資料。另請注意,由於 TCP Socket 僅處理二進制資料,因此使用 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Typed_arrays/Uint8Array" title="/en-US/docs/JavaScript/Typed_arrays/Uint8Array">Uint8Array</a> 可達較高的安全性。</p>
-<p>對 TCP 通訊協定而言,單次傳輸量最好以 64kb 為上限而能達到最佳效果。只要緩衝的資料不到 64kb,送至 <a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.send" title="The send method is used to buffer data to be sent to the server."><code>send</code></a> 函式的呼叫即會回傳 <code>true。一旦緩衝區滿載</code>,則函式隨即回傳 <code>false</code>,進而要求該 App 暫停並清空緩衝區。每次只要清空緩衝區就會發出 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/drain" title="/en-US/docs/Web/Reference/Events/drain">drain</a> 事件,讓該 App 針對此事件再度開始傳送資料。</p>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.bufferedAmount" title="The bufferedAmount represents the number of bytes which have previously been buffered by calls to the send() method on this socket."><code>TCPSocket.bufferedAmount</code></a> 屬性,即可得知目前已緩衝的實際資料量。</p>
-<pre class="brush: js">function getData() {
- var data;
-
- // do stuff that will retrieve data
-
- return data;
-}
-
-function pushData() {
- var data;
-
- do {
- data = getData();
- } while (data != null &amp;&amp; socket.send(data));
-}
-
-// Each time the buffer is flushed
-// we try to send data again.
-socket.ondrain = pushData;
-
-// Start sending data.
-pushData();
-</pre>
-<h3 id="取得資料">取得資料</h3>
-<p>只要 Socket 獲得主機所傳來的資料,就會發出 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/data" title="/en-US/docs/Web/Reference/Events/data">data</a> 事件。App 可透過此事件而存取來自於 Socket 的資料。當 Socket 為開啟狀態時,則資料型態將根據已設定的選項而有所不同 (可參閱前述的第三種參數)。</p>
-<pre class="brush: js">socket.ondata = function (event) {
- if (typeof event.data === 'string') {
- console.log('Get a string: ' + event.data);
- } else {
- console.log('Get a Uint8Array');
- }
-}</pre>
-<p>在送出所需的 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/data" title="/en-US/docs/Web/Reference/Events/data">data</a> 事件之後,有時也必須暫停後續資料流入。此時呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.suspend" title="The suspend method pauses reading incoming data and prevents the data event from being triggered until the resume() method is called."><code>TCPSocket.suspend()</code></a> 函式,即可暫停讀取後續資料並停止發送 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/data" title="/en-US/docs/Web/Reference/Events/data">data</a>。若要再次開始讀取資料並發送事件,則可呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.resume" title="The resume method resumes reading incoming data and allows the data event to be triggered again."><code>TCPSocket.resume()</code></a> 函式。</p>
-<h3 id="關閉_Socket">關閉 Socket</h3>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket.close" title="The close method cleanly closes the connection."><code>TCPSocket.close()</code></a> 可關閉 Socket。</p>
-<h2 id="標準">標準</h2>
-<p>尚未有任何規格。若要進一步了解此 API,可至 W3C 的 <a href="http://www.w3.org/2012/sysapps/raw-sockets/" title="http://www.w3.org/2012/sysapps/raw-sockets/">Raw Sockets</a> 提案之下,參閱 <a href="http://www.w3.org/2012/sysapps/" title="http://www.w3.org/2012/sysapps/">System Applications Working Group</a> 的相關討論。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("TCPSocket")}}</li>
-</ul>
diff --git a/files/zh-tw/webapi/time_and_clock/index.html b/files/zh-tw/webapi/time_and_clock/index.html
deleted file mode 100644
index aa772cf083..0000000000
--- a/files/zh-tw/webapi/time_and_clock/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Time and Clock API
-slug: WebAPI/Time_and_Clock
-translation_of: Archive/B2G_OS/API/Time_and_Clock_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>Time/Clock API 可輕鬆更改系統的時間。</p>
-<h2 id="概述">概述</h2>
-<p>此 API 可被存取,且回傳的物件可揭露單一函式。</p>
-<p>而該函式可用以實際更改系統時間,並接受某個數字或 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="/en-US/docs/JavaScript/Reference/Global_Objects/Date">Date</a> 物件作為參數。在提供了數字之後,就會開始 1970 年 1 月 1 日 (UTC 時區) 起算的時間,並以毫秒 (Millisecond) 計算。</p>
-<p>每次只要更改了時間,就會啟動事件。而只要透過函式 (使用 <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/moztimechange" title="/en-US/docs/Web/Reference/Events/moztimechange">moztimechange</a> 事件名稱),或將事件處理器 (Event Handler) 附加至屬性,即可在 <code>window</code> 物件層級擷取到該事件。</p>
-<div class="note">
- <p><strong>注意:</strong>如果你要更改自己裝置的時區,就必須使用 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Settings" title="https://developer.mozilla.org/en-US/docs/WebAPI/Settings">Settings API</a>。</p>
-</div>
-<h2 id="範例">範例</h2>
-<pre class="brush: js">function setTime(time) {
- navigator.mozTime.set(time);
-}
-
-window.addEventListener('moztimechange', function () {
- console.log('Time has changed');
-});
-
-setTime(new Date());
-
-</pre>
-<h2 id="規格">規格</h2>
-<p>不屬於任何規格</p>
diff --git a/files/zh-tw/webapi/web_activities/index.html b/files/zh-tw/webapi/web_activities/index.html
deleted file mode 100644
index 6c71c46bd8..0000000000
--- a/files/zh-tw/webapi/web_activities/index.html
+++ /dev/null
@@ -1,415 +0,0 @@
----
-title: Web Activities
-slug: WebAPI/Web_Activities
-translation_of: Archive/B2G_OS/API/Web_Activities
----
-<p>{{ non-standard_header() }}</p>
-<p>{{B2GOnlyHeader2('installed')}}</p>
-<h2 id="摘要">摘要</h2>
-<p>Web Activities 即定義「App 將 Activity 委託 (Delegate) 予另一個 App (往往是由使用者所選擇)」的方法。</p>
-<p>Web Activities 目前僅能用於 Firefox OS 上,而完整規格可<a href="https://wiki.mozilla.org/WebAPI/WebActivities" title="https://wiki.mozilla.org/WebAPI/WebActivities">參閱 WikiMo</a>。</p>
-<h2 id="Activity">Activity</h2>
-<p>所謂「Activity」就是使用者想做的事情,如選取影像、傳送電子郵件等。App 開發者可能會定義某個 App 去處理該 Activity,或定義某個 App 委託予 Activity。</p>
-<h2 id="將_App_註冊為_Activity_handler">將 App 註冊為 Activity handler</h2>
-<p>App 開發者可建構 App 以處理單或多個 Activity。也就是說,這個 App 可經由其他 App 呼叫之後,而執行 Activity 所定義的某些特定動作。舉例來說,我們可能用其他 App 呼叫相片管理 App,進而選取相片。若 App 是作為 Activity Handler,就會成為其他 App 作業流程的一部分。</p>
-<h3 id="註冊_Activity">註冊 Activity</h3>
-<p>如果要將 App 註冊為 Activity Handler,目前唯一方法就是到 App 的 manifest 檔案中宣告。</p>
-<div class="note">
- <p><strong>注意:</strong>任何 App 均可針對現有的 Activity,將本身註冊為 Activity Handler;亦可建立自己的 Activity。不論是哪種情況,對 manifest 檔案的處理方式都相同。但若要建立新的 Activity,最好是在新 Activity 名稱的前方加上網址 (例如 <em>example.org/myActivity </em>或 <em>org.example.myActivity</em>),以避免發生衝突。</p>
-</div>
-<h4 id="App_manifest_(亦所謂的宣告註冊)">App manifest (亦所謂的宣告註冊)</h4>
-<p>如同下列範例所示,必須透過 <a href="https://developer.mozilla.org/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">App 的 manifest 檔案</a>,宣告 App 將會處理 Activity:</p>
-<pre class="brush: js">{
- // Other App Manifest related stuff
-
- // Activity registration
- "activities": {
-
- // The name of the activity to handle (here "pick")
- "pick": {
- "href": "./pick.html",
- "disposition": "inline",
- "filters": {
- "type": ["image/*","image/jpeg","image/png"]
- },
- "returnValue": true
- }
- }
-}
-</pre>
-<h4 id="動態註冊">動態註冊</h4>
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator" title="/en-US/docs/Web/API/window.navigator"><code>navigator</code></a> 物件,即可讓 App 動態的註冊自己。但目前尚未提供此 API。可留意 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775181">bug 775181</a> 以持續追蹤此 API。</p>
-<h4 id="Activity_Handler_說明">Activity Handler 說明</h4>
-<dl>
- <dt>
- <code>href</code></dt>
- <dd>
- 當其他 App 或網頁所啟動的 Activity,同樣也受到此 App 所支援時,則只要選定此 App 執行 Activity,則 <code>href 將指定所應開啟的網頁。另可透過 disposition</code> 屬性指定網頁的開啟方式。
- <div class="note">
- <strong>注意:</strong>此頁面的 URL 將受到<a href="https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript" title="/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript">同源規範 (Same-origin policy)</a> 的限制。</div>
- </dd>
-</dl>
-<dl>
- <dt>
- <code>disposition</code> {{optional_inline()}}</dt>
-</dl>
-<dl>
- <dd>
- 在開始 Activity 時,指定「<code>href</code> 所指定的頁面」呈現方式。其值必為下列之一 (若略過不設定,則預設為 <code>window</code>):
- <ul>
- <li><strong><code>window</code></strong> ─ 只要是處理 Activity 的頁面,均將以新視窗開啟之;若在行動裝置上,則是以此畫面取代「請求該 Activity 的原始 App」。頁面必須針對自己所支援的各個 Activity,呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>navigator.mozSetMessageHandler()</code></a>,再執行「接收到訊息」的Activity。</li>
- <li><strong><code>inline</code></strong> ─ 將以覆蓋原頁面的方式,開啟「處理 Activity 的頁面」;若在行動裝置上,則會在「請求該 Activity 的原始 App」上彈出框。如果 <code>disposition</code> 同樣是 <code>window</code>,則後續動作將一模一樣。</li>
- </ul>
- </dd>
-</dl>
-<dl>
- <dt>
- <code>returnValue</code> {{optional_inline()}}</dt>
- <dd>
- 表示 Activity 是否將回傳數值。如果 App 不回傳數值,則一旦選定 App,UA 隨即傳送
- <i>
- success</i>
- 事件。如果要回傳數值,那只要 Activity 成功,Activity Handler 會呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult"><code>MozActivityRequestHandler.postResult()</code></a>;反之則呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError"><code>MozActivityRequestHandler.postError()</code></a>。此處 Activity Handler 中,將於 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>mozSetMessageHandler</code></a> 指定第一引數的類型,其實就是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler" title="/en-US/docs/Web/API/MozActivityRequestHandler"><code>MozActivityRequestHandler</code></a>。在事件處理器呼叫了 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult"><code>postResult</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError"><code>postError</code></a> 之後,將分別觸發 <em>success</em> 或 <em>error</em> 事件。</dd>
-</dl>
-<dl>
- <dt>
- <code>filters</code> {{optional_inline()}}</dt>
- <dd>
- 此 Dictionary 收錄了「用以指定篩選器 (Filter)」的各個屬性。在確認 App 是否適合處理目前 Activity 時,就會套用這些篩選器。篩選器名稱可為任何形式的文字,但需對應 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions" title="/en-US/docs/Web/API/MozActivityOptions"><code>MozActivityOptions</code></a> 的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>data</code></a> 屬性名稱。篩選器的值可能為基本數值 (數字或字串)、基本數值構成的陣列,或篩選器的定義物件。任一 Activity 必須先滿足所有篩選器之後,才會決定是否要處理其他 Activity。</dd>
-</dl>
-<p>根據各個篩選器數值的不同,處理篩選器的方式也有所差異:</p>
-<ul>
- <li>如果篩選器為基本數值,則可選填相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性。但若屬性已存在,則必須與篩選器所具備的數值相同。</li>
- <li>如果篩選器數值為基本數值構成的陣列,則可選填相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性。但若屬性已存在,則必須與篩選器所具備的數值陣列之一相同。</li>
- <li>如果篩選器數值為篩選器定義物件,則相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性只要遵守物件所定義的規範,即可滿足篩選器。篩選器定義物件可為下列屬性:
- <ul>
- <li><code>required</code>:此 Boolean 值將指出對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性,必為存在 (<code>true</code>) 或不存在 (<code>false</code>)。</li>
- <li><code>value</code>: <code>:基本數值或基本數值構成的陣列。相對應的</code> <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值,必須與篩選器中定義的數值之一相同。</li>
- <li><code>min</code><code>:如果所需的數值為數字,則相對應的 </code><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值必須大於或等於該值。</li>
- <li><code>max</code><code>:如果所需的數值為數字,則相對應的 </code><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值必須小於或等於該值。</li>
- <li><code>pattern</code><code>:</code><code>字串形式必須遵照</code> <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions" title="/en-US/docs/JavaScript/Guide/Regular_Expressions">JavaScript 正規表示式 (Regular expression)</a> 語法。相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值必須符合該形式。<strong>從</strong><strong> Firefox OS v1.2 </strong><strong>起即支援此屬性</strong><strong>。</strong></li>
- <li><code>patternFlag</code>:若使用了 <code>pattern</code> 屬性,則必須透過此屬性提供某些額外的正規表示式旗標 (如 <code>i</code> 或 <code>g</code>)。<strong>從</strong><strong> Firefox OS v1.2 </strong><strong>起即支援此屬性</strong><strong>。</strong></li>
- <li><code>regexp</code>:此字串包含的正規表示式內容,均遵循 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions" title="/en-US/docs/JavaScript/Guide/Regular_Expressions">JavaScript 正規表示式</a>的語法。其對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="The data property returns an arbitrary object representing any data passed with the activity."><code>MozActivityOptions.data</code></a> 屬性值必須符合該樣式。與上方的 <code>pattern 欄位</code>相較,<code>regexp可以只針對字串中間的部分值做比對</code>;因此若要比對字串頭與字串尾,就必須使用 metacharacters 的「^」與「$」分別,即可與 <code>patternFlag </code>一樣進行完全比對。<strong>目前僅限</strong><strong> Firefox OS v1.0 </strong><strong>與</strong><strong> v1.1 </strong><strong>支援此屬性。</strong>因此建議同時使用 <code>pattern</code> 與 <code>regexp</code>。</li>
- </ul>
- </li>
-</ul>
-<h2 id="處理_Activity">處理 Activity</h2>
-<p>一旦把 App 宣告為 Activity Handler 之後,我們就必須在實作中處理其他 App 所傳來的 Activity 請求。</p>
-<p>若要處理 Activity,就必須註冊「執行所有必要動作」的函式。先透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>navigator.mozSetMessageHandler()</code></a> 來設定訊息處理器 (Message handler),並特別指派至「<code>activity」訊息</code> (不能為 Activity 的名稱)。接著將傳入 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler" title="/en-US/docs/Web/API/MozActivityRequestHandler"><code>MozActivityRequestHandler</code></a> 物件,以作為 Activity Handler 函式的參數。</p>
-<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) {
- // Do something to handle the activity
-});</pre>
-<p>在 Activity Handler 函式執行動作時,將透過 Activity 請求而檢索 Activity 的相關資訊,並依需要而回傳答案。</p>
-<p>另外,呼叫 Activity 的 App 必須提供某些資料 (請參閱下表)。而透過請求的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.source" title="/en-US/docs/Web/API/MozActivityRequestHandler.source">source</a> 屬性 (亦為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions" title="/en-US/docs/Web/API/MozActivityOptions">MozActivityOptions</a> 物件) 即可取得這些資料。該物件將提供 Activity 呼叫的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.name" title="/en-US/docs/Web/API/MozActivityOptions.name">name</a> 與相關 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data">data</a>。</p>
-<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) {
- var option = activityRequest.source;
-
- if (option.name === "pick") {
- // Do something to handle the activity
- }
-});</pre>
-<p>一旦執行所有動作以處理 Activity 之後,我們就可以呼叫請求的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult">postResult()</a> 函式,針對委託該 Activity 的 App,回傳所需的結果。</p>
-<p>如果發生錯誤,則可呼叫請求的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError">postError()</a> 函式,以回傳該 Activity 的錯誤訊息。</p>
-<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) {
- var option = activityRequest.source;
-
- if (option.name === "pick") {
- // Do something to handle the activity
- ...
-
- // Send back the result
- if (picture) {
- activityRequest.postResult(picture);
- } else {
- activityRequest.postError("Unable to provide a picture");
- }
- }
-});</pre>
-<div class="note">
- <p><strong>注意:</strong>如果並未呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError"><code>postError</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult"><code>postResult()</code></a>,則均應由 UA 送出錯誤訊息;例如使用者離開了 App (關閉桌面上的分頁,或回到行動裝置的首頁) 的情形。</p>
-</div>
-<h2 id="開始_Activity">開始 Activity</h2>
-<p>就 <em>Web Activities</em> 的另一方面來說,就是有 App 會將 Activity 委託予我們的 App。若要執行這種委託作業,則 App 必須建立 (Instantiate) <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivity" title="/en-US/docs/Web/API/MozActivity"><code>MozActivity</code></a> 物件,進而呼叫 Activity。這種物件其實就是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,可等待來自於 Activity Handler 的任何反應。只要建立了物件之後,就會開始 Activity (也會立刻為使用者顯示 UI)。</p>
-<pre class="brush: js" id=".C2.A0">var activity = new MozActivity({
- // Ask for the "pick" activity
- name: "pick",
-
- // Provide de data required by the filters of the activity
- data: {
- type: "image/jpeg"
- }
-});
-
-activity.onsuccess = function() {
- var picture = this.result;
- console.log("A picture has been retrieve");
-};
-
-activity.onerror = function() {
- console.log(this.error);
-};
-</pre>
-<h3 id="Firefox_OS_的_Activity">Firefox OS 的 Activity</h3>
-<p><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a> 即為 Firefox OS 的原生介面,並已內建許多 App 以定義基本的 Activity。這些 Activity 如下:</p>
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Name</th>
- <th scope="col">Application</th>
- <th scope="col">Expected Data (filters)</th>
- <th scope="col">Comments</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><code>browse</code></td>
- <td>Gallery</td>
- <td>
- <pre class="brush: js">
-type: "photos"</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td><code>configure</code></td>
- <td>Settings</td>
- <td>
- <pre class="brush: js">
-target: "device"</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td><code>costcontrol/balance</code></td>
- <td>Costcontrol</td>
- <td>None</td>
- <td> </td>
- </tr>
- <tr>
- <td><code>costcontrol/data_usage</code></td>
- <td>Costcontrol</td>
- <td>None</td>
- <td> </td>
- </tr>
- <tr>
- <td><code>costcontrol/telephony</code></td>
- <td>Costcontrol</td>
- <td>None</td>
- <td> </td>
- </tr>
- <tr>
- <td><code>dial</code></td>
- <td>Communication</td>
- <td>
- <pre class="brush: js">
-type: "webtelephony/number",
-number: {
- regexp:/^[\\d\\s+#*().-]{0,50}$/
-}</pre>
- </td>
- <td>當 App 要傳送一通電話時使用。</td>
- </tr>
- <tr>
- <td colspan="1" rowspan="3"><code>new</code></td>
- <td>Communication</td>
- <td>
- <pre class="brush: js">
-type: "webcontacts/contact"</pre>
- </td>
- <td>當 App 要建立新的聯絡人資料時使用。</td>
- </tr>
- <tr>
- <td>Email</td>
- <td>
- <pre class="brush: js">
-type: "mail"</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td>SMS</td>
- <td>
- <pre class="brush: js" id="LC48">
-type: "websms/sms",
-number: {
- regexp:/^[\\w\\s+#*().-]{0,50}$/
-}</pre>
- </td>
- <td>當 App 要傳送一封文字簡訊時使用。</td>
- </tr>
- <tr>
- <td colspan="1" rowspan="4"><code>open</code></td>
- <td>Communication</td>
- <td>
- <pre class="brush: js">
-type: "webcontacts/contact"</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td>Gallery</td>
- <td>
- <pre class="brush: js">
-type: [
- "image/jpeg",
- "image/png",
- "image/gif",
- "image/bmp"
-]</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td>Music</td>
- <td>
- <pre class="brush: js">
-type: [
- "audio/mpeg",
- "audio/ogg",
- "audio/mp4"
-]</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td>Video</td>
- <td>
- <pre class="brush: js">
-type: [
- "video/webm",
- "video/mp4",
- "video/3gpp",
- "video/youtube"
-]</pre>
- <p>Also expect a <code>blob</code> property which is a {{domxref("Blob")}} object.</p>
- </td>
- <td>當 App 要顯示影片時使用 (而 <code>view</code> 的Activity 同樣可辦到) 。</td>
- </tr>
- <tr>
- <td colspan="1" rowspan="2"><code>pick</code></td>
- <td>Camera, Gallery, Wallpaper</td>
- <td>
- <pre class="brush: js">
-type: ["image/*", "image/jpeg"]</pre>
- </td>
- <td>當 App 要取得圖片時使用。</td>
- </tr>
- <tr>
- <td>Communication</td>
- <td>
- <pre class="brush: js">
-type: [
- "webcontacts/contact",
- "webcontacts/email"
-]</pre>
- </td>
- <td>當 App 要檢索某個聯絡人資訊或電子郵件時使用。</td>
- </tr>
- <tr>
- <td><code>record</code></td>
- <td>Camera</td>
- <td>
- <pre class="brush: js">
-type: ["photos", "videos"]</pre>
- </td>
- <td>當 App 要錄製影片時使用。</td>
- </tr>
- <tr>
- <td><code>save-bookmark</code></td>
- <td>Homescreen</td>
- <td>
- <pre class="brush: js" id="LC46">
-type: "url",
-url: {
- required:true,
- regexp:/^https?:/
-}</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td colspan="1" rowspan="2"><code>share</code></td>
- <td>Bluetooth</td>
- <td>
- <pre class="brush: js">
-number: 1
-</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td>Email, Wallpaper</td>
- <td>
- <pre class="brush: js">
-type: "image/*"</pre>
- </td>
- <td>當 App 要分享圖片時使用。</td>
- </tr>
- <tr>
- <td colspan="1" rowspan="4"><code>view</code></td>
- <td>Browser</td>
- <td>
- <pre class="brush: js">
-type: "url"
-url: {
- required: true,
- regexp: /^https?:.{1,16384}$/
-}</pre>
- </td>
- <td>當 App 要開啟 URL 時使用。</td>
- </tr>
- <tr>
- <td>Email</td>
- <td>
- <pre class="brush: js" id="LC64">
-type: "url",
-url: {
- required:true,
- regexp:/^mailto:/
-}</pre>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td>PDFjs</td>
- <td>
- <pre class="brush: js">
-type: "application/pdf"</pre>
- </td>
- <td>當 App 要顯示 PDF 文件內容時使用。</td>
- </tr>
- <tr>
- <td>Video</td>
- <td>
- <pre class="brush: js">
-type: [
- "video/webm",
- "video/mp4",
- "video/3gpp",
- "video/youtube"
-]</pre>
- <p>Also expect a <code>url</code> property which is a string.</p>
- </td>
- <td>當 App 要顯示影片時使用 (而 <code>open</code> 的 Activity 同樣可辦到)。</td>
- </tr>
- <tr>
- <td><code>update</code></td>
- <td>Communication</td>
- <td>
- <pre class="brush: js">
-type: "webcontacts/contact"</pre>
- </td>
- <td>當 App 要更新聯絡人時使用。</td>
- </tr>
- </tbody>
-</table>
-<h2 id="規格">規格</h2>
-<p><em>Web Activities</em> 目前尚不屬於任何規格,但其中某些部分與當前的 <a href="https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html" title="http://www.w3.org/TR/web-intents/">Web Intents</a> 有所重複。事實上,Mozilla 規劃 <em>Web Activities </em>正是想提議用以替代 <em>Web Intents</em>。若要進一步了解相關資訊,可參閱 <a href="http://lists.w3.org/Archives/Public/public-web-intents/2012Jun/0061.html" title="http://lists.w3.org/Archives/Public/public-web-intents/2012Jun/0061.html">Web Intents Task Force ML</a> 上的討論。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("MozActivity")}}</li>
- <li>{{domxref("MozActivityRequestHandler")}}</li>
- <li>{{domxref("MozActivityOptions")}}</li>
- <li>{{domxref("window.navigator.mozSetMessageHandler()","navigator.mozSetMessageHandler()")}}</li>
- <li><a href="https://hacks.mozilla.org/2013/01/introducing-web-activities/" title="https://hacks.mozilla.org/2013/01/introducing-web-activities/">Introducing Web Activities</a></li>
-</ul>
diff --git a/files/zh-tw/webapi/webfm_api/index.html b/files/zh-tw/webapi/webfm_api/index.html
deleted file mode 100644
index 76a85372f1..0000000000
--- a/files/zh-tw/webapi/webfm_api/index.html
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: WebFM API
-slug: WebAPI/WebFM_API
-translation_of: Archive/B2G_OS/API/WebFM_API
----
-<p>{{ non-standard_header() }}</p>
-<p>{{ B2GOnlyHeader2('installed') }}</p>
-<h2 id="摘要">摘要</h2>
-<p>WebFM API 可存取裝置的 FM 收音機,進而開/關收音機並切換電台。另可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozFMRadio" title="/en-US/docs/Web/API/window.navigator.mozFMRadio"><code>navigator.mozFMRadio</code></a> 屬性 (為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio" title="/en-US/docs/Web/API/FMRadio"><code>FMRadio</code></a> 物件) 而存取此 API。</p>
-<h2 id="開關收音機">開/關收音機</h2>
-<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.enable" title="/en-US/docs/Web/API/FMRadio.enable"><code>FMRadio.enable()</code></a> 函式可開啟收音機;<a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.disable" title="/en-US/docs/Web/API/FMRadio.disable"><code>FMRadio.disable()</code></a> 函式則是關閉收音機。</p>
-<p>在開啟收音機之前,應先檢查裝置是否具備天線 (若無天線,內建的收音機當然也收不到訊號)。透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.antennaAvailable" title="/en-US/docs/Web/API/FMRadio.antennaAvailable"><code>FMRadio.antennaAvailable</code></a> 屬性即可獲得天線資訊。行動裝置往往將耳機纜線作為收音機天線。由於使用者可隨時插入/拔除耳機,因此每次只要天線狀態改變,WebFM API 均將發出 <code><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/antennaavailablechange" title="/en-US/docs/Web/Reference/Events/antennaavailablechange">antennaavailablechange</a></code> 事件。</p>
-<p>開啟收音機就必須要有可聆聽的頻道。而頻率 (以 MHz 為單位) 將以數字形式傳送至 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.enable" title="/en-US/docs/Web/API/FMRadio.enable"><code>FMRadio.enable()</code></a> 函式。</p>
-<pre class="brush: js">// The frequency of the radio station
-// to listen express in MHz
-var frequency = 99.1;
-var radio = navigator.mozFMRadio;
-
-if (radio.antennaAvailable) {
- radio.enable(frenquency);
-} else {
- alert("You need to plug your headphone");
-}
-
-radio.addEventListener('antennaavailablechange', function () {
- if (radio.antennaAvailable) {
- radio.enable(frenquency);
- } else {
- radio.disable();
- }
-})
-</pre>
-<div class="note">
- <p><strong>注意:</strong>透過裝置上的可用 <code>normal</code> 音訊通道,即可輸出音訊。</p>
-</div>
-<h2 id="切換不同頻率">切換不同頻率</h2>
-<p>使用者可手動或讓裝置自動切換頻率。不論是手動或自動,均將透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.frequency" title="/en-US/docs/Web/API/FMRadio.frequency"><code>FMRadio.frequency</code></a> 屬性存取目前的收音機頻率。該屬性則以 <a href="http://en.wikipedia.org/wiki/Hertz" title="http://en.wikipedia.org/wiki/Hertz">MHz</a> 呈現頻率。</p>
-<h3 id="手動切換">手動切換</h3>
-<p>必須以 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.setFrequency" title="/en-US/docs/Web/API/FMRadio.setFrequency"><code>FMRadio.setFrequency()</code></a> 函式設定新的頻率,但所能設定的值有某些限制。此函式將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理函式呼叫的成功或錯誤狀態。而頻率必須滿足下列要求:</p>
-<ul>
- <li>頻率必須落在 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.frequencyLowerBound" title="/en-US/docs/Web/API/FMRadio.frequencyLowerBound"><code>FMRadio.frequencyLowerBound</code></a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.frequencyUpperBound" title="/en-US/docs/Web/API/FMRadio.frequencyUpperBound"><code>FMRadio.frequencyUpperBound</code></a> 所定義的範圍中。若頻率在此範圍之外,就會產生錯誤。</li>
- <li>頻率必須根據 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.channelWidth" title="/en-US/docs/Web/API/FMRadio.channelWidth"><code>FMRadio.channelWidth</code></a> 的值而變化,否則亦將四捨五入。舉例來說,若 100 Mz 為有效頻率,且 channelWidth 為 0.2 時,則 100.2 與 99.8 將成為有效頻率。但若是 100.15 將四捨五入為 100.2。</li>
-</ul>
-<pre class="brush: js">var change = radio.setFrequency(frequency);
-
-change.onerror = function () {
- var min = radio.frequencyLowerBound;
- var max = radio.frequencyUpperBound;
- console.warn('The frequency must be within the range [' + min + ',' + max + ']');
-}
-
-change.onsuccess = function () {
- console.log('The frequency has been set to ' + radio.frequency);
-}
-</pre>
-<h3 id="自動搜尋">自動搜尋</h3>
-<p>WebFM API 亦可自動搜尋收音機頻道。我們使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.seekUp" title="/en-US/docs/Web/API/FMRadio.seekUp"><code>FMRadio.seekUp()</code></a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.seekDown" title="/en-US/docs/Web/API/FMRadio.seekDown"><code>FMRadio.seekDown()</code></a> 函式。前者將從目前頻道再尋找更高的頻率;後者反之。此 2 組函式均將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理函式呼叫的成功或錯誤狀態。</p>
-<p>WebFM API 亦可自動搜尋收音機頻道。我們使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.seekUp" title="/en-US/docs/Web/API/FMRadio.seekUp"><code>FMRadio.seekUp()</code></a> 與 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.seekDown" title="/en-US/docs/Web/API/FMRadio.seekDown"><code>FMRadio.seekDown()</code></a> 函式。前者將從目前頻道再尋找更高的頻率;後者反之。此 2 組函式均將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,以處理函式呼叫的成功或錯誤狀態。</p>
-<p>且此 2 組函式在到達 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.frequencyLowerBound" title="/en-US/docs/Web/API/FMRadio.frequencyLowerBound"><code>frequencyLowerBound</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.frequencyUpperBound" title="/en-US/docs/Web/API/FMRadio.frequencyUpperBound"><code>frequencyUpperBound</code></a> 的值之後,均將再次循環較高/較低頻率。一旦找到新頻道,就會更改目前頻率並發出 <code><a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/frequencychange" title="/en-US/docs/Web/Reference/Events/frequencychange">frequencychange</a></code> 事件。</p>
-<p>此 2 組函式並無法同時搜尋,也就是無法同時往上並往下搜尋頻率,否則將發生錯誤。而呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/FMRadio.cancelSeek" title="/en-US/docs/Web/API/FMRadio.cancelSeek"><code>FMRadio.cancelSeek()</code></a> 函式即可停止搜尋頻率。此函式亦將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件。</p>
-<pre class="brush: js">var radio = navigator.mozFMRadio;
-var seeking = false;
-var UP = document.querySelector("button.up");
-var DOWN = document.querySelector("button.down");
-
-// When the frequency change, the seek
-// functions automatically stop to seek.
-radio.onfrequencychange = function () {
- seeking = false;
-}
-
-function seek(direction) {
- var cancel, search;
-
- // If the radio is already seeking
- // we will cancel the current search.
- if (seeking) {
- var cancel = radio.cancelSeek();
- cancel.onsuccess = function () {
- seeking = false;
-
- // Once the radio no longer seek,
- // we can try to seek as expected
- seek(direction);
- }
-
- // Let's seek up
- } else if (direction === 'up') {
- // Just to be sure that the radio is turned on
- if (!radio.enabled) {
- radio.enable(radio.frequencyLowerBound);
- }
- search = radio.seekUp();
-
- // Let's seek up
- } else if (direction === 'down' {
- // Just to be sure that the radio is turned on
- if (!radio.enabled) {
- radio.enable(radio.frequencyUpperBound);
- }
- search = radio.seekDown();
- }
-
- if (search) {
- search.onsuccess = function () {
- // Ok, we are seeking now.
- seeking = true;
- };
- search.onerror = function () {
- // Something goes wrong... ok, let's try again.
- seek(direction);
- }
- }
-}
-
-UP.addEventListener('click', function () {
- seek('up');
-});
-
-DOWN.addEventListener('click', function () {
- seek('down');
-});
-</pre>
-<h2 id="規格">規格</h2>
-<p>尚無任何規格。</p>
-<h2 id="另可參閱">另可參閱</h2>
-<ul>
- <li>{{domxref("FMRadio")}}</li>
- <li><a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/fm" title="https://github.com/mozilla-b2g/gaia/tree/master/apps/fm">Gaïa 上的 FM App</a></li>
-</ul>
diff --git a/files/zh-tw/webapi/websms/index.html b/files/zh-tw/webapi/websms/index.html
deleted file mode 100644
index 16ef3887cf..0000000000
--- a/files/zh-tw/webapi/websms/index.html
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: WebSMS
-slug: WebAPI/WebSMS
-translation_of: Archive/B2G_OS/API/Mobile_Messaging_API
----
-<p>{{ non-standard_header() }}</p>
-
-<p>{{ B2GOnlyHeader2('certified') }}</p>
-
-<h2 id="摘要">摘要</h2>
-
-<p>WebSMS API 可讓網頁內容能建立、傳送、接收文字簡訊 (SMS) 或多媒體訊息 (MMS)。</p>
-
-<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSms" title="Returns an SmsManager object you can use to receive and send SMS messages."><code>window.navigator.mozSms</code></a> (將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozSmsManager" title="Provides support for sending and managing SMS messages on a device with WebSMS."><code>MozSmsManager</code></a> 物件),或是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozMobileMessage" title="Returns a MozMobileMessageManager object you can use to receive and send MMS and SMS messages."><code>window.navigator.mozMobileMessage</code></a> (將回傳 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozMobileMessageManager" title="Provides support for sending and managing both MMS and SMS messages on a device with WebSMS."><code>MozMobileMessageManager</code></a> 物件),均可存取此 API。</p>
-
-<h2 id="DOM_介面">DOM 介面</h2>
-
-<h3 id="SMS_介面">SMS 介面</h3>
-
-<ul>
- <li>{{ domxref("window.navigator.mozSms") }} {{deprecated_inline("25")}}</li>
- <li>{{ domxref("MozSmsManager") }} {{deprecated_inline("25")}}</li>
- <li>{{ domxref("MozSmsMessage") }}</li>
- <li>{{ domxref("MozSmsEvent") }}</li>
- <li>{{ domxref("MozSmsFilter") }}</li>
- <li>{{ domxref("MozSmsSegmentInfo") }}</li>
-</ul>
-
-<h3 id="MMS_與_SMS_介面">MMS 與 SMS 介面</h3>
-
-<ul>
- <li>{{ domxref("MozMobileMessageManager")}}</li>
- <li>{{ domxref("MozMmsMessage") }}</li>
- <li>{{ domxref("MozMmsEvent") }}</li>
- <li>{{ domxref("MozMobileMessageThread") }}</li>
-</ul>
-
-<h2 id="範例程式碼與介紹">範例程式碼與介紹</h2>
-
-<ul>
- <li><a href="/en-US/docs/WebAPI/WebSMS/Introduction_to_Mobile_Message_API" title="en/API/WebSMS/Introduction_to_WebSMS">Mobile Message API 介紹</a></li>
-</ul>
-
-<h2 id="規格">規格</h2>
-
-<p>此 API 目前尚未成為標準規格。可至 W3C 的 <a href="http://www.w3.org/2012/sysapps/" title="http://www.w3.org/2012/sysapps/">System Application Working Group</a> 參與相關討論。</p>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{SpecName('Messaging')}}</td>
- <td>{{Spec2('Messaging')}}</td>
- <td>Editor Draft (WIP).</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
-
-<p>當然,主要支援行動瀏覽器。</p>
-
-<p>{{ CompatibilityTable() }}</p>
-
-<div id="compat-desktop">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<div id="compat-mobile">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatGeckoMobile("12.0") }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- <td>{{ CompatNo() }}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<h2 id="相關設定">相關設定</h2>
-
-<ul>
- <li>WebSMS 預設為停用,可將 <code>dom.sms.enabled</code> 設定為 true 即可啟用。</li>
- <li>允許使用 WebSMS API 的主機名稱,均以逗號區隔,且必須透過 <code>dom.sms.whitelist</code> 指定之。此字串預設為空白。</li>
- <li>WebSMS 僅能用於 Firefox OS (B2G) 的 Certified Apps 之上。</li>
- <li>從 Firefox OS 1.1 開始,即可使用 MMS。</li>
-</ul>
-
-<h2 class="note" id="另可參閱">另可參閱</h2>
-
-<ul>
- <li><a class="link-https" href="https://wiki.mozilla.org/WebAPI/WebSMS" title="https://wiki.mozilla.org/WebAPI/WebSMS">WebSMS API</a> (設計文件)</li>
-</ul>
diff --git a/files/zh-tw/xpcom/index.html b/files/zh-tw/xpcom/index.html
deleted file mode 100644
index 126d4d0a00..0000000000
--- a/files/zh-tw/xpcom/index.html
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: XPCOM
-slug: XPCOM
-translation_of: Mozilla/Tech/XPCOM
----
-<div class="callout-box"><strong>XPCOM</strong> 入門
-
-<p>來自 <a class="external" href="http://www.ibm.com/developerworks/">IBM developerWorks</a> 的教程︰<a class="external" href="http://www.ibm.com/developerworks/webservices/library/co-xpcom.html">第一部分</a>、<a class="external" href="http://www.ibm.com/developerworks/webservices/library/co-xpcom2.html">第二部分</a>、<a class="external" href="http://www.ibm.com/developerworks/webservices/library/co-xpcom3.html">第三部分</a>、<a class="external" href="http://www.ibm.com/developerworks/webservices/library/co-xpcom4/">第四部分</a>、<a class="external" href="http://web.archive.org/web/20080201111622/http://www.ibm.com/developerworks/webservices/library/co-xpcom5.html" title="http://web.archive.org/web/20080201111622/http://www.ibm.com/developerworks/webservices/library/co-xpcom5.html">第五部分</a></p>
-</div>
-
-<div class="warning">
-<p><strong>XPCOM is no longer available for use by Firefox extensions. Use <a href="/en-US/Add-ons/WebExtensions">WebExtensions</a> instead.</strong></p>
-</div>
-<div><strong>XPCOM</strong>(Cross Platform Component Object Model)是一種跨平台元件物件模型,類似於微軟的 COM。它有多種<a href="/en/XPCOM/Language_Bindings" title="en/XPCOM/Language_Bindings">語言繫結</a>(Language Binding),使 XPCOM 元件可使用並實現於C++、JavaScript、Java 及 Python。XPCOM 的介面是由稱為 <a href="/en/XPIDL" title="en/XPIDL">XPIDL</a> (IDL 的方言)所定義。
-
-<p>XPCOM 自身提供了一套核心元件和類別,例如,檔案和記憶體管理、線程、基本資料結構(strings, arrays, variants)等。大多數 XPCOM 元件並非由核心元件所提供,而是由其他平台(例如 <a href="/en/Gecko" title="en/Gecko">Gecko</a> 或 <a href="/en/Necko" title="en/Necko">Necko</a>)或應用程式、甚至是延伸套件所提供。</p>
-</div>
-
-
-<div class="row topicpage-table">
- <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Accessing_the_Windows_Registry_Using_XPCOm">Accessing the Windows Registry Using XPCOM</a></dt><dd class="landingPageList">When implementing Windows-specific functionality, it is often useful to access the Windows registry for information about the environment or other installed programs. To this end, there exist <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> interfaces to read and write registry data. This article will show you how to use the available interfaces in several Mozilla products.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Aggregating_the_In-Memory_Datasource">Aggregating the In-Memory Datasource</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/already_AddRefed">already_AddRefed</a></dt><dd class="landingPageList"><code>already_AddRefed</code> in association with <code><a href="/en-US/docs/NsCOMPtr">nsCOMPtr</a></code> allows you to assign in a pointer <strong>without</strong> <code>AddRef</code>ing it.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Binary_compatibility">Binary compatibility</a></dt><dd class="landingPageList">If Mozilla decides to upgrade to a compiler that does not have the same ABI as the current version, any built component may fail. It is a possiblity that is introduced when upgrading to a new compiler without recompiling everything. Effectively, it is a different platform.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Bundling_multiple_binary_components">Bundling multiple binary components</a></dt><dd class="landingPageList">Binary XPCOM components are sometimes required to implement low-level features for extensions. Since binary components are linked against a single Gecko SDK, a dependency to a particular version of Gecko is created. If the component uses only "frozen" XPCOM interfaces, there is a good chance the same binary component will work with different versions of Gecko (version 1.8 and 1.9, for example). The more likely case is that the component uses "unfrozen" interfaces and those interfaces can change between Gecko versions. This can create a difficult situation for extension developers trying to support multiple Gecko versions (Firefox 2 and 3, for example).</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Creating_a_Python_XPCOM_component">Creating a Python XPCOM component</a></dt><dd class="landingPageList"><a href="http://books.mozdev.org/html"><em>Creating Applications with Mozilla</em></a> already provides <a href="http://books.mozdev.org/html/mozilla-chp-8-sect-2.html">a tutorial</a> for making a simple JavaScript or C++ component (implementing the <code>nsISimple</code> interface). Here is how to make the same component in Python using <a href="/en-US/docs/PyXPCOM" title="PyXPCOM">PyXPCOM</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Fun_with_XBL_and_XPConnect">Fun With XBL and XPConnect</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Generating_GUIDs">Generating GUIDs</a></dt><dd class="landingPageList"><strong>GUID</strong>s are used in Mozilla programming for identifying several types of entities, including XPCOM <a href="/en-US/docs/Interfaces">Interfaces</a> (this type of GUIDs is callled IID), components (CID), and legacy add-ons—like <a href="/en-US/docs/Extensions">extensions</a> and <a href="/en-US/docs/Themes">themes</a>—that were created prior to Firefox 1.5. <a href="/en-US/docs/Install_Manifests#id">Add-ons can (and should) be identified with IDs of the form <code><var>extensionname</var>@<var>organization</var>.<var>tld</var></code></a> since <a href="/en-US/docs/Firefox_1.5_for_developers">Firefox 1.5</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Generic_factory">Generic factory</a></dt><dd class="landingPageList">Most XPCOM factories can be very simple. Rick Potts wrote a templated-based generic factory (nsFactory&lt;t&gt;) that simplifies the factory creation process that just requires writing a CreateInstance() method. The new nsIGenericFactory interface takes this a step further, by providing a single interface that can be reused anytime a simple implementation of nsIFactory is needed. Here is the interface, and a description of its use.&lt;/t&gt;</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/How_to_build_a_binary_XPCOM_component_using_Visual_Studio">How to build a binary XPCOM component using Visual Studio</a></dt><dd class="landingPageList">This is a simple tutorial for building XPCOM objects in C++ using Visual Studio. XPCOM is Mozilla’s cross platform component object model, similar to Microsoft’s COM technology. XPCOM components can be implemented in C, C++, and JavaScript, and can be used from C, C++, and JavaScript. That means you can call JavaScript methods from C++ and vice versa. For more information on the workings of XPCOM look <a href="en/XPCOM">elsewhere</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/How_to_pass_an_XPCOM_object_to_a_new_window">How To Pass an XPCOM Object to a New Window</a></dt><dd class="landingPageList">If you want to be able to call functions within an XPCOM object from a XUL window's code, you can do so if you pass the XPCOM object as one of the arguments to the window creation method.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector">Interfacing with the XPCOM cycle collector</a></dt><dd class="landingPageList">This is a quick overview of the cycle collector introduced into XPCOM for Firefox 3, including a description of the steps involved in modifying an existing C++ class to participate in XPCOM cycle collection. If you have a class that you think is involved in a cyclical-ownership leak, this page is for you.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Introduction_to_XPCOM_for_the_DOM">Introduction to XPCOM for the DOM</a></dt><dd class="landingPageList">Warning: this document has not yet been reviewed by the DOM gurus, it might contain some errors.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings">Language bindings</a></dt><dd class="landingPageList">An <strong>XPCOM Language Binding</strong> is a bridge between a particular language and <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> to provide access to XPCOM objects from that language, and to let modules written in that language be used as XPCOM objects by all other languages for which there are XPCOM bindings.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Monitoring_HTTP_activity">Monitoring HTTP activity</a></dt><dd class="landingPageList">Gecko includes the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> interface, which you can implement in your code to monitor <a href="/en/HTTP" title="en/HTTP">HTTP</a> transactions in real time, receiving a callback as the transactions take place.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/nsCOMPtr_versus_RefPtr">nsCOMPtr versus RefPtr</a></dt><dd class="landingPageList">Gecko code uses both <code>nsCOMPtr</code> and <code>RefPtr</code> as smart pointers. This guide provides some explanation and advice on how to choose between them.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Observer_Notifications">Observer Notifications</a></dt><dd class="landingPageList">The following are topics that you can observe during the course of an application. Unless otherwise noted you register for the topics using the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserverService" title="">nsIObserverService</a></code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Setting_HTTP_request_headers">Setting HTTP request headers</a></dt><dd class="landingPageList"><a href="/en-US/docs/HTTP">HTTP</a> is one of the core technologies behind the Web. In addition to the actual content, <a href="/en-US/docs/HTTP/Headers">some important information</a> is passed with HTTP headers for both HTTP requests and responses.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Storage">Storage</a></dt><dd class="landingPageList"><strong>Storage</strong> is a <a class="external" href="http://www.sqlite.org/">SQLite</a> database API. It is available to trusted callers, meaning extensions and Firefox components only.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/The_Thread_Manager">The Thread Manager</a></dt><dd class="landingPageList">The Thread Manager, introduced in Firefox 3, offers an easy to use mechanism for creating threads and dispatching events to them for processing.</dd></dl></dl></div>
- <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Troubleshooting_XPCOM_components_registration">Troubleshooting XPCOM components registration</a></dt><dd class="landingPageList">Often the first time you create an XPCOM component, it may fail to register correctly.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsCOMPtr">Using nsCOMPtr</a></dt><dd class="landingPageList">This document is the sum total of everything written down about <code>nsCOMPtr</code>. If you have a question about <code>nsCOMPtr</code>, and this document doesn't answer it, there probably isn't a document that answers it. You'll have to turn to <a class="external" href="news:mozilla.dev.tech.xpcom">the XPCOM newsgroup</a> or another experienced <code>nsCOMPtr</code> user, or find the answer by experimentation.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsIClassInfo">Using nsIClassInfo</a></dt><dd class="landingPageList">If you use a C++ class which implements <code>nsIClassInfo</code> from JavaScript, then you don't have to explicitly call <code>QueryInterface</code> on the JavaScript object to access the object's interfaces.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsIDirectoryService">Using nsIDirectoryService</a></dt><dd class="landingPageList">nsDirectoryService implements the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProperties" title="">nsIProperties</a></code> interface. This implementation will allow you to <code>Get()</code>, <code>Set()</code>, <code>Define()</code>, and <code>Undefine()</code> <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsIPasswordManager">Using nsIPasswordManager</a></dt><dd class="landingPageList">Technical review completed.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsISimpleEnumerator">Using nsISimpleEnumerator</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_the_clipboard">Using the clipboard</a></dt><dd class="landingPageList">This section provides information about cutting, copying, and pasting to and from the clipboard.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_the_Gecko_SDK">Using the Gecko SDK</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Weak_reference">Weak reference</a></dt><dd class="landingPageList">In <a href="/en-US/docs/XPCOM">XPCOM</a>, a <strong>weak reference</strong> is a special object that contains a pointer to an XPCOM object, but does<em>not</em> keep that object alive. If the referent object is destroyed before the weak reference, the pointer inside the weak reference is set to <code>nsnull</code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Working_with_multiple_versions_of_interfaces">Working with Multiple Versions of Interfaces</a></dt><dd class="landingPageList">In this short note we illustrate how one can update an XPCOM module in
-order for it to work in both Firefox 2 and Firefox 3, even if the interfaces have
-changed in the interim.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Working_with_out_parameters">Working with out parameters</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/wrappedJSObject">wrappedJSObject</a></dt><dd class="landingPageList"><code>wrappedJSObject</code> is a property sometimes available on <a href="en/XPConnect">XPConnect</a> wrappers. When available, it lets you access the JavaScript object hidden by the wrapper.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_ABI">XPCOM ABI</a></dt><dd class="landingPageList"><a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> <abbr title="Application Binary Interface">ABI</abbr> is the binary interface of XPCOM components. While XPCOM components written in a scripting language (such as <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>) can be moved across platforms (such as Windows and OS X) without adaptation, those written in a compiled language (such as C++) require recompilation when moving to a different platform. Often, compiled XPCOM components are called 'binary' or 'native'.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_category_image-sniffing-services">XPCOM category image-sniffing-services</a></dt><dd class="landingPageList">In versions of Firefox prior to Firefox 3, extensions could add decoders for new image types. However, such decoders relied on servers sending correct MIME types; images sent with incorrect MIME types would not be correctly displayed.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a></dt><dd class="landingPageList">The XPCOM Glue is a static library which component developers and embedders can link against. It allows developers to link only against the frozen XPCOM method symbols and maintain compatibility with multiple versions of XPCOM.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide">XPCOM guide</a></dt><dd class="landingPageList">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_ownership_guidelines">XPCOM ownership guidelines</a></dt><dd class="landingPageList">...naturally. If you create a temporary object, obviously it's up to you to destroy it. That's a sure sign of ownership. If you create an object with a longer lifespan, you will own it until you give ownership away.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference">XPCOM reference</a></dt><dd class="landingPageList">This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_tasks">XPCOM tasks</a></dt><dd class="landingPageList">The XPCOM module roughly parallels the C/C++ standard libraries. It overlaps them significantly, but goes beyond them in capabilities. XPCOM sits above the standard libraries. Its role is to extend them with facilities tailored to XPCOM development in general, and specifically the needs of Mozilla. Like the standard libraries, XPCOM must be a fairly self-contained library, so as not to encumber clients with any unnecessary external dependencies.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Thread_synchronization">XPCOM Thread Synchronization</a></dt><dd class="landingPageList">XPCOM thread synchronization primitives have the same semantics as those in NSPR, and each method of these synchronization objects (e.g. <code>Mutex::Lock()</code>) has a matching function in NSPR (<code>PR_Lock()</code>). This is no accident, as mozilla:: primitives are merely bare-minimum wrappers around NSPR's.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/xptcall_FAQ">xptcall FAQ</a></dt><dd class="landingPageList"><code>xptcall</code> is a small low level XPCOM method call library. It is implemented using platform specific C/C++ and assembly language code. It is used to facilitate cross language and cross thread method calls. Porting this code is required in order to make Mozilla run on any given platform.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/xptcall_porting_guide">Xptcall Porting Guide</a></dt><dd class="landingPageList">Original Author: John Bandhauer, 31 May 1999.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/xptcall_porting_status">Xptcall Porting Status</a></dt><dd class="landingPageList">This is a status page for the multiplatform porting of xptcall. xptcall has a <a href="/En/Xptcall_FAQ">FAQ</a> and a <a href="/En/Xptcall_Porting_Guide">Porting Guide</a>.</dd></dl></div>
- </div>
-
-<div class="blockIndicator communitybox" dir="ltr">
-
- <div class="column-container">
- <h2 id="Join_the_XPCOM_community">Join the XPCOM community</h2>
- <div class="column-half">
- <div class="communitysubhead">Choose your preferred method for joining the discussion:</div>
- <ul class="communitymailinglist">
- <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xpcom">Mailing list</a></li>
-
-
- <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom">Newsgroup</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom/feeds">RSS feed</a></li>
-</ul>
- </div>
- <div class="column-half">
- <ul class="communitycontact"><li><strong>IRC: </strong><a href="irc://irc.mozilla.org/developers">#developers</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">learn more</a>)</span></li><li><strong>Tools: </strong><a href="http://ted.mielczarek.org/code/mozilla/jscomponentwiz/">JavaScript Component Wizard</a>, <a href="http://www.mytools360.com-a.googlepages.com/home#XPComPro">Visual C++ Component Wizard</a>, <a href="http://www.yutools.com/wp/tools/yuxpcomwizard/?lang=en">Visual C++ Component Wizard for Visual Studio 2010</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/xpcomviewer/">XPCOMViewer addon: browse XPCOM interfaces easily</a></li></ul>
- </div>
- </div>
-</div>
-
-<section id="Quick_Links"><ol><li><a href="http://www.ibm.com/developerworks/library/os-xpcomfirefox/">Tutorial from IBM DeveloperWorks</a></li><li><a href="https://developer.mozilla.org/en-US/docs/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary components tutorial</a></li><li><a href="http://www.iosart.com/firefox/xpcom/">Linux and Windows how-to guide</a></li><li><a href="http://starkravingfinkle.org/blog/2006/10/mozilla-platform-xpcom-in-c/">Windows example blog post</a></li><li><a href="http://wanderingstan.com/2007-11-16/geekout_how_to_make_a_c_xpcom_component">Another Windows example</a></li><li><a href="http://rcrowley.org/2007/07/17/cross-platform-xpcom-a-howto.html">Mac OS X example</a></li><li><a href="/en-US/docs/Web/JavaScript" title="JavaScript (JS) is a lightweight interpreted or JIT-compiled programming language with first-class functions. While it is most well-known as the scripting language for Web pages, many non-browser environments also use it, such as Node.js, Apache CouchDB and Adobe Acrobat.">JavaScript</a></li></ol></section>
diff --git a/files/zh-tw/xul_教學/index.html b/files/zh-tw/xul_教學/index.html
deleted file mode 100644
index ea8941b2cd..0000000000
--- a/files/zh-tw/xul_教學/index.html
+++ /dev/null
@@ -1,136 +0,0 @@
----
-title: XUL 教學
-slug: XUL_教學
-translation_of: Archive/Mozilla/XUL/Tutorial
----
-<p> </p>
-<p>這份教學介紹<a href="/zh_tw/XUL" title="zh_tw/XUL"> XUL</a>(<a href="/zh_tw/XML" title="zh_tw/XML">XML</a> User-interface Language)。Mozilla 使用它來建立應用程式的使用介面</p>
-<h5 id="Introduction" name="Introduction">引言</h5>
-<ul>
- <li><a href="/zh_tw/XUL_指南/簡介" title="zh_tw/XUL_指南/簡介">簡介</a></li>
- <li><a href="/zh_tw/XUL_指南/XUL的結構" title="zh_tw/XUL_指南/XUL的結構">XUL的結構</a></li>
- <li><a href="/en/XUL_Tutorial/The_Chrome_URL" title="en/XUL_Tutorial/The_Chrome_URL">Chrome URL</a></li>
- <li><a href="/en/XUL_Tutorial/Manifest_Files" title="en/XUL_Tutorial/Manifest_Files">Manifest 檔案</a></li>
-</ul>
-<h5 id="Simple_Elements" name="Simple_Elements">Simple Elements</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Creating_a_Window" title="en/XUL_Tutorial/Creating_a_Window">Creating a Window</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_Buttons" title="en/XUL_Tutorial/Adding_Buttons">Adding Buttons</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_Labels_and_Images" title="en/XUL_Tutorial/Adding_Labels_and_Images">Adding Labels and Images</a></li>
- <li><a href="/en/XUL_Tutorial/Input_Controls" title="en/XUL_Tutorial/Input_Controls">Input Controls</a></li>
- <li><a href="/en/XUL_Tutorial/Numeric_Controls" title="en/XUL_Tutorial/Numeric_Controls">Numeric Controls</a></li>
- <li><a href="/en/XUL_Tutorial/List_Controls" title="en/XUL_Tutorial/List_Controls">List Controls</a></li>
- <li><a href="/en/XUL_Tutorial/Progress_Meters" title="en/XUL_Tutorial/Progress_Meters">Progress Meters</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_HTML_Elements" title="en/XUL_Tutorial/Adding_HTML_Elements">Adding HTML Elements</a></li>
- <li><a href="/en/XUL_Tutorial/Using_Spacers" title="en/XUL_Tutorial/Using_Spacers">Using Spacers</a></li>
- <li><a href="/en/XUL_Tutorial/More_Button_Features" title="en/XUL_Tutorial/More_Button_Features">More Button Features</a></li>
-</ul>
-<h5 id="The_Box_Model" name="The_Box_Model">The Box Model</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/The_Box_Model" title="en/XUL_Tutorial/The_Box_Model">The Box Model</a></li>
- <li><a href="/en/XUL_Tutorial/Element_Positioning" title="en/XUL_Tutorial/Element_Positioning">Element Positioning</a></li>
- <li><a href="/en/XUL_Tutorial/Box_Model_Details" title="en/XUL_Tutorial/Box_Model_Details">Box Model Details</a></li>
- <li><a href="/en/XUL_Tutorial/Groupboxes" title="en/XUL_Tutorial/Groupboxes">Groupboxes</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_More_Elements" title="en/XUL_Tutorial/Adding_More_Elements">Adding More Elements</a></li>
-</ul>
-<h5 id="More_Layout_Elements" name="More_Layout_Elements">More Layout Elements</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Stacks_and_Decks" title="en/XUL_Tutorial/Stacks_and_Decks">Stacks and Decks</a></li>
- <li><a href="/en/XUL_Tutorial/Stack_Positioning" title="en/XUL_Tutorial/Stack_Positioning">Stack Positioning</a></li>
- <li><a href="/en/XUL_Tutorial/Tabboxes" title="en/XUL_Tutorial/Tabboxes">Tabboxes</a></li>
- <li><a href="/en/XUL_Tutorial/Grids" title="en/XUL_Tutorial/Grids">Grids</a></li>
- <li><a href="/en/XUL_Tutorial/Content_Panels" title="en/XUL_Tutorial/Content_Panels">Content Panels</a></li>
- <li><a href="/en/XUL_Tutorial/Splitters" title="en/XUL_Tutorial/Splitters">Splitters</a></li>
-</ul>
-<h5 id="Toolbars_and_Menus" name="Toolbars_and_Menus">Toolbars and Menus</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Toolbars" title="en/XUL_Tutorial/Toolbars">Toolbars</a></li>
- <li><a href="/en/XUL_Tutorial/Simple_Menu_Bars" title="en/XUL_Tutorial/Simple_Menu_Bars">Simple Menu Bars</a></li>
- <li><a href="/en/XUL_Tutorial/More_Menu_Features" title="en/XUL_Tutorial/More_Menu_Features">More Menu Features</a></li>
- <li><a href="/en/XUL_Tutorial/Popup_Menus" title="en/XUL_Tutorial/Popup_Menus">Popup Menus</a></li>
- <li><a href="/en/XUL_Tutorial/Scrolling_Menus" title="en/XUL_Tutorial/Scrolling_Menus">Scrolling Menus</a></li>
-</ul>
-<h5 id="Events_and_Scripts" name="Events_and_Scripts">Events and Scripts</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Adding_Event_Handlers" title="en/XUL_Tutorial/Adding_Event_Handlers">Adding Event Handlers</a></li>
- <li><a href="/en/XUL_Tutorial/More_Event_Handlers" title="en/XUL_Tutorial/More_Event_Handlers">More Event Handlers</a></li>
- <li><a href="/en/XUL_Tutorial/Keyboard_Shortcuts" title="en/XUL_Tutorial/Keyboard_Shortcuts">Keyboard Shortcuts</a></li>
- <li><a href="/en/XUL_Tutorial/Focus_and_Selection" title="en/XUL_Tutorial/Focus_and_Selection">Focus and Selection</a></li>
- <li><a href="/en/XUL_Tutorial/Commands" title="en/XUL_Tutorial/Commands">Commands</a></li>
- <li><a href="/en/XUL_Tutorial/Updating_Commands" title="en/XUL_Tutorial/Updating_Commands">Updating Commands</a></li>
- <li><a href="/en/XUL_Tutorial/Broadcasters_and_Observers" title="en/XUL_Tutorial/Broadcasters_and_Observers">Broadcasters and Observers</a></li>
-</ul>
-<h5 id="Document_Object_Model" name="Document_Object_Model">Document Object Model</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Document_Object_Model" title="en/XUL_Tutorial/Document_Object_Model">Document Object Model</a></li>
- <li><a href="/en/XUL_Tutorial/Modifying_a_XUL_Interface" title="en/XUL_Tutorial/Modifying_a_XUL_Interface">Modifying a XUL Interface</a></li>
- <li><a href="/en/XUL_Tutorial/Manipulating_Lists" title="en/XUL_Tutorial/Manipulating_Lists">Manipulating Lists</a></li>
- <li><a href="/en/XUL_Tutorial/Box_Objects" title="en/XUL_Tutorial/Box_Objects">Box Objects</a></li>
- <li><a href="/en/XUL_Tutorial/XPCOM_Interfaces" title="en/XUL_Tutorial/XPCOM_Interfaces">XPCOM Interfaces</a></li>
- <li><a href="/en/XUL_Tutorial/XPCOM_Examples" title="en/XUL_Tutorial/XPCOM_Examples">XPCOM Examples</a></li>
-</ul>
-<h5 id="Trees" name="Trees">Trees</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Trees" title="en/XUL_Tutorial/Trees">Trees</a></li>
- <li><a href="/en/XUL_Tutorial/More_Tree_Features" title="en/XUL_Tutorial/More_Tree_Features">More Tree Features</a></li>
- <li><a href="/en/XUL_Tutorial/Tree_Selection" title="en/XUL_Tutorial/Tree_Selection">Tree Selection</a></li>
- <li><a href="/en/XUL_Tutorial/Custom_Tree_Views" title="en/XUL_Tutorial/Custom_Tree_Views">Custom Tree Views</a></li>
- <li><a href="/en/XUL_Tutorial/Tree_View_Details" title="en/XUL_Tutorial/Tree_View_Details">Tree View Details</a></li>
- <li><a href="/en/XUL_Tutorial/Tree_Box_Objects" title="en/XUL_Tutorial/Tree_Box_Objects">Tree Box Objects</a></li>
-</ul>
-<h5 id="RDF_and_Templates" name="RDF_and_Templates">RDF and Templates</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Introduction_to_RDF" title="en/XUL_Tutorial/Introduction_to_RDF">Introduction to RDF</a></li>
- <li><a href="/en/XUL_Tutorial/Templates" title="en/XUL_Tutorial/Templates">Templates</a></li>
- <li><a href="/en/XUL_Tutorial/Trees_and_Templates" title="en/XUL_Tutorial/Trees_and_Templates">Trees and Templates</a></li>
- <li><a href="/en/XUL_Tutorial/RDF_Datasources" title="en/XUL_Tutorial/RDF_Datasources">RDF Datasources</a></li>
- <li><a href="/en/XUL_Tutorial/Advanced_Rules" title="en/XUL_Tutorial/Advanced_Rules">Advanced Rules</a></li>
- <li><a href="/en/XUL_Tutorial/Persistent_Data" title="en/XUL_Tutorial/Persistent_Data">Persistent Data</a></li>
-</ul>
-<h5 id="Skins_and_Locales" name="Skins_and_Locales">Skins and Locales</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Adding_Style_Sheets" title="en/XUL_Tutorial/Adding_Style_Sheets">Adding Style Sheets</a></li>
- <li><a href="/en/XUL_Tutorial/Styling_a_Tree" title="en/XUL_Tutorial/Styling_a_Tree">Styling a Tree</a></li>
- <li><a href="/en/XUL_Tutorial/Modifying_the_Default_Skin" title="en/XUL_Tutorial/Modifying_the_Default_Skin">Modifying the Default Skin</a></li>
- <li><a href="/en/XUL_Tutorial/Creating_a_Skin" title="en/XUL_Tutorial/Creating_a_Skin">Creating a Skin</a></li>
- <li><a href="/en/XUL_Tutorial/Localization" title="en/XUL_Tutorial/Localization">Localization</a></li>
- <li><a href="/en/XUL_Tutorial/Property_Files" title="en/XUL_Tutorial/Property_Files">Property Files</a></li>
-</ul>
-<h5 id="Bindings" name="Bindings">Bindings</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Introduction_to_XBL" title="en/XUL_Tutorial/Introduction_to_XBL">Introduction to XBL</a></li>
- <li><a href="/en/XUL_Tutorial/Anonymous_Content" title="en/XUL_Tutorial/Anonymous_Content">Anonymous Content</a></li>
- <li><a href="/en/XUL_Tutorial/XBL_Attribute_Inheritance" title="en/XUL_Tutorial/XBL_Attribute_Inheritance">XBL Attribute Inheritance</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_Properties_to_XBL-defined_Elements" title="en/XUL_Tutorial/Adding_Properties_to_XBL-defined_Elements">Adding Properties</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_Methods_to_XBL-defined_Elements" title="en/XUL_Tutorial/Adding_Methods_to_XBL-defined_Elements">Adding Methods</a></li>
- <li><a href="/en/XUL_Tutorial/Adding_Event_Handlers_to_XBL-defined_Elements" title="en/XUL_Tutorial/Adding_Event_Handlers_to_XBL-defined_Elements">Adding Event Handlers</a></li>
- <li><a href="/en/XUL_Tutorial/XBL_Inheritance" title="en/XUL_Tutorial/XBL_Inheritance">XBL Inheritance</a></li>
- <li><a href="/en/XUL_Tutorial/XBL_Example" title="en/XUL_Tutorial/XBL_Example">XBL Example</a></li>
-</ul>
-<h5 id="Specialized_Window_Types" name="Specialized_Window_Types">Specialized Window Types</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Features_of_a_Window" title="en/XUL_Tutorial/Features_of_a_Window">Features of a Window</a></li>
- <li><a href="/en/XUL_Tutorial/Creating_Dialogs" title="en/XUL_Tutorial/Creating_Dialogs">Creating Dialogs</a></li>
- <li><a href="/en/XUL_Tutorial/Open_and_Save_Dialogs" title="en/XUL_Tutorial/Open_and_Save_Dialogs">Open and Save Dialogs</a></li>
- <li><a href="/en/XUL_Tutorial/Creating_a_Wizard" title="en/XUL_Tutorial/Creating_a_Wizard">Creating a Wizard</a></li>
- <li><a href="/en/XUL_Tutorial/More_Wizards" title="en/XUL_Tutorial/More_Wizards">More Wizards</a></li>
- <li><a href="/en/XUL_Tutorial/Overlays" title="en/XUL_Tutorial/Overlays">Overlays</a></li>
- <li><a href="/en/XUL_Tutorial/Cross_Package_Overlays" title="en/XUL_Tutorial/Cross_Package_Overlays">Cross Package Overlays</a></li>
-</ul>
-<h5 id="Installation" name="Installation">Installation</h5>
-<ul>
- <li><a href="/en/XUL_Tutorial/Creating_an_Installer" title="en/XUL_Tutorial/Creating_an_Installer">Creating an Installer</a></li>
- <li><a href="/en/XUL_Tutorial/Install_Scripts" title="en/XUL_Tutorial/Install_Scripts">Install Scripts</a></li>
- <li><a href="/en/XUL_Tutorial/Additional_Install_Features" title="en/XUL_Tutorial/Additional_Install_Features">Additional Install Features</a></li>
-</ul>
-<div class="note">
- <p>This XUL tutorial was originally created by <a class="external" href="http://www.xulplanet.com/ndeakin/">Neil Deakin</a>. He has graciously given us permission to use it as part of the <a href="/Project:en/About" title="Project:en/About">MDC</a>.</p>
-</div>
-<div class="originaldocinfo">
- <h5 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h5>
- <ul>
- <li>Author: <a class="external" href="http://www.xulplanet.com/ndeakin/">Neil Deakin</a></li>
- <li>Copyright Information: © 1999-2005 XULPlanet.com</li>
- </ul>
-</div>
-<p><span class="comment">Interwiki Language Links</span></p>
diff --git a/files/zh-tw/zones/index.html b/files/zh-tw/zones/index.html
deleted file mode 100644
index 5d6bf109d3..0000000000
--- a/files/zh-tw/zones/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Zones
-slug: Zones
-translation_of: Zones
----
-<p>MDN zones provide you one-stop access to information about specific topic areas or products. Here's a list of all the zones available to you.</p>
-
-<div class="row topicpage-table">
-<div class="section">
-<h2 id="Web_and_app_development">Web and app development</h2>
-
-<dl>
- <dt><a href="/en-US/Apps">App Center</a></dt>
- <dd>Learn how to create open Web apps—rich experiences that run across multiple devices and form factors—using the same Web standards and open technologies you already know.</dd>
- <dt><a href="/en-US/docs/Learn">Learning Area</a></dt>
- <dd>This zone is all about articles to help newcomers to Web development get started in this exciting new world.</dd>
- <dt><a href="/en-US/docs/Tools">Developer tools</a></dt>
- <dd>Learn how to use the Firefox developer tools to debug, test, and optimize your Web apps and sites.</dd>
- <dt><a href="/en-US/Marketplace">Firefox Marketplace</a></dt>
- <dd>An open, non-proprietary online marketplace for Web applications built using HTML, CSS, and JavaScript. Submit apps to the Firefox Marketplace or use the code to build your own marketplace.</dd>
- <dt><a href="/en-US/docs/Games">Game development</a></dt>
- <dd>Learn how to develop games for the Web, how to port existing games to Web technologies, and how to turn your games into Web apps.</dd>
-</dl>
-</div>
-
-<div class="section">
-<h2 id="Products" name="Products">Products and projects</h2>
-
-<dl>
- <dt><a href="/en-US/docs/Emscripten">Emscripten</a></dt>
- <dd>An LLVM to JavaScript compiler; this lets you compile, for example, C++ code into JavaScript code which can be run in any Web browser.</dd>
- <dt><a href="/en-US/docs/L20n">L20n</a></dt>
- <dd>A JavaScript localization framework for unleashing your natural language's power with simple code.</dd>
- <dt><a href="/en-US/docs/Project:MDN">The MDN project</a></dt>
- <dd>The Mozilla Developer Network (this site) relies on its community of readers and contributors to grow and improve. You can learn here how to help use, contribute to, and build the code behind MDN!</dd>
- <dt><a href="/en-US/Persona">Persona</a></dt>
- <dd>A new simple, privacy-sensitive single-sign in system developed by Mozilla which lets users log into your Web site using their email address, freeing you from password management.</dd>
-</dl>
-
-<h2 id="Mozilla_technologies">Mozilla technologies</h2>
-
-<dl>
- <dt><a href="/en-US/Add-ons">Add-ons</a></dt>
- <dd>Learn how to build and install extensions, themes, and plug-ins for Mozilla-based software, including the popular Firefox Web browser.</dd>
- <dt><a href="/en-US/Firefox">Firefox</a></dt>
- <dd>Learn all about Firefox, from how to build and revise it to how to build add-ons specifically for it.</dd>
- <dt><a href="/en-US/Firefox_OS">Firefox OS</a></dt>
- <dd>A new mobile operating system developed by Mozilla which lets users install and run open Web applications created using HTML, CSS, and JavaScript.</dd>
-</dl>
-</div>
-</div>
-
-<p> </p>
diff --git a/files/zh-tw/以_windows_登錄碼安裝擴充套件/index.html b/files/zh-tw/以_windows_登錄碼安裝擴充套件/index.html
deleted file mode 100644
index 521a6c1445..0000000000
--- a/files/zh-tw/以_windows_登錄碼安裝擴充套件/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: 以 Windows 登錄碼安裝擴充套件
-slug: 以_Windows_登錄碼安裝擴充套件
-tags:
- - 擴充套件
-translation_of: >-
- https://extensionworkshop.com/documentation/publish/signing-and-distribution-overview/
----
-<h3 id=".E7.B0.A1.E4.BB.8B"> 簡介 </h3>
-<p>本文演示以 Windows 登錄碼 (Registry)「安裝」Firefox/Thunderbird <a href="zh_tw/%e6%93%b4%e5%85%85%e5%a5%97%e4%bb%b6">擴充套件</a>的方法。此功能可以方便協力廠商的程式為 Firefox 或 Thunderbird 安裝套件。
-</p><p><b>注意</b> 本文所描述的功能只在 Firefox/Thunderbird 1.5 以上版本有用。
-</p>
-<h3 id=".E5.AE.89.E8.A3.9D"> 安裝 </h3>
-<p>在下列兩個登錄碼下新增項目便可安裝套件:
-</p>
-<pre class="eval">HKEY_CURRENT_USER\Software\Mozilla\Firefox\Extensions
-HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions
-</pre>
-<p>若要裝在 Thunderbird 中,則將上面的 <code>Firefox</code> 改為 <code>Thunderbird</code> 即可。
-</p><p>新增的項目需以擴充套件的 <a href="zh_tw/%e5%a5%97%e4%bb%b6%e5%ae%89%e8%a3%9d%e6%aa%94%e7%b5%90%e6%a7%8b#id">ID</a> 為名、型態設定為 <code>REG_SZ</code>,其值則為套件安裝檔所在資料夾的完整路徑。舉例來說,要安裝<a href="zh_tw/%e8%a3%bd%e4%bd%9c%e6%93%b4%e5%85%85%e5%a5%97%e4%bb%b6">製作擴充套件</a>範例中的套件,則需新增一個名為 <code><a class=" link-mailto" href="mailto:sample@foo.net">sample@foo.net</a></code> 的登錄碼項目,並將其值設定為 <code>c:\extensions\myExtension</code>。
-</p><p>新增登錄碼之後,下回 Firefox/Thunderbird 啟動時便會偵測其值遂行安裝。在 Firefox/Thunderbird 執行中時依然可以更動登錄碼。
-</p><p>如果 <code>HKEY_CURRENT_USER</code> 及 <code>HKEY_LOCAL_MACHINE</code> 中有相同的登錄碼項目,則會先行採用 <code>HKEY_CURRENT_USER</code> 中的套件;如果使用者自行安裝過相同的擴充套件,則自行安裝的會優先使用。
-</p>
-<h3 id=".E7.A7.BB.E9.99.A4"> 移除 </h3>
-<p>要移除以 Windows 登錄碼安裝的套件,只要將相對應的登錄碼項目移除即可。移除登錄碼之後,下回 Firefox/Thunderbird 啟動偵測後便會一併移除套件。在 Firefox/Thunderbird 執行中時依然可以更動登錄碼。
-</p>
-<h3 id=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80"> 延伸閱讀 </h3>
-<p><a href="zh_tw/%e5%8c%85%e8%a3%9d%e6%93%b4%e5%85%85%e5%a5%97%e4%bb%b6">包裝擴充套件</a>
-</p>
-<div class="noinclude">
-</div>
-{{ languages( { "en": "en/Adding_Extensions_using_the_Windows_Registry", "ja": "ja/Adding_Extensions_using_the_Windows_Registry", "zh-cn": "cn/Adding_Extensions_using_the_Windows_Registry" } ) }}
diff --git a/files/zh-tw/佈景主題/background/index.html b/files/zh-tw/佈景主題/background/index.html
deleted file mode 100644
index 0d87ee8724..0000000000
--- a/files/zh-tw/佈景主題/background/index.html
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Background Themes
-slug: 佈景主題/Background
-translation_of: Mozilla/Add-ons/Themes/Lightweight_themes
----
-<h2 id="如何創建自己的背景主題"><img alt="我家的多多小姐又再亂咬東西了" src="https://mdn.mozillademos.org/files/13474/20150711_212448.jpg" style="height: 2448px; width: 3264px;"><font><font><font><font>如何創建自己的背景主題</font></font></font></font></h2>
-
-<div class="primary auto" id="getting-started">
-<p><font><font><font><font>主題是由一個“頭”圖形圖像文件,它外觀中的默認UI Firefox的背景。</font></font></font></font></p>
-
-<p><font><font><font><font>完成你的設計?</font></font></font><font><font><font>您可以</font></font></font></font><a href="https://addons.mozilla.org/developers/theme/submit"><font><font><font><font>馬上提交!</font></font></font></font></a></p>
-
-<h3 id="創建主題標題圖片"><font><font><font><font>創建主題標題圖片</font></font></font></font></h3>
-
-<p><font><font>頭圖像顯示在瀏覽器窗口頂部的背景下,偎依在工具欄,地址欄,搜索欄和標籤欄的後面。</font><font>它將被</font></font><strong><font><font>錨定到右上角</font></font></strong><font><font>的瀏覽器窗口。</font></font></p>
-
-<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9929/header-step.jpg" style="height: 215px; width: 1059px;"></p>
-
-<ul>
- <li><a href="https://addons.cdn.mozilla.net/static/img/docs/themes/header.jpg"><font><font><font><font>在這裡查看示例主題標題。</font></font></font></font></a></li>
-</ul>
-
-<h4 id="圖片要求"><font><font><font><font>圖片要求</font></font></font></font></h4>
-
-<ul>
- <li><font><font><font><font><font><font>尺寸應為</font></font></font></font></font></font><strong><font><font><font><font><font><font>3000px寬×高200像素</font></font></font></font></font></font></strong></li>
- <li><font><font><font><font><font><font>PNG或JPG文件格式</font></font></font></font></font></font></li>
- <li><font><font><font><font>圖片不得超過300 KB的文件大小</font></font></font></font></li>
-</ul>
-
-<h4 id="提示"><font><font><font><font><font><font>提示</font></font></font></font></font></font></h4>
-
-<ul>
- <li><font><font><font><font>含蓄,柔和對比度的圖像和漸變的效果最好; </font></font></font><font><font><font>非常詳細的圖像將與瀏覽器UI競爭。</font></font></font></font></li>
- <li><font><font><font><font>火狐可以揭示更多的圖像的下部的,如果另一工具欄或其他UI元素被添加到窗口的頂部。</font></font></font></font></li>
- <li><font><font><font><font>圖像的右上側應具有的最重要的信息,作為用戶增加了瀏覽器窗口的寬度,瀏覽器顯示多個圖像的左手側的。</font></font></font></font></li>
-</ul>
-
-<h4 id="在線圖像編輯器資源"><font><font><font><font>在線圖像編輯器資源</font></font></font></font></h4>
-
-<ul>
- <li><a href="http://www.pixlr.com"><font><font><font><font>Pixlr等</font></font></font></font></a><font><font><font><font> -的Pixlr提供專業的和易於使用的工具,在瀏覽器中創建和編輯圖像。</font></font></font></font></li>
- <li><a href="http://www.photoshop.com"><font><font><font><font>Photoshop中</font></font></font></font></a><font><font><font><font> -調整,旋轉,照片潤色使用Photoshop®快速,免費的在線圖片編輯器。</font></font></font></font></li>
-</ul>
-
-<h3 id="創建主題頁腳圖像"><font><font><font><font>創建主題頁腳圖像</font></font></font></font></h3>
-
-<p><font><font><font><font>在舊版本的Firefox或更新版本的安裝一定的附加組件,頁腳圖像顯示為瀏覽器窗口底部的背景下,該加載項並找到酒吧的後面。</font></font></font><font><font><font>它將被固定在瀏覽器窗口的左下角。</font></font></font><font><font><font>頁腳圖像是可選的。</font></font></font></font></p>
-
-<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9935/footer-step.jpg" style="height: 56px; width: 1249px;"></p>
-
-<ul>
- <li><a href="https://addons.cdn.mozilla.net/static/img/docs/themes/footer.jpg"><font><font><font><font>在這裡查看示例主題頁腳。</font></font></font></font></a></li>
-</ul>
-
-<h4 id="圖片要求_2"><font><font><font><font><font><font>圖片要求</font></font></font></font></font></font></h4>
-
-<ul>
- <li><font><font><font><font><font><font>尺寸應為</font></font></font></font></font></font><strong><font><font><font><font><font><font>3000px寬×高100像素</font></font></font></font></font></font></strong></li>
- <li><font><font><font><font><font><font>PNG或JPG文件格式</font></font></font></font></font></font></li>
- <li><font><font><font><font><font><font>圖片不得超過300 KB的文件大小</font></font></font></font></font></font></li>
-</ul>
-
-<h4 id="提示_2"><font><font><font><font><font><font>提示</font></font></font></font></font></font></h4>
-
-<ul>
- <li><font><font><font><font><font><font>含蓄,柔和對比度的圖像和漸變的效果最好; </font></font></font></font></font><font><font><font><font><font>非常詳細的圖像將與瀏覽器UI競爭。</font></font></font></font></font></font></li>
- <li><font><font><font><font>火狐可以揭示更多的圖像上部,如果查找欄打開或擴展增加了更多的高度到窗口的底部。</font></font></font></font></li>
- <li><font><font><font><font>圖像的左手側應具有最importan信息作為用戶增加了瀏覽器窗口的寬度,瀏覽器顯示多個圖像的右手側的。</font></font></font></font></li>
-</ul>
-
-<h3 id="提交您的主題圖像"><font><font><font><font>提交您的主題圖像</font></font></font></font></h3>
-
-<p><font><font><font><font>要開始提交您的圖片,轉到主題提交頁面:</font></font></font></font></p>
-
-<ol class="itemized">
- <li><strong><font><font><font><font>命名的主題</font></font></font></font></strong><font><font><font><font> -挑你的主題的唯一名稱。</font></font></font><font><font><font>重複的名稱是不允許的,所以你可能需要嘗試幾次找到唯一的名稱。</font></font></font></font></li>
- <li><strong><font><font><font><font>選擇一個類別和標籤</font></font></font></font></strong><font><font><font><font> -選擇一個類別,並輸入一些標籤最能描述你的主題。</font></font></font><font><font><font>請記住,審閱者可能會拒絕你的主題,如果很明顯,您的類別和/或標籤無關您的主題。</font></font></font></font></li>
- <li><strong><font><font><font><font>描述你的主題</font></font></font></font></strong><font><font><font><font> -寫你的主題進行了簡短說明。</font></font></font><font><font><font>請記住,審閱者可能會拒絕你的主題,如果你的描述不是你的主題準確地表述。</font></font></font></font></li>
- <li><strong><font><font><font><font>為您的主題牌</font></font></font></font></strong><font><font><font><font> -決定了你工作的版權許可。</font></font></font></font><a href="http://creativecommons.org/licenses/"><font><font><font><font>了解更多關於類型的知識共享許可。</font></font></font></font></a>
- <ul>
- <li><strong><font><font><font><font>重要提示:</font></font></font></font></strong><font><font><font><font>請確保您有使用圖像在你的主題的權利!</font></font></font></font></li>
- </ul>
- </li>
- <li><strong><font><font><font><font>上傳圖片</font></font></font></font></strong><font><font><font><font> -確保他們受到300 KB的大小和JPG或PNG格式!</font></font></font></font></li>
- <li><strong><font><font><font><font>選擇文本和標籤的顏色</font></font></font></font></strong><font><font><font><font> -您可以選擇最適合您的標題圖片選項卡(“背景”)的顏色和前景文本顏色。</font></font></font></font></li>
- <li><strong><font><font><font><font>預覽你的主題</font></font></font></font></strong><font><font><font><font> -你準備好預覽您的主題!</font></font></font><font><font><font>只需將鼠標懸停在上面提交主題按鈕,看看它的樣子瞬間影像。</font></font></font></font></li>
- <li><strong><font><font><font><font>提交你的主題</font></font></font></font></strong><font><font><font><font> -如果一切看起來正常,點擊提交按鈕的主題,你就大功告成了!</font></font></font><font><font><font>你可以查看你的個人資料頁面上撰寫的主題。</font></font></font></font>
- <ul>
- <li><strong><font><font><font><font>提示:</font></font></font></font></strong><font><font><font><font>為確保您的主題已被批准用於畫廊,確保它與內容準則和服務條款的規定!</font></font></font></font></li>
- </ul>
- </li>
-</ol>
-
-<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9933/submission-step.jpg" style="height: 1800px; width: 785px;"></p>
-
-<p class="call-to-submit"><a class="button prominent" href="https://addons.mozilla.org/en-US/developers/theme/submit"><font><font><font><font>提交你的主題現在</font></font></font></font></a></p>
-
-<h2 class="call-to-submit" id="更多教程"><font><font><font><font><font><font>更多教程</font></font></font></font></font></font></h2>
-
-<p><a href="http://vanillaorchidstutorials.blogspot.com/2015/11/mozilla-themes-focal-point-sizing.html"><font><font><font><font>Mozilla的主題聯絡點漿紗上</font></font></font></font></a><font><font><font><font> -上側重於上漿主題化,通過VanillaOrchids教程。</font></font></font></font></p>
-</div>
diff --git a/files/zh-tw/佈景主題/index.html b/files/zh-tw/佈景主題/index.html
deleted file mode 100644
index fdcea039ce..0000000000
--- a/files/zh-tw/佈景主題/index.html
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: 佈景主題
-slug: 佈景主題
-tags:
- - 佈景主題
-translation_of: Mozilla/Add-ons/Themes
----
-<p> </p>
-
-<div class="callout-box"><strong><a href="zh_tw/%e8%a3%bd%e4%bd%9c_Firefox_%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c">新手上路</a></strong><br>
-Firefox 佈景主題製作入門。</div>
-
-<div><strong>佈景主題</strong> 是 Mozilla 各種應用程式的介面外觀。Mozilla 應用程式可以讓使用者依喜好更動程式的視覺觀感,而這些佈景主題可以簡單更換使用介面的色彩等項目,也可以更動物件的顯示位置。</div>
-
-<p>&lt;div style="clear:both;" /&gt;</p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h4 id=".E6.96.87.E4.BB.B6" name=".E6.96.87.E4.BB.B6"><a>文件</a></h4>
-
- <dl>
- <dt><a href="zh_tw/%e8%a3%bd%e4%bd%9c_Firefox_%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c">製作 Firefox 佈景主題</a></dt>
- <dd><small>Firefox 佈景主題製作入門。</small></dd>
- </dl>
-
- <dl>
- <dt><a href="zh_tw/%e5%8c%85%e8%a3%9d%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c">包裝佈景主題</a></dt>
- <dd><small>為 Firefox 及 Thunderbird 包裝佈景主題安裝檔。</small></dd>
- </dl>
-
- <dl>
- <dt><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=197434">Firefox 1.0 至 1.5 間關於佈景主題的變動(MozillaZine 討論區文章)</a></dt>
- <dd><small><a class="external" href="http://www.mozillazine.org">MozillaZine</a> 一篇討論 Firefox 1.0 至 1.5 間關於佈景主題變動項目的文章。</small></dd>
- </dl>
-
- <dl>
- <dt><a class="external" href="http://kb.mozillazine.org/Dev_:_Themes">開發佈景主題</a></dt>
- <dd><small>一篇廣泛談論各種 XUL 程式佈景主題設計開發細節的文章。</small></dd>
- </dl>
-
- <dl>
- <dt><a class="external" href="http://cheeaun.phoenity.com/weblog/2004/12/first-steps-in-theme-design.html">佈景主題設計第一步</a></dt>
- <dd><small>一篇有點舊的文章,談 Firefox 的佈景主題設計。</small></dd>
- </dl>
-
- <p><span class="alllinks"><a>所有文章...</a></span></p>
- </td>
- <td>
- <h4 id=".E7.A4.BE.E7.BE.A4" name=".E7.A4.BE.E7.BE.A4">社群</h4>
-
- <ul>
- <li>查閱 Mozilla 討論區...</li>
- </ul>
-
-<ul>
- <li><a href="https://lists.mozilla.org/listinfo/dev-themes">郵件討論</a></li>
- <li><a href="news://news.mozilla.org/mozilla.dev.themes">新聞群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.themes">Google 群組</a></li>
- <li><a href="http://groups.google.com/group/mozilla.dev.themes">feeds 消息來源</a></li>
-</ul>
-
- <ul>
- <li><a class="link-irc" href="irc://irc.mozilla.org/#themedev">#themedev IRC 頻道</a></li>
- <li><a class="external" href="http://forums.mozillazine.org/viewforum.php?f=18">MozillaZine 佈景主題討論區</a></li>
- </ul>
-
- <h4 id=".E5.B7.A5.E5.85.B7" name=".E5.B7.A5.E5.85.B7">工具</h4>
-
- <ul>
- <li><a href="zh_tw/DOM_%e8%a7%80%e5%af%9f%e5%99%a8">DOM 觀察器</a></li>
- <li><a class="link-https" href="https://addons.mozilla.org/firefox/63/">InspectorWidget</a> 擴充套件</li>
- <li><a class="external" href="http://www.extensionsmirror.nl/index.php?showtopic=21">ChromeEdit 擴充套件</a></li>
- </ul>
-
- <p><span class="alllinks"><a>所有文章...</a></span></p>
-
- <h4 id=".E7.9B.B8.E9.97.9C.E4.B8.BB.E9.A1.8C" name=".E7.9B.B8.E9.97.9C.E4.B8.BB.E9.A1.8C">相關主題</h4>
-
- <dl>
- <dd><a href="zh_tw/CSS">CSS</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
-
-<p><span class="comment">Categories</span></p>
-
-<p><span class="comment">Interwiki Language Links</span></p>
-
-<p> </p>
-
-<div class="noinclude"> </div>
-
-<p>{{ languages( { "de": "de/Themes", "en": "en/Themes", "es": "es/Temas", "fr": "fr/Th\u00e8mes", "ja": "ja/Themes", "pl": "pl/Motywy", "zh-cn": "cn/\u4e3b\u9898" } ) }}</p>
diff --git a/files/zh-tw/擴充套件/index.html b/files/zh-tw/擴充套件/index.html
deleted file mode 100644
index a6df5c978b..0000000000
--- a/files/zh-tw/擴充套件/index.html
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: 擴充套件
-slug: 擴充套件
-tags:
- - 待翻譯
- - 擴充套件
-translation_of: Mozilla/Add-ons
----
-<div>
-<p><strong>擴充套件(</strong><strong>Extensions)</strong>可加入新功能到 Mozilla 應用程式(如 Firefox、SeaMonkey 及 Thunderbird)。從工具列按鈕到全新的功能,擴充套件都做的到。擴充套件使應用程式能夠自訂,以符合使用者的個人需求,並保持應用程式的輕巧以便下載。</p>
-<p>擴充套件與<a href="/en/Plugins" title="en/Plugins">外掛(plugin)</a>並不相同,外掛可幫助瀏覽器顯示特別的內容,像是播放多媒體檔案。擴充套件與<a href="/en/Creating_OpenSearch_plugins_for_Firefox" title="en/Creating_OpenSearch_plugins_for_Firefox">搜尋外掛(search plugin)</a>也不相同,搜尋外掛可在搜尋列上附加搜尋引擎。</p>
-</div>
-<table class="topicpage-table"> <tbody> <tr> <td> <h4 id="Documentation" name="Documentation"><a href="/Special:Tags" title="Site Tags">文件</a></h4>
-<p><br>
-<strong>全體</strong>(適用於全部的 Mozilla 應用程式):</p>
-<ul> <li><a class="internal" href="/zh_tw/%E9%85%8D%E7%BD%AE%E5%A5%97%E4%BB%B6%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83" title="zh tw/配置套件開發環境">為擴充套件配置開發環境</a> <small>一些必要的配置提示,可使擴充套件的開發更為順手。</small></li> <li><a class="internal" href="/zh_tw/%E5%BB%BA%E7%AB%8B%E6%93%B4%E5%85%85%E5%A5%97%E4%BB%B6" title="zh tw/建立擴充套件">建立擴充套件</a> <small>建立基本擴充套件的入門教學。</small></li> <li><a class="internal" href="/zh_tw/%E5%8C%85%E8%A3%9D%E6%93%B4%E5%85%85%E5%A5%97%E4%BB%B6" title="zh tw/包裝擴充套件">包裝擴充套件</a> <small>如何包裝你的擴充套件,以便安裝和下載。</small></li> <li><a class="internal" href="/zh_tw/%E5%AE%89%E8%A3%9D%E6%93%B4%E5%85%85%E5%A5%97%E4%BB%B6" title="zh tw/安裝擴充套件">安裝擴充套件</a> <small>如何有規劃的安裝擴充套件。</small></li> <li><a class="internal" href="/zh_tw/%E6%8F%90%E4%BA%A4%E9%99%84%E5%8A%A0%E5%85%83%E4%BB%B6%E8%87%B3_AMO" title="zh tw/提交附加元件至 AMO">提交附加元件至 AMO</a> <small>如何使用 AMO 網站散佈你的 </small><small>add-on</small><small>。</small></li> <li><a class="internal" href="/zh_tw/%E6%93%B4%E5%85%85%E5%A5%97%E4%BB%B6%E5%95%8F%E7%AD%94%E9%9B%86" title="zh tw/擴充套件問答集">擴充套件問答集</a> <small>有關開發擴充套件的常見問題和解答。</small></li>
-</ul>
-<p><a class="internal" href="/En/Extensions/Firefox" title="En/Extensions/Firefox"><strong>Firefox</strong></a> </p>
-<p><a class="internal" href="/en/Extensions/Thunderbird" title="En/Extensions/Thunderbird"><strong>Thunderbird</strong></a></p>
-<p><a class="internal" href="/En/Extensions/SeaMonkey" title="En/Extensions/SeaMonkey"><strong>SeaMonkey</strong></a><a class="internal" href="/En/Extensions_support_in_SeaMonkey_2" title="en/Extensions_support_in_SeaMonkey_2"><br>
-</a></p>
-<p><a class="external" href="http://starkravingfinkle.org/blog/2009/05/resources-for-fennec-add-on-developers/" title="http://starkravingfinkle.org/blog/2009/05/resources-for-fennec-add-on-developers/"><strong>Fennec</strong></a> (mobile 瀏覽器)</p>
-<dl> <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Extensions" title="Special:Tags?tag=Extensions">檢視所有標記為"擴充套件"的頁面...</a></span></p></dl></td> <td> <h3 id="社群">社群</h3> <ul> <li> <p>瀏覽 Mozilla 擴充套件開發論壇...</p> </li> </ul> <p>{{ DiscussionList("dev-extensions", "mozilla.dev.extensions") }}</p> <ul> <li><a class="link-irc" href="irc://irc.mozilla.org/extdev">#extdev IRC channel</a></li> <li><a class="external" href="http://forums.mozillazine.org/?c=11">MozillaZine forum</a></li> <li><a class="external" href="/devnews/index.php/categories/about-addons" title="https://developer.mozilla.org/editor/fckeditor/core/editor/devnews/index.php/categories/about-addons/">about:addons newsletter</a></li> <li><a class="external" href="/web-tech" title="https://developer.mozilla.org/editor/fckeditor/core/editor/web-tech/">Mozilla's Web-Tech blog</a></li> <li><a class="external" href="http://mozdev.org/mailman/listinfo/project_owners">mozdev project owners</a></li> <li><a class="external" href="http://planet.mozilla.org/" title="http://planet.mozilla.org/">Planet Mozilla</a></li> <li><a href="/en/Extensions/Community" title="en/Extensions/Community">Other community links...</a></li> </ul> <h3 id="工具">工具</h3> <ul> <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a> 即時編輯 DOM(Firefox 和 Thunderbird)</li> <li><a class="external" href="http://www.hacksrus.com/~ginda/venkman/" rel="external nofollow" title="http://www.hacksrus.com/~ginda/venkman/">Venkman</a>,JavaScript 除錯器(<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/216">Firefox</a>、<a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/216">Thunderbird</a>)</li> <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/7434/" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer's Extension</a> 開發工具組</li> <li><a class="external" href="http://www.gijsk.com/" rel="external nofollow" title="http://www.gijsk.com/">Chrome List</a> 檢視在 <a class=" external" rel="freelink">chrome://</a> 底下的檔案(<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/4453">Firefox</a>、<a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/4453">Thunderbird</a>)</li> <li><a class="external" href="http://ted.mielczarek.org/code/mozilla/extensionwiz/" rel="external nofollow" title="http://ted.mielczarek.org/code/mozilla/extensionwiz/">Extension Wizard</a> 以 web 為基礎的擴充套件架構產生器(Firefox 和 Thunderbird)</li> </ul> ... <a class="internal" href="/en/Setting_up_extension_development_environment#Development_extensions" title="en/Setting up extension development environment#Development extensions">更多工具</a> ...<br> <span class="alllinks"><br> </span> <h3 id="相關主題">相關主題</h3> <dl> <dd><a href="/en/XUL" title="en/XUL">XUL</a>, <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/en/Themes" title="en/Themes">Themes</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a></dd> </dl> </td> </tr> </tbody> </table> <p><span class="comment">Categories</span></p> <p><span class="comment">Interwiki Language Links</span></p> <p>    </p> <p>    </p> <p>{{ languages( { "en": "en/Extension", "de": "de/Erweiterungen", "es": "es/Extensiones", "fr": "fr/Extensions", "it": "it/Estensioni", "ja": "ja/Extensions", "ko": "ko/Extensions", "pl": "pl/Rozszerzenia", "pt": "pt/Extens\u00f5es", "ru": "ru/\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f", "zh-cn": "cn/\u6269\u5c55", "zh-tw": "zh_tw/\u64f4\u5145\u5957\u4ef6" } ) }}</p>
diff --git a/files/zh-tw/製作_firefox_佈景主題/contents.rdf/index.html b/files/zh-tw/製作_firefox_佈景主題/contents.rdf/index.html
deleted file mode 100644
index 4c19884c30..0000000000
--- a/files/zh-tw/製作_firefox_佈景主題/contents.rdf/index.html
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: contents.rdf
-slug: 製作_Firefox_佈景主題/contents.rdf
-translation_of: Archive/Themes/Creating_a_Skin_for_Firefox/contents.rdf
----
-<p>
-</p><p>將下列文字複製貼進純文字檔中,命名為「<code>contents.rdf</code>」:
-</p>
-<pre>&lt;?xml version="1.0"?&gt;
-
-&lt;RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#"&gt;
-
- &lt;!-- 列出此佈景主題提供的外觀樣式 --&gt;
- &lt;RDF:Seq about="urn:mozilla:skin:root"&gt;
- &lt;RDF:li resource="urn:mozilla:skin:My_Theme"/&gt;
- &lt;/RDF:Seq&gt;
-
- &lt;RDF:Description about="urn:mozilla:skin:My_Theme"
- chrome:displayName="My Theme"
- chrome:accessKey="N"
- chrome:author=""
- chrome:authorURL=""
- chrome:description=""
- chrome:name="My_Theme"
- chrome:image="preview.png" &gt;
- &lt;chrome:packages&gt;
- &lt;RDF:Seq about="urn:mozilla:skin:My_Theme:packages"&gt;
- &lt;RDF:li resource="urn:mozilla:skin:My_Theme:browser"/&gt;
- &lt;RDF:li resource="urn:mozilla:skin:My_Theme:communicator"/&gt;
- &lt;RDF:li resource="urn:mozilla:skin:My_Theme:global"/&gt;
- &lt;RDF:li resource="urn:mozilla:skin:My_Theme:mozapps"/&gt;
- &lt;RDF:li resource="urn:mozilla:skin:My_Theme:help"/&gt;
- &lt;/RDF:Seq&gt;
- &lt;/chrome:packages&gt;
- &lt;/RDF:Description&gt;
-
- &lt;!-- 版本資訊,這個佈景主題僅支援主版本號碼為 1 的 Firefox。 --&gt;
- &lt;RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:browser"/&gt;
- &lt;RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:communicator"/&gt;
- &lt;RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:global"/&gt;
- &lt;RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:mozapps"/&gt;
- &lt;RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:help"/&gt;
-&lt;/RDF:RDF&gt;
-</pre>
-<div class="noinclude">
-</div>
-{{ languages( { "de": "de/Theme_erstellen/contents.rdf", "en": "en/Creating_a_Skin_for_Firefox/contents.rdf", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/contents.rdf", "ja": "ja/Creating_a_Skin_for_Firefox/contents.rdf", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/contents.rdf", "pt": "pt/Criando_um_visual_para_o_Firefox/contents.rdf" } ) }}
diff --git a/files/zh-tw/製作_firefox_佈景主題/index.html b/files/zh-tw/製作_firefox_佈景主題/index.html
deleted file mode 100644
index bf8d1ded4d..0000000000
--- a/files/zh-tw/製作_firefox_佈景主題/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: 製作 Firefox 佈景主題
-slug: 製作_Firefox_佈景主題
-tags:
- - 佈景主題
-translation_of: Archive/Themes/Creating_a_Skin_for_Firefox
----
-<p> </p>
-
-<h3 id=".E7.B0.A1.E4.BB.8B" name=".E7.B0.A1.E4.BB.8B">簡介</h3>
-
-<p>要製作 Firefox 的佈景主題,必須先清楚編輯圖片的方法、解壓縮 ZIP 的方法以及更動 CSS 的方法。Firefox 的按鈕使用標準 GIF、PNG 及 JPEG 格式的圖片,而其餘介面則由 CSS 調整。</p>
-
-<p><b>什麼叫佈景主題?</b></p>
-
-<p>佈景主題不會把介面全盤修改,而只是讓外觀看起來不同。你無法藉佈景主題控制使用者在圖片上按下右鍵時的狀況,不過可以更動右鍵快捷選單的模樣(例如顯示為藍底加上粉紅斑點等等)。如果你想修改 Firefox 的功能,可能要查閱修改 chrome 的相關文件,這已超出本文範圍。</p>
-
-<h3 id=".E5.85.A7.E5.AE.B9" name=".E5.85.A7.E5.AE.B9">內容</h3>
-
-<ul>
- <li><a href="zh_tw/%e8%a3%bd%e4%bd%9c_Firefox_%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c/%e4%b8%8a%e6%89%8b%e7%af%87">新手上路</a></li>
-</ul>
-
-<hr>
-<div class="originaldocinfo">
-<h3 id=".E5.8E.9F.E5.A7.8B.E6.96.87.E4.BB.B6.E8.B3.87.E8.A8.8A" name=".E5.8E.9F.E5.A7.8B.E6.96.87.E4.BB.B6.E8.B3.87.E8.A8.8A">原始文件資訊</h3>
-
-<ul>
- <li>作者:Neil Marshall and Tucker Lee</li>
- <li>其他貢獻者(提出建議、編修詞句等): Brent Marshall, CDN (<a class="external" href="http://themes.mozdev.org" rel="freelink">http://themes.mozdev.org</a>), JP Martin, Boris Zbarsky, Asa Dotzler, WeSaySo, David James, Dan Mauch, Anders Conbere, Tim Regula (<a class="external" href="http://www.igraphics.nn.cx" rel="freelink">http://www.igraphics.nn.cx</a>)</li>
- <li>版權資訊:Copyright 2002-2003 Neil Marshall,於 2005 四月以電子郵件授權 MDC 將文件合併至 Wiki 上。</li>
- <li>原文:<a class="external" href="http://www.eightlines.com/neil/mozskin" rel="freelink">http://www.eightlines.com/neil/mozskin</a></li>
-</ul>
-</div>
-
-<div class="noinclude"> </div>
-
-<p>{{ languages( { "de": "de/Theme_erstellen", "en": "en/Creating_a_Skin_for_Firefox", "es": "es/Creando_un_tema_para_Firefox", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox", "ja": "ja/Creating_a_Skin_for_Firefox", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa" } ) }}</p>
diff --git a/files/zh-tw/製作_firefox_佈景主題/install.rdf/index.html b/files/zh-tw/製作_firefox_佈景主題/install.rdf/index.html
deleted file mode 100644
index 220bf9e99c..0000000000
--- a/files/zh-tw/製作_firefox_佈景主題/install.rdf/index.html
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: install.rdf
-slug: 製作_Firefox_佈景主題/install.rdf
-translation_of: Archive/Themes/Creating_a_Skin_for_Firefox/install.rdf
----
-<p>
-</p><p>將下列程式碼複製貼到純文字檔中,命名為「<code>install.rdf</code>」:
-</p>
-<pre>&lt;?xml version="1.0"?&gt;
-
-&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
-
- &lt;Description about="urn:mozilla:install-manifest"&gt;
- &lt;em:id&gt;{Themes_UUID}&lt;/em:id&gt;
- &lt;em:version&gt;Themes_Version&lt;/em:version&gt;
-
-&lt;!-- 本附加元件所能支援的應用軟體及其版本,版本限制有最低需求跟最高限制兩種。 --&gt;
-
-&lt;em:targetApplication&gt;
- &lt;Description&gt;
- &lt;!-- Firefox 的 UUID --&gt;
- &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
- &lt;em:minVersion&gt;Min_FF_Version&lt;/em:minVersion&gt;
- &lt;em:maxVersion&gt;Max_FF_Version&lt;/em:maxVersion&gt;
- &lt;/Description&gt;
- &lt;/em:targetApplication&gt;
-
- &lt;!-- 其他資訊 --&gt;
- &lt;!-- My_Theme --&gt;
- &lt;em:name&gt;My_Theme&lt;/em:name&gt;
- &lt;em:description&gt;My_Theme&lt;/em:description&gt;
- &lt;em:creator&gt;Your_Name&lt;/em:creator&gt;
- &lt;em:contributor&gt;Contributors_Names&lt;/em:contributor&gt;
- &lt;em:homepageURL&gt;Themes_HomePage&lt;/em:homepageURL&gt;
- &lt;em:updateURL&gt; Url_of_Update_Location &lt;/em:updateURL&gt;
- &lt;em:aboutURL&gt; Url_of_About_Page &lt;/em:aboutURL&gt;
-
- &lt;!-- 佈景主題管理員用--&gt;
- &lt;em:internalName&gt;My_Theme&lt;/em:internalName&gt;
- &lt;/Description&gt;
-
-&lt;/RDF&gt;
-</pre>
-<div class="noinclude">
-</div>
-{{ languages( { "de": "de/Theme_erstellen/install.rdf", "en": "en/Creating_a_Skin_for_Firefox/install.rdf", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/install.rdf", "ja": "ja/Creating_a_Skin_for_Firefox/install.rdf", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/install.rdf", "pt": "pt/Criando_um_visual_para_o_Firefox/install.rdf" } ) }}
diff --git a/files/zh-tw/製作_firefox_佈景主題/uuid/index.html b/files/zh-tw/製作_firefox_佈景主題/uuid/index.html
deleted file mode 100644
index d992f7f9df..0000000000
--- a/files/zh-tw/製作_firefox_佈景主題/uuid/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: UUID
-slug: 製作_Firefox_佈景主題/UUID
-translation_of: Archive/Themes/Creating_a_Skin_for_Firefox/UUID
----
-<p>
-</p>
-<h3 id="UUID.EF.BC.9A.E9.80.9A.E7.94.A8.E5.94.AF.E4.B8.80.E8.AD.98.E5.88.A5.E7.A2.BC"> UUID:通用唯一識別碼 </h3>
-<p>UUID 可以至 <a class=" external" href="http://www.famkruithof.net/uuid/uuidgen">http://www.famkruithof.net/uuid/uuidgen</a> 取得,或者在 irc.mozilla.org 上輸入「firebot: uuid?」。
-</p>
-<h3 id=".E5.BB.B6.E4.BC.B8.E9.96.B1.E8.AE.80"> 延伸閱讀 </h3>
-<p><a href="zh_tw/%e8%a3%bd%e4%bd%9c_GUID">製作_GUID</a>
-</p>
-<div class="noinclude">
-</div>
-{{ languages( { "en": "en/Creating_a_Skin_for_Firefox/UUID", "es": "es/Creando_un_skin_para_Firefox/UUID", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/UUID", "ja": "ja/Creating_a_Skin_for_Firefox/UUID", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/UUID", "pt": "pt/Criando_um_visual_para_o_Firefox/UUID" } ) }}
diff --git a/files/zh-tw/製作_firefox_佈景主題/上手篇/index.html b/files/zh-tw/製作_firefox_佈景主題/上手篇/index.html
deleted file mode 100644
index 79c7e5bec1..0000000000
--- a/files/zh-tw/製作_firefox_佈景主題/上手篇/index.html
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: 上手篇
-slug: 製作_Firefox_佈景主題/上手篇
-translation_of: Archive/Mozilla/Creating_a_sking_for_Firefox_Getting_Started
----
-<p>
-</p>
-<h3 id=".E6.BA.96.E5.82.99" name=".E6.BA.96.E5.82.99"> 準備 </h3>
-<p>下載最新版的 Firefox 後安裝,別忘了也把 DOM 觀察器裝上去。
-</p>
-<h4 id=".E8.A7.A3.E5.A3.93.E7.B8.AE.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C" name=".E8.A7.A3.E5.A3.93.E7.B8.AE.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C"> 解壓縮佈景主題 </h4>
-<p>你可以修改任何既有的 Firefox 佈景主題,但為方便起見我們就以 Winstripe(Firefox 預設主題)為範例。這個主題放在 Firefox 安裝目錄的 &lt;tt&gt;classic.jar&lt;/tt&gt; 檔案中,而 jar 檔其實就是改了名字的 zip 檔,你可用與開 zip 檔相同的程式開啟 jar 並解壓縮其中的檔案。如果應用程式看不懂這改了檔名的 zip 檔,你可以自己將其改名為 &lt;tt&gt;classic.zip&lt;/tt&gt; 再解壓縮。
-</p>
-<h5 id="Classic.jar_.E4.BD.8D.E7.BD.AE" name="Classic.jar_.E4.BD.8D.E7.BD.AE"> Classic.jar 位置 </h5>
-<p><b>Linux:</b> /usr/lib/MozillaFirefox/chrome/classic.jar
-</p><p><b>Windows:</b> \Program Files\Mozilla Firefox\chrome\classic.jar
-</p><p><b>Mac OS X:</b>
-</p>
-<ul>
-<li>先進入應用程式的資料夾</li> <li>按住 Control 再點選 Firefox 應用程式圖示,選擇 Show Package Contents。</li> <li>接著再進入 contents/MacOS/Chrome/classic.jar</li>
-</ul>
-<p>將 &lt;tt&gt;classic.jar&lt;/tt&gt; 複製到另一個容易取用的資料夾(建議放到 &lt;tt&gt;Classic&lt;/tt&gt; 中)後解壓縮,記得確保目錄結構完整。
-</p>
-<div class="note">註:你可以將 &lt;tt&gt;.jar&lt;/tt&gt; 附檔名改為 &lt;tt&gt;.jar.zip&lt;/tt&gt; 再解壓縮</div>
-<h4 id=".E7.9B.AE.E9.8C.84" name=".E7.9B.AE.E9.8C.84"> 目錄 </h4>
-<p>在 &lt;tt&gt;classic.jar&lt;/tt&gt; 中有個名為 &lt;tt&gt;skin&lt;/tt&gt; 的目錄及 &lt;tt&gt;preview.png&lt;/tt&gt; 和 &lt;tt&gt;icon.png&lt;/tt&gt; 兩個檔案。
-</p>
-<dl><dt>&lt;tt&gt;skin&lt;/tt&gt;
-</dt><dd>&lt;tt&gt;skin&lt;/tt&gt; 裡頭就只有另一個 &lt;tt&gt;classic&lt;/tt&gt; 目錄,內含佈景主題的各種檔案。
-</dd><dt>&lt;tt&gt;classic&lt;/tt&gt;
-</dt><dd>&lt;tt&gt;classic&lt;/tt&gt; 內有以下各種目錄。
-</dd><dt>&lt;tt&gt;browser&lt;/tt&gt;
-</dt><dd>&lt;tt&gt;browser&lt;/tt&gt; 內含工具列、書籤管理員及選項視窗的各種圖示。
-</dd><dt>&lt;tt&gt;global&lt;/tt&gt;
-</dt><dd>所有指定瀏覽器物件顯示方式的重要 CSS 檔差不多都在 &lt;tt&gt;global&lt;/tt&gt; 裡面,所以這也是佈景主題最重要的目錄。
-</dd><dt>&lt;tt&gt;mozapps&lt;/tt&gt;
-</dt><dd>&lt;tt&gt;mozapps&lt;/tt&gt; 則有擴充套件管理員和更新精靈等視窗的樣式及圖示。
-</dd><dt>&lt;tt&gt;help&lt;/tt&gt;
-</dt><dd>&lt;tt&gt;help&lt;/tt&gt; 裡頭是說明手冊視窗的佈景檔。
-</dd><dt>&lt;tt&gt;communicator&lt;/tt&gt;
-</dt><dd>沒什麼重要的東西,基本上不理它也無妨。
-</dd></dl>
-<h4 id=".E5.AE.89.E8.A3.9D.E4.BD.A0.E7.9A.84.E6.96.B0.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C" name=".E5.AE.89.E8.A3.9D.E4.BD.A0.E7.9A.84.E6.96.B0.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C"> 安裝你的新佈景主題 </h4>
-<p>由於動態變更佈景主題在設定上有點麻煩,所以修改 Firefox 佈景主題後若想看到變化,得先學學重新包裝內建主題使其可安裝於 Firefox 的方法。接下來我們將把範例佈景主題命名為「My_Theme」,當然你也可以換成自己喜歡的名字。
-</p>
-<h5 id=".E8.A4.87.E8.A3.BD.E5.BF.85.E5.82.99.E6.AA.94.E6.A1.88" name=".E8.A4.87.E8.A3.BD.E5.BF.85.E5.82.99.E6.AA.94.E6.A1.88"> 複製必備檔案 </h5>
-<p>首先要將所有檔案以正確的目錄結構放好,所以請先建立一個名為 &lt;tt&gt;My_Theme&lt;/tt&gt; 的目錄,然後在其中放進剛剛解壓縮出來的 &lt;tt&gt;browser&lt;/tt&gt;、&lt;tt&gt;global&lt;/tt&gt;、&lt;tt&gt;communicator&lt;/tt&gt;、&lt;tt&gt;help&lt;/tt&gt; 及 &lt;tt&gt;mozapps&lt;/tt&gt; 目錄,當然 &lt;tt&gt;icon.png&lt;/tt&gt; 和 &lt;tt&gt;preview.png&lt;/tt&gt; 也要放進去。沒錯,這表示此新目錄內容結構與 &lt;tt&gt;classic.jar&lt;/tt&gt; 沒什麼不同。
-</p>
-<h5 id=".E5.BB.BA.E7.AB.8B.E5.AE.89.E8.A3.9D.E6.AA.94" name=".E5.BB.BA.E7.AB.8B.E5.AE.89.E8.A3.9D.E6.AA.94"> 建立安裝檔 </h5>
-<h6 id="Contents.rdf" name="Contents.rdf"> Contents.rdf </h6>
-<p>複製 <a href="zh_tw/%e8%a3%bd%e4%bd%9c_Firefox_%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c/contents.rdf">contents.rdf</a> 並放進 &lt;tt&gt;\My_Theme&lt;/tt&gt; 中,接著以文字編輯器開啟之。這個檔案是用以描述佈景主題的小型 XML 資料庫。
-</p><p>在程式碼中搜尋所有的「My_Place」字串,換成你自己取的佈景主題名稱。
-</p><p>而接下來的「包裝」區段列出你修改了哪些瀏覽器外觀組件。假設這個佈景包含 Chatzilla 的樣式,那麼也要加上另一行類似的程式、改以指定 Chatzilla。不過,以下的清單就是我們要改的所有東西,所以只要把藍色字稍加修改,符合你在本節之前所用的主題名稱即可。
-</p>
-<pre class="eval">&lt;RDF:li resource="urn:mozilla:skin:<span style="color: #00D; font-weight: bold;">My_Theme</span>:communicator"/&gt;
-&lt;RDF:li resource="urn:mozilla:skin:<span style="color: #00D; font-weight: bold;">My_Theme</span>:editor"/&gt;
-&lt;RDF:li resource="urn:mozilla:skin:<span style="color: #00D; font-weight: bold;">My_Theme</span>:global"/&gt;
-&lt;RDF:li resource="urn:mozilla:skin:<span style="color: #00D; font-weight: bold;">My_Theme</span>:messenger"/&gt;
-&lt;RDF:li resource="urn:mozilla:skin:<span style="color: #00D; font-weight: bold;">My_Theme</span>:navigator"/&gt;
-</pre>
-<p>接著存檔,關閉文字編輯器。
-</p>
-<h6 id="install.rdf" name="install.rdf"> install.rdf </h6>
-<p>複製 <a href="zh_tw/%e8%a3%bd%e4%bd%9c_Firefox_%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c/install.rdf">install.rdf</a> 並放進 &lt;tt&gt;My_Theme&lt;/tt&gt; 目錄中,接著以文字編輯器開啟之。這個檔案也是用以描述佈景主題的小型 XML 資料庫。
-</p>
-<pre> &lt;Description about="urn:mozilla:install-manifest"&gt;
- &lt;em:id&gt;{Themes_UUID}&lt;/em:id&gt;
- &lt;em:version&gt;Themes_Version&lt;/em:version&gt;
-</pre>
-<p>在第一段中你必須為佈景主題製作一個 <a href="zh_tw/%e8%a3%bd%e4%bd%9c_Firefox_%e4%bd%88%e6%99%af%e4%b8%bb%e9%a1%8c/UUID">UUID</a>,然後為此佈景主題版本編號。將上述兩種資訊填入第一段後繼續看下去。
-</p><p>接著要更改目標應用程式(在本例為 Firefox)的相容版本,填入最低需求跟最高相容限制版本號:
-</p>
-<pre> &lt;em:targetApplication&gt;
- &lt;Description&gt;
- &lt;!-- Firefox 的 UUID --&gt;
- &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
- &lt;em:minVersion&gt;Min_FF_Version&lt;/em:minVersion&gt;
- &lt;em:maxVersion&gt;Max_FF_Version&lt;/em:maxVersion&gt;
- &lt;/Description&gt;
- &lt;/em:targetApplication&gt;
-</pre>
-<p>設定相容版本號可以確保佈景主題不會裝在無法相容(或還沒測試過)的版本上,以免出問題。
-</p>
-<h4 id="CSS_.E6.AA.94.E6.A1.88" name="CSS_.E6.AA.94.E6.A1.88"> CSS 檔案 </h4>
-<p>這些目錄中的 CSS 檔告訴瀏覽器顯示按鈕或其他控制項的方式、在哪裡放圖、邊框跟內距該有多少等資訊。
-</p><p>接下來的例子,我們就試著更動標準按鈕。
-</p><p>將 &lt;tt&gt;global&lt;/tt&gt; 目錄裡的 &lt;tt&gt;button.css&lt;/tt&gt; 開啟於純文字編輯器中,接著找到 <code>button {</code> 區段;這一段定義一般狀態(滑鼠未移上、未停用也未選取)下的按紐圖樣。
-</p><p>將 <code>background-color:</code> 特性值改為 <code>DarkBlue</code>,再將 <code>color:</code> 改為 <code>White</code>,接著存檔。file.
-</p>
-<div class="note">原作者註:<i>more after I get done with some tests</i></div>
-<h4 id=".E9.87.8D.E6.96.B0.E5.8C.85.E8.A3.9D_JAR" name=".E9.87.8D.E6.96.B0.E5.8C.85.E8.A3.9D_JAR"> 重新包裝 JAR </h4>
-<p>現在只要用任一種 ZIP 壓縮軟體依下列目錄結構重新包裝 JAR 檔就行了:
-</p> <pre>/browser/*
-/communicator/*
-/global/*
-/help/*
-/mozapps/*
-/contents.rdf
-/install.rdf
-/icon.png
-/preview.png
- </pre>
-<p>要注意的是別連 &lt;tt&gt;My_Theme&lt;/tt&gt; 這個上層目錄都壓了進去,不然稍後用拖曳方式安裝佈景時會在毫無錯誤訊息的情況下安裝失敗。
-</p>
-<h4 id=".E5.BE.9E_Web_.E4.B8.8A.E5.AE.89.E8.A3.9D.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C" name=".E5.BE.9E_Web_.E4.B8.8A.E5.AE.89.E8.A3.9D.E4.BD.88.E6.99.AF.E4.B8.BB.E9.A1.8C"> 從 Web 上安裝佈景主題 </h4>
-<p>若想直接從網路上安裝佈景主題的 JAR 檔,可以採用這樣的 JavaScript:
-</p>
-<pre class="eval">&lt;a href='javascript:InstallTrigger.installChrome(InstallTrigger.SKIN,
- "<span style="color: #00D; font-weight: bold;">myskin.jar</span>", "<span style="color: #00D; font-weight: bold;">My Skin Theme</span>")'&gt;安裝佈景主題&lt;/a&gt;
-</pre>
-<p>而若要將 JAR 檔下載至硬碟後安裝,則可使用<a class="external" href="http://www.eightlines.com/neil/mozskin/installjar.html">這個表單</a>。
-</p><p>當然你也可以直接開啟 Mozilla 的佈景主題視窗,然後將 .jar 檔案拖進去安裝。
-</p><p>將資料夾轉為 .jar 檔超簡單,只要先壓縮成 .zip 檔後將「.zip」更名為「.jar」就行了。
-</p>
-<div class="noinclude">
-</div>
-{{ languages( { "de": "de/Theme_erstellen/Einf\u00fchrung", "en": "en/Creating_a_Skin_for_Firefox//Getting_Started", "es": "es/Creando_un_skin_para_Firefox/Como_empezar", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox//Premiers_pas", "ja": "ja/Creating_a_Skin_for_Firefox/Getting_Started", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/Zaczynamy", "pt": "pt/Criando_um_visual_para_o_Firefox/Iniciando" } ) }}