so alles raus - einzeln wieder rein
die Statusleiste bleibt verschwunden
einzigen Effekt dadurch - die Passwortanzeige geht wieder
und ich kann mich mit dem Fx66beta einloggen
aber sonst
ich schwenke erst mal das "weiße Fähnchen"
hhmmmm....
so alles raus - einzeln wieder rein
die Statusleiste bleibt verschwunden
einzigen Effekt dadurch - die Passwortanzeige geht wieder
und ich kann mich mit dem Fx66beta einloggen
aber sonst
ich schwenke erst mal das "weiße Fähnchen"
hhmmmm....
hmmmmm.....
dann is bei mir irgend was anderes "kaputt"
(denn auch die "Passwortanzeige" geht nicht mehr (intern/ extern))
werde ich mal suchen woran es liegt
hatte aber auch schon alle *.js runter bis auf die Statusleiste
danke erst mal Andreas
:-???
hoffe ich bin hier richtig :wink:
was ist seit FX64beta passiert
im Fx66beta meine ich (in Fx65 grade noch akzeptabel)
was ist hier Falsch?
/* Statusleiste für Firefox 65.0 + x */
(function() {
if (location != 'chrome://browser/content/browser.xul')
return;
var tb = document.createElement('toolbar');
tb.id = 'new-toolbar';
tb.setAttribute('customizable', true);
tb.setAttribute('mode', 'icons');
var vbox = document.createElement('vbox');
vbox.id = 'new-toolbar-vbox';
document.getElementById('navigator-toolbox').parentNode.insertBefore(
vbox, document.getElementById('browser-bottombox'));
vbox.style.backgroundColor = '#0000CD';
vbox.appendChild(tb);
CustomizableUI.registerArea('new-toolbar', {legacy: true});
CustomizableUI.registerToolbarNode(tb);
})();
Alles anzeigen
zur Sicherheit "hänge" ich noch die userChrome.css dran
geht nicht
dann als Anhang
[attachment=0]userChrome.rar[/attachment]
ich find den fehler nicht
ps. die userChrome.css hat Andreas schon mal "gerichtet" für mich
gruß
hi
bei mir gehts
nur kann ich wie beim „Rechtsklick“ nix auswählen was ich machen/haben will
/* screenshot-button.uc.js */
(function() {
if (location != 'chrome://browser/content/browser.xul')
return;
try {
CustomizableUI.createWidget({
id: 'screenshot-button',
defaultArea: CustomizableUI.AREA_NAVBAR,
label: 'Screenshot',
tooltiptext: 'Screenshot',
onCommand: onCommand,
onCreated: function(button) {
button.style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAdUlEQVQokZVSwRHAIAgLPYfoXs7RCTpG53Avt7APrhaFU8gLMEEJAkEQgFbc7IxkVjt0r6Sp7VIVITumBpKt00FA2ThmjXzkfMMWO8EZFSj8LrUyjsG9b9DaJXq+qAIVxEUxtLHpaXE95dj1NcK2rmbwaGJ4Af0tIg00j/6iAAAAAElFTkSuQmCC)';
}
});
} catch(e) { };
function onCommand(event) {
let frameScript = function() {
const string = 'moz-extension://';
let n = 0;
addEventListener('DOMContentLoaded', function onLoad(event) {
content.setTimeout(function() {
let document = event.target;
if (!document.URL.startsWith(string))
return;
n++;
if (n == 2) {
document.querySelector('button.full-page').click();
} else if (n == 3) {
removeEventListener('DOMContentLoaded', onLoad);
document.querySelector('button.highlight-button-download').click();
};
}, 1000);
});
};
let frameScriptURI = 'data:, (' + frameScript.toString() + ')()';
let window = event.target.ownerGlobal;
window.gBrowser.selectedBrowser.messageManager.loadFrameScript(frameScriptURI, true);
let button = window.document.getElementById('pageAction-panel-screenshots');
if (button) {
button.click();
} else {
window.document.getElementById('pageActionButton').click();
window.setTimeout(function() {
window.document.getElementById('pageAction-panel-screenshots').click();
}, 0);
};
};
})();
Alles anzeigen
gruß uni
Mahlzeit
Allgemeine Informationen
------------------------
Name: Firefox
Version: 64.0b4
Build-ID: 20181025233934
Update-Kanal: beta
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Betriebssystem: Windows_NT 6.1
Fenster mit mehreren Prozessen: 1/1 (aktiviert (Standard))
Web-Inhaltsprozesse: 4/4
Unternehmensrichtlinien: Inaktiv
Google-Schlüssel: Gefunden
Mozilla-Location-Service-Schlüssel: Gefunden
Abgesicherter Modus: false
Absturzberichte der letzten 3 Tage
----------------------------------
Alle Absturzberichte Firefox-Funktionen
-------------------------------------------
Name: Firefox Screenshots
Version: 35.0.0
ID: screenshots@mozilla.org
Name: Form Autofill
Version: 1.0
ID: formautofill@mozilla.org
Name: Web Compat
Version: 3.0.0
ID: webcompat@mozilla.org
Name: WebCompat Reporter
Version: 1.1.0
ID: webcompat-reporter@mozilla.org
Erweiterungen
-------------
Name: All Downloader Professional
Version: 1.98.2
Aktiviert: true
ID: alldownloader@link64
Name: Bilder-Rückwärtssuche
Version: 3.3.4
Aktiviert: true
ID: {0da2e603-21ba-4422-8049-b6d9e013ed84}
Name: Context Search
Version: 3.69
Aktiviert: true
ID: olivier.debroqueville@gmail.com
Name: Copy PlainText
Version: 1.8
Aktiviert: true
ID: copyplaintext@eros.man
Name: Country Flags & IP Whois
Version: 0.2.7
Aktiviert: true
ID: {802a552e-13d1-4683-a40a-1e5325fba4bb}
Name: Cr!Box
Version: 1.0
Aktiviert: true
ID: {2433da4c-4e10-4f44-977c-dfdba395e6f6}
Name: Download with JDownloader
Version: 0.1.7
Aktiviert: true
ID: {03e07985-30b0-4ae0-8b3e-0c7519b9bdf6}
Name: Enhancer for YouTube™
Version: 2.0.75
Aktiviert: true
ID: enhancerforyoutube@maximerf.addons.mozilla.org
Name: Enterprise Policy Generator
Version: 4.0.0
Aktiviert: true
ID: enterprise-policy-generator@agenedia.com
Name: Forecastfox (fix version)
Version: 4.19
Aktiviert: true
ID: forecastfox@s3_fix_version
Name: Google Search "View Image" Button
Version: 1.5
Aktiviert: true
ID: {23cc126f-bd98-4a53-807a-cbc9af2cfe89}
Name: h264ify
Version: 1.0.9
Aktiviert: true
ID: jid1-TSgSxBhncsPBWQ@jetpack
Name: image-resizer
Version: 1.7.2c
Aktiviert: true
ID: jid0-hd39BGK3EuIbK47rGW3fZdR163o@jetpack
Name: MyJDownloader Browser Erweiterung
Version: 3.2.32
Aktiviert: true
ID: jid1-OY8Xu5BsKZQa6A@jetpack
Name: New Tab Override
Version: 14.1.0
Aktiviert: true
ID: newtaboverride@agenedia.com
Name: Open in VLC™ (VideoLAN)
Version: 0.1.0
Aktiviert: true
ID: {e427e22d-70e7-4132-8764-8bab93601197}
Name: Open Link with New Tab
Version: 1.0
Aktiviert: true
ID: Open-Link-with-New-Tab@sienori
Name: Save as PDF
Version: 1.12
Aktiviert: true
ID: save-as-pdf-ff@pdfcrowd.com
Name: Scroll To Top
Version: 4.7.5
Aktiviert: true
ID: jid0-gRmSxW9ByuHwGjLhtXJg27YnZRs@jetpack
Name: Stylus
Version: 1.4.22
Aktiviert: true
ID: {7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}
Name: Tab Flag
Version: 1.1
Aktiviert: true
ID: tab-flag@example.com
Name: Tampermonkey
Version: 4.8.5847
Aktiviert: true
ID: firefox@tampermonkey.net
Name: uBlock Origin
Version: 1.17.2
Aktiviert: true
ID: uBlock0@raymondhill.net
Name: uMatrix
Version: 1.3.14
Aktiviert: true
ID: uMatrix@raymondhill.net
Name: Video DownloadHelper
Version: 7.3.5
Aktiviert: true
ID: {b9db16a4-6edc-47ec-a1f4-b86292ed211d}
Name: WebsitePDF
Version: 1.8
Aktiviert: true
ID: website_pdf@lipoapps
Name: WX Download Status Bar
Version: 1.9.0
Aktiviert: true
ID: {a1c84bb7-d5fc-4906-90b4-965e520b29bf}
Name: YouTube Design Preserver
Version: 2.3.0
Aktiviert: true
ID: {5b7175f9-183b-4421-b105-82ef7ef426d0}
Name: Zoom Image
Version: 2.6.1
Aktiviert: true
ID: {b14f4076-e80d-4baa-8c7d-8c65dfd2519c}
Name: 1-Click YouTube Video Downloader
Version: 4.0.92
Aktiviert: false
ID: YoutubeDownloader@PeterOlayev.com
Name: About Sync
Version: 0.0.50
Aktiviert: false
ID: aboutsync@mhammond.github.com
Name: Download Star
Version: 2.0.2
Aktiviert: false
ID: {8cc0b007-e40b-46e8-9e50-e3bf021c94ab}
Name: Elite Download Manager
Version: 0.1.0
Aktiviert: false
ID: {07b7d513-2280-4ae2-b482-d12a156913c1}
Name: favicon-customizer
Version: 0.5
Aktiviert: false
ID: favicon-customizer@muffinresearch.co.uk
Name: HTML5 Video Everywhere!
Version: 0.4.8
Aktiviert: false
ID: html5-video-everywhere@lejenome.me
Name: Save Image In Folder
Version: 1.2
Aktiviert: false
ID: save-image-in-folder@revertron.com
Name: Translate Now
Version: 3.1.6
Aktiviert: false
ID: @translatenow
Name: Web Messenger for WhatsApp
Version: 64.1.0
Aktiviert: false
ID: {e1ab1333-aff6-42fe-84a5-55be2409491b}
Name: Webseiten standardmäßig stummschalten
Version: 1.10
Aktiviert: false
ID: @mute-sites-by-default
Name: YouTube Classic
Version: 1.2
Aktiviert: false
ID: {6acd0f4d-ab79-4b79-9b28-8bde65ae355c}
Sicherheitssoftware
------------------- Typ:
Typ:
Typ:
Grafik
------
Allgemeine Merkmale
Compositing: Direct3D 11 (Advanced Layers)
Asynchrones Wischen und Zoomen: Mausrad-Eingabe aktiviert; Ziehen der Bildlaufleiste aktiviert; Tastatur aktiviert; automatischer Bildlauf aktiviert
WebGL-1-Treiber: WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 000000000000915c) EGL_VERSION: 1.4 (ANGLE 2.1.0.790e8e6b4179) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_ANGLE_robust_resource_initialization EGL_ANGLE_create_context_extensions_enabled EGL_MOZ_create_context_provoking_vertex_dont_care EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug EGL_ANGLE_explicit_context
WebGL-1-Treiber: Renderer: Google Inc. -- ANGLE (AMD Radeon HD 8400 / R3 Series Direct3D11 vs_5_0 ps_5_0)
WebGL-1-Treiber: Version: OpenGL ES 2.0 (ANGLE 2.1.0.790e8e6b4179)
WebGL-1-Treiber: Erweiterungen: GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_explicit_context GL_ANGLE_explicit_context_gles1 GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_pack_reverse_row_order GL_ANGLE_program_cache_control GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_KHR_parallel_shader_compile GL_KHR_robust_buffer_access_behavior GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object OES_compressed_EAC_R11_signed_texture OES_compressed_EAC_R11_unsigned_texture OES_compressed_EAC_RG11_signed_texture OES_compressed_EAC_RG11_unsigned_texture OES_compressed_ETC2_RGB8_texture OES_compressed_ETC2_RGBA8_texture OES_compressed_ETC2_punchthroughA_RGBA8_texture OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture OES_compressed_ETC2_sRGB8_alpha8_texture OES_compressed_ETC2_sRGB8_texture
WebGL-1-Erweiterungen: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_sRGB EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context
WebGL-2-Treiber: WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 000000000000915c) EGL_VERSION: 1.4 (ANGLE 2.1.0.790e8e6b4179) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_ANGLE_robust_resource_initialization EGL_ANGLE_create_context_extensions_enabled EGL_MOZ_create_context_provoking_vertex_dont_care EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug EGL_ANGLE_explicit_context
WebGL-2-Treiber: Renderer: Google Inc. -- ANGLE (AMD Radeon HD 8400 / R3 Series Direct3D11 vs_5_0 ps_5_0)
WebGL-2-Treiber: Version: OpenGL ES 3.0 (ANGLE 2.1.0.790e8e6b4179)
WebGL-2-Treiber: Erweiterungen: GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_explicit_context GL_ANGLE_explicit_context_gles1 GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_multiview GL_ANGLE_pack_reverse_row_order GL_ANGLE_program_cache_control GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_KHR_parallel_shader_compile GL_KHR_robust_buffer_access_behavior GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object OES_compressed_EAC_R11_signed_texture OES_compressed_EAC_R11_unsigned_texture OES_compressed_EAC_RG11_signed_texture OES_compressed_EAC_RG11_unsigned_texture OES_compressed_ETC2_RGB8_texture OES_compressed_ETC2_RGBA8_texture OES_compressed_ETC2_punchthroughA_RGBA8_texture OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture OES_compressed_ETC2_sRGB8_alpha8_texture OES_compressed_ETC2_sRGB8_texture
WebGL-2-Erweiterungen: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
Direct2D: true
Zeichnen auf Nebenthread aktiviert: true
Anzahl Worker für Zeichnen auf Nebenthread: 3
DirectWrite: true (6.2.9200.22164)
GPU 1
Aktiv: Ja
Beschreibung: AMD Radeon HD 8400 / R3 Series
Herstellerkennung: 0x1002
Gerätekennung: 0x9830
Treiber-Version: 22.19.128.4
Treiber-Datum: 5-9-2017
Treiber: aticfx64 aticfx64 aticfx64 aticfx32 aticfx32 aticfx32 atiumd64 atidxx64 atidxx64 atiumdag atidxx32 atidxx32 atiumdva atiumd6a atitmm64
Subsys-ID: 00000000
RAM: 512
Weitere Informationen
AzureCanvasAccelerated: 0
AzureCanvasBackend: direct2d 1.1
AzureCanvasBackend (UI Process): skia
AzureContentBackend: direct2d 1.1
AzureContentBackend (UI Process): skia
AzureFallbackCanvasBackend (UI Process): cairo
GPUProcessPid: 4984
Entscheidungsprotokoll
WEBRENDER:
opt-in by default: WebRender is an opt-in feature
blocked by runtime: Qualified enable blocked
WEBRENDER_QUALIFIED:
blocked by env: No qualified hardware
ADVANCED_LAYERS:
available by user: Enabled for Windows 7 via user-preference
Lösungen
NO_CONSTANT_BUFFER_OFFSETTING: Unsupported by driver
Medien
------
Audio-Backend: wasapi
Max. Kanäle: 2
Bevorzugte Sample-Rate: 48000
Ausgabegeräte
Name: Gruppe
1 - L23600WHS (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\4&2f9ae949&0&0001
Lautsprecher (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Realtek Digital Output (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Eingabegeräte
Name: Gruppe
Mikrofon (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Front Green In (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Stereomix (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Rear (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Front Pink In (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Front (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Center (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Mikrofon (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Eingang (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Side (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Subwoofer (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Eingang (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_10438576&REV_1003\4&1b9cb72b&0&0001
Wichtige modifizierte Einstellungen
-----------------------------------
accessibility.typeaheadfind.flashBar: 0
browser.cache.disk.capacity: 1048576
browser.cache.disk.filesystem_reported: 1
browser.cache.disk.smart_size.first_run: false
browser.cache.frecency_experiment: 1
browser.download.folderList: 2
browser.download.lastDir.savePerSite: true
browser.download.useDownloadDir: false
browser.link.open_newwindow.restriction: 0
browser.places.smartBookmarksVersion: 8
browser.search.openintab: true
browser.sessionstore.restore_on_demand: false
browser.sessionstore.upgradeBackup.latestBuildID: 20181022150107
browser.startup.homepage: https://www.google.de
browser.startup.homepage_override.buildID: 20181025233934
browser.startup.homepage_override.mstone: 64.0
browser.tabs.closeWindowWithLastTab: false
browser.tabs.loadBookmarksInTabs: true
browser.tabs.loadInBackground: false
browser.tabs.warnOnClose: false
browser.urlbar.lastSuggestionsPromptDate: 20170912
browser.urlbar.matchBuckets: general:5,suggestion:Infinity
browser.urlbar.openintab: true
browser.urlbar.placeholderName: Google
browser.urlbar.timesBeforeHidingSuggestionsHint: 0
dom.allow_scripts_to_close_windows: true
dom.event.contextmenu.enabled: false
dom.max_chrome_script_run_time: 0
dom.push.userAgentID: 34e9d822f5084e53bac48f0d6b0218a3
extensions.lastAppVersion: 64.0
font.internaluseonly.changed: false
layers.mlgpu.sanity-test-failed: false
media.benchmark.vp9.fps: 61
media.benchmark.vp9.versioncheck: 5
media.cache_readhead_limit: 10520
media.cache_resume_treshold: 10520
media.gmp-gmpopenh264.abi: x86_64-msvc-x64
media.gmp-gmpopenh264.lastUpdate: 1508776766
media.gmp-gmpopenh264.version: 1.7.1
media.gmp-manager.buildID: 20181025233934
media.gmp-manager.lastCheck: 1540712488
media.gmp-widevinecdm.abi: x86_64-msvc-x64
media.gmp-widevinecdm.lastUpdate: 1540319071
media.gmp-widevinecdm.version: 4.10.1146.0
media.gmp.storage.version.observed: 1
media.hardware-video-decoding.failed: false
media.mp3.enabled: false
network.cookie.cookieBehavior: 3
network.cookie.prefsMigrated: true
network.dns.disablePrefetch: true
network.http.speculative-parallel-limit: 0
network.predictor.cleaned-up: true
network.predictor.enabled: false
network.prefetch-next: false
places.database.lastMaintenance: 1540394330
places.history.expiration.transient_current_max_pages: 128293
plugin.disable_full_page_plugin_for_types: application/pdf
plugin.state.flash: 0
print.printer_HP_Deskjet_F2200_series.print_bgcolor: false
print.printer_HP_Deskjet_F2200_series.print_bgimages: false
print.printer_HP_Deskjet_F2200_series.print_duplex: -437918235
print.printer_HP_Deskjet_F2200_series.print_edge_bottom: 0
print.printer_HP_Deskjet_F2200_series.print_edge_left: 0
print.printer_HP_Deskjet_F2200_series.print_edge_right: 0
print.printer_HP_Deskjet_F2200_series.print_edge_top: 0
print.printer_HP_Deskjet_F2200_series.print_evenpages: true
print.printer_HP_Deskjet_F2200_series.print_footercenter:
print.printer_HP_Deskjet_F2200_series.print_footerleft: &PT
print.printer_HP_Deskjet_F2200_series.print_footerright: &D
print.printer_HP_Deskjet_F2200_series.print_headercenter:
print.printer_HP_Deskjet_F2200_series.print_headerleft: &T
print.printer_HP_Deskjet_F2200_series.print_headerright: &U
print.printer_HP_Deskjet_F2200_series.print_in_color: true
print.printer_HP_Deskjet_F2200_series.print_margin_bottom: 0.5
print.printer_HP_Deskjet_F2200_series.print_margin_left: 0.5
print.printer_HP_Deskjet_F2200_series.print_margin_right: 0.5
print.printer_HP_Deskjet_F2200_series.print_margin_top: 0.5
print.printer_HP_Deskjet_F2200_series.print_oddpages: true
print.printer_HP_Deskjet_F2200_series.print_orientation: 0
print.printer_HP_Deskjet_F2200_series.print_page_delay: 50
print.printer_HP_Deskjet_F2200_series.print_paper_data: 9
print.printer_HP_Deskjet_F2200_series.print_paper_height: -1,00
print.printer_HP_Deskjet_F2200_series.print_paper_name:
print.printer_HP_Deskjet_F2200_series.print_paper_size_unit: 1
print.printer_HP_Deskjet_F2200_series.print_paper_width: -1,00
print.printer_HP_Deskjet_F2200_series.print_resolution: 300
print.printer_HP_Deskjet_F2200_series.print_reversed: false
print.printer_HP_Deskjet_F2200_series.print_scaling: 1,00
print.printer_HP_Deskjet_F2200_series.print_shrink_to_fit: true
print.printer_HP_Deskjet_F2200_series.print_to_file: false
print.printer_HP_Deskjet_F2200_series.print_unwriteable_margin_bottom: 0
print.printer_HP_Deskjet_F2200_series.print_unwriteable_margin_left: 0
print.printer_HP_Deskjet_F2200_series.print_unwriteable_margin_right: 0
print.printer_HP_Deskjet_F2200_series.print_unwriteable_margin_top: 0
privacy.history.custom: true
privacy.sanitize.pending: [{"id":"newtab-container","itemsToClear":[],"options":{}}]
security.default_personal_cert: Select Automatically
security.sandbox.content.tempDirSuffix: {a1ed2945-d22f-44ca-839c-c5c375c085da}
security.sandbox.plugin.tempDirSuffix: {08dd4ad7-5d64-47ce-a470-beedcd4b4d8c}
security.ssl.errorReporting.automatic: true
services.sync.declinedEngines:
services.sync.engine.bookmarks.buffer: true
signon.importedFromSqlite: true
storage.vacuum.last.index: 1
storage.vacuum.last.places.sqlite: 1538291163
Wichtige nicht veränderbare Einstellungen
-----------------------------------------
Chronik- und Lesezeichendatenbank
---------------------------------
JavaScript
----------
Inkrementelle GC: true
Barrierefreiheit
----------------
Aktiviert: false
Barrierefreiheit verhindern: 0
Accessible Handler verwendet: true
Dienst für Barrierefreiheit aufgerufen durch:
Bibliotheken-Versionen
----------------------
NSPR
Minimal vorausgesetzte Version: 4.20
Verwendete Version: 4.20
NSS
Minimal vorausgesetzte Version: 3.40
Verwendete Version: 3.40
NSSSMIME
Minimal vorausgesetzte Version: 3.40
Verwendete Version: 3.40
NSSSSL
Minimal vorausgesetzte Version: 3.40
Verwendete Version: 3.40
NSSUTIL
Minimal vorausgesetzte Version: 3.40
Verwendete Version: 3.40
Isolierte Umgebungen
--------------------
Ebene der isolierten Umgebung des Inhaltsprozesses: 5
Effektive Ebene der isolierten Umgebung: 5
Internationalisierung & Lokalisierung
-------------------------------------
Anwendungseinstellungen
Angeforderte Sprachen: ["de"]
Verfügbare Sprachen: ["de","en-US"]
Anwendungssprachen: ["de","en-US"]
Region-Einstellungen: ["de-DE"]
Standardsprache: "de"
Betriebssystem
Sprachen des Betriebssystems: ["de-DE"]
Region-Einstellungen: ["de-DE"]
Alles anzeigen
vielleicht hab ich was verpasst!?
in der 63beta... sind die Dynamischen Lesezeichen noch aufrufbar
nun in der 64beta... nicht mehr
Beispiel
http://www.mdr.de/sachsen-anhalt…100-podcast.xml wird als Datei (*.xml), wie in Seitenquelltext, dargestellt :-???
hab ich was vergessen einzustellen?
:-??
ok danke
hab mir jetzt beide ins Kontextmenü gemacht
//// Translate DeepL ////
///https://github.com/ardiman/userChrome.js/tree/master/contexttranslate///
// ex ContextTranslate.uc.js///
(function () {
if (location != 'chrome://browser/content/browser.xul')
return;
let translate = function () {
let browserMM = gBrowser.selectedBrowser.messageManager;
browserMM.addMessageListener('getSelection', function listener(message) {
let t = (message.data !== '');
let e = (document.charset || document.characterSet);
if (t) {
openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab');
} else {
openWebLinkIn('https://www.deepl.com/translate?u=' + encodeURIComponent(gBrowser.currentURI.spec) + '&hl=de-DE&ie=' + e + '&sl=auto&tl=de-DE', 'tab');
};
browserMM.removeMessageListener('getSelection', listener, true);
});
browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
}
let menuitem = document.createElement('menuitem');
menuitem.id = 'context-googletranslate';
menuitem.setAttribute('label', 'Übersetzen');
menuitem.setAttribute('tooltiptext', 'Mit DeeplTranslate übersetzen');
menuitem.setAttribute('oncommand', '(' + translate.toString() + ')()');
menuitem.classList.add('menuitem-iconic');
//Wer kein Icon möchte kann die nächsten beiden Zeilen auskommentieren/löschen
//menuitem.style.listStyleImage = 'url("https://www.deepl.com/favicon.ico")';
menuitem.style.listStyleImage = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACNwAAAjcB9wZEwgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGZSURBVDiNjZKxaxRBFMZ/b2ZHbWITUxkRC4PnBUW0k1gkoFlMYmIR8R+w0UZBFAvtLAMS0ipC0guCd0GOa23EJGTPkBRCSCNHKiEgMzvPwmjCuiv3lft97zff7BuhQraWTouJLwE0mmf518a7spwUPxwZvlmLms8B4wWrLZhHPvuwUg44N9afGPcc4T5gK4pFgSUv/jHrre8HgKHJE4nzHWBgn/sZdBuYqQB1Q+5rbLR2DUBy1J89GIbEmNmQNW8DqxWAgcS5IQBT5vqYP3H1Gw9AHyosAKECVA4QuKfIPMhHVKygV4OVU8ByT4BDsiI6rWpusdbYUdgpBpLSMeGTRLYx2o5q9kT0ja2P3xU401ODQJz1neYdVRkT9C1gyob/Ngg/3VbifJf9TVg1L2Q43UC1eo3eb8KfB7O7uRf7T782Yo8hXBG4DFwvaRgFFoP4GTqt7u/bFuTOp5dU9BUw8u/BOhqy5fZ//4HvNL6ErHlNkSmFb4e9YM1WMV+5xjxrvM+P99VBngI/qnK96UI66OrpEhcnThatXx/tiqJJdDA6AAAAAElFTkSuQmCC")';
let refItem = document.getElementById('context-inspect');
refItem.parentNode.insertBefore(menuitem, refItem);
})();
Alles anzeigen
sicher ist sicher :wink:
gruß uni
Könnte man dieses Script auf für den Übersetzer Deepl umbasteln?![]()
https://www.deepl.com/translate
ich hab das mal auf die schnelle ausprobiert
gibts da große relevante Unterschiede bei der Übersetzung
//// Translate DeepL ////
///https://github.com/ardiman/userChrome.js/tree/master/contexttranslate///
// ContextTranslateDeepL.uc.js
(function () {
if (location != 'chrome://browser/content/browser.xul')
return;
let translate = function () {
let browserMM = gBrowser.selectedBrowser.messageManager;
browserMM.addMessageListener('getSelection', function listener(message) {
let t = (message.data !== '');
let e = (document.charset || document.characterSet);
if (t) {
openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab');
} else {
openWebLinkIn('https://www.deepl.com/translate?u=' + encodeURIComponent(gBrowser.currentURI.spec) + '&hl=de-DE&ie=' + e + '&sl=auto&tl=de-DE', 'tab');
};
browserMM.removeMessageListener('getSelection', listener, true);
});
browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
}
let menuitem = document.createElement('menuitem');
menuitem.id = 'context-googletranslate';
menuitem.setAttribute('label', 'Übersetzen');
menuitem.setAttribute('tooltiptext', 'Mit DeeplTranslate übersetzen');
menuitem.setAttribute('oncommand', '(' + translate.toString() + ')()');
menuitem.classList.add('menuitem-iconic');
//Wer kein Icon möchte kann die nächsten beiden Zeilen auskommentieren/löschen
//menuitem.style.listStyleImage = 'url("https://www.deepl.com/favicon.ico")';
menuitem.style.listStyleImage = ' url("data:image/png;base64,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")';
let refItem = document.getElementById('context-inspect');
refItem.parentNode.insertBefore(menuitem, refItem);
})();
Alles anzeigen
wens denn so wäre
würde ich mir die mühe geben und das Icon von Deepl richtig machen (https://www.base64-image.de/)
:-??
gruß uni
:klasse: Aborix
thx thx thx
ach das ist das - da kann ich ja "lange" suchen :oops:
"endlich" brauche ich kein copy & paste mehr machen
gruß uni
Mahlzeit
Neues Problem?
unter
Allgemeine Informationen
------------------------
Name: Firefox
Version: 63.0b6
Build-ID: 20180913141435
Update-Kanal: beta
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Betriebssystem: Windows_NT 6.1
Fenster mit mehreren Prozessen: 1/1 (aktiviert (Standard))
Web-Inhaltsprozesse: 5/4
Unternehmensrichtlinien: Inaktiv
Google-Schlüssel: Gefunden
Mozilla-Location-Service-Schlüssel: Gefunden
Abgesicherter Modus: false
Absturzberichte der letzten 3 Tage
----------------------------------
Alle Absturzberichte Firefox-Funktionen
-------------------------------------------
Name: Application Update Service Helper
Version: 2.0
ID: aushelper@mozilla.org
Name: Firefox Screenshots
Version: 33.0.0
ID: screenshots@mozilla.org
...
Alles anzeigen
(mit 62.0b20 noch alles Top)
mit
//// Translate Google ////
(function () {
if (location != 'chrome://browser/content/browser.xul')
return;
let translate = function () {
let browserMM = gBrowser.selectedBrowser.messageManager;
browserMM.addMessageListener('getSelection', function listener(message) {
let t = (message.data !== '');
let e = (document.charset || document.characterSet);
if (t) {
gBrowser.loadOneTab('http://translate.google.com/#auto/de/' + encodeURIComponent(message.data), null, null, null, false, false);
} else {
gBrowser.loadOneTab('http://translate.google.com/translate?u=' + gBrowser.currentURI.spec + '&hl=de-DE&ie=' + e + '&sl=auto&tl=de-DE', null, null, null, false, false);
};
browserMM.removeMessageListener('getSelection', listener, true);
});
browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
}
let menuitem = document.createElement('menuitem');
menuitem.id = 'context-googletranslate';
menuitem.setAttribute('label', 'Übersetzen');
menuitem.setAttribute('tooltiptext', 'Mit GoogleTranslate übersetzen');
menuitem.setAttribute('oncommand', '(' + translate.toString() + ')()');
menuitem.classList.add('menuitem-iconic');
//Wer kein Icon möchte kann die nächsten beiden Zeilen auskommentieren/löschen
//menuitem.style.listStyleImage = 'url("https://translate.google.com/favicon.ico")';
menuitem.style.listStyleImage = ' url("data:image/png;base64,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")';
let refItem = document.getElementById('context-inspect');
refItem.parentNode.insertBefore(menuitem, refItem);
})();
Alles anzeigen
es/er geht nicht mehr seiner Aufgabe nach
ich weiß nicht mehr wo her ich es aus diesem Forum habe :traurig:
oder hab ich mal wieder was verpasst :-??
gruß uni
thx milupo & Böersenfeger
das war der entscheidende Denkanstoß
aus der von Aborix
dieses
machen
// ==UserScript==
// @name extras_config_menu.uc.js
// @compatibility Firefox 8.*, 9.*, 10.*, 11.*, 12.*, 13.*, 14.*, 15.*, 16.*, 17.*, 57.*
// @include main
// @version 1.0.20180113
// ==/UserScript==
var uProfMenu = {
// Beginn der Konfiguration
// In der folgenden Zeile (11) den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen:
TextOpenExe : 'C:\\Program Files (x86)\\Ultra Edit 32\\UEDIT32.exe',
// Falls gewuenscht, in Zeile 15 einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele:
// vFileManager: 'E:\\Total Commander\\Totalcmd.exe',
// vFileManager: 'C:\\Program Files (x86)\\FreeCommander\\FreeCommander.exe'
vFileManager: 'C:\\Program Files\\Totalcmd-9\\TOTALCMD64.EXE',
// In der folgenden Zeile (19) 'menu' eintragen, damit es unter "Extras" als Menue erscheint, sonst die id des gewuenschten
// Elements *nach* dem der Button erscheinen soll (z.B. 'urlbar', 'searchbar', 'undoclosetab-button','abp-toolbarbutton')
// Bitte nicht so etwas wie die Menue- oder Navigationsleiste (sondern einen Menuepunkt oder einen Button mit id auf diesen Leisten) eintragen:
warpmenuto: 'urlbar-container',
// Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht* beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen)
sortScripts: 0, // 1 zum Erzwingen der Sortierung
// Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]):
gmOrdner: 0,
// Einbindung CSS-Ordner (0: nein, 1: UserCSSLoader-Ordner im Chrome-Verzeichnis):
cssOrdner: 1,
// In Zeile 30 gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen.
// - Zum Ausblenden: abouts: [],
// - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein:
// abouts: ['0','about:about','about:addons','about:cache','about:config','about:support'],
abouts: ['about:about','about:addons','about:cache','about:config','about:crashes','about:home','about:memory','about:healthreport','about:plugins','about:support','about:preferences','about:performance'],
// Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja):
showNormalPrefs: 1,
// Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0):
enableScriptsToClip: 0,
// Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen:
enableRestart: 0,
// Ende der Konfiguration
init: function() {
if (this.warpmenuto.toLowerCase() == 'menu') {
// aufgrund des gewaehlten warpmenuto als Untermenue von Extras anlegen
var zielmenu = document.getElementById('menu_ToolsPopup');
if (zielmenu==null) {
userChrome.log("extras_config_menu.uc.js findet Zielmenue nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
"geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
"von 'zielmenu' kontrollieren.");
return;
}
var menu = zielmenu.appendChild(this.createME("menu","Config Men\u00FC",0,0,"ExtraConfigMenu"));
menu.setAttribute("class","menu-iconic");
menu.setAttribute("ondblclick","openTrustedLinkIn('about:config', 'tab');");
} else {
// als Button nach dem per warpmenuto gewaehlten Element anlegen (s. Kommentar ueber warpmenuto im Konfigurationsabschnitt)
var zielmenu = document.getElementById(this.warpmenuto);
if (zielmenu==null) {
userChrome.log("extras_config_menu.uc.js findet Zielpunkt '"+this.warpmenuto+"' nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
"geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
"von 'warpmenuto' kontrollieren.");
return;
}
var menu = zielmenu.parentNode.insertBefore(document.createElement('toolbarbutton'), zielmenu.nextSibling);
menu.setAttribute("id", "ExtraConfigMenu-button");
menu.setAttribute("class", "toolbarbutton-1");
menu.setAttribute("type", "menu");
menu.setAttribute("tooltiptext", "Extra Config Menü\nMittelklick \öffnet about:config");
menu.setAttribute("onclick", "if (event.button === 1 && !this.open) openTrustedLinkIn('about:config', 'tab');");
}
//ab hier ist alles gleich, egal ob Button oder Menue
var css = " \
#ExtraConfigMenu, #ExtraConfigMenu-button { \
list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=) !important; \
} \
#ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \
display: none !important; \
}";
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri,sss.AGENT_SHEET);
menu.setAttribute("onpopupshowing","uProfMenu.getScripts(0)");
var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup"));
menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(0,'userChrome.js');","uProfMenu_edit",0));
// Anlegen von Untermenues fuer die userChromeJS-Skripte (befuellt werden sie spaeter)
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-ucjs"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items"));
var submenu=menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items"));
if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0));
// Ende Anlegen von Untermenues fuer die userChromeJS-Skripte
menupopup.appendChild(document.createElement('menuseparator'));
// Einbindung von Konfigdateien
menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(0,'userChrome.css');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(0,'userContent.css');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0);
// Ende Einbindung von Konfigdateien
menupopup.appendChild(document.createElement('menuseparator'));
// Einbindung von Ordnern
switch (this.gmOrdner) {
case 1:
menupopup.appendChild(this.createME("menuitem","GM Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0);
break;
case 2:
menupopup.appendChild(this.createME("menuitem","USL Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0);
break;
case 3:
menupopup.appendChild(this.createME("menuitem","Scriptish Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0);
break;
}
if (this.cssOrdner) {
menupopup.appendChild(this.createME("menuitem","CSS-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSS');","uProfMenu_folder"),0);
}
menupopup.appendChild(this.createME("menuitem","Chromeordner","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Addonordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0);
// Ende Einbindung von Ordnern
// Einbindung von abouts
if (this.abouts.length>0) {
menupopup.appendChild(document.createElement('menuseparator'));
// falls der erste Eintrag des arrays ='0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden
if (this.abouts[0]=='0') {
for (var i = 1; i < this.abouts.length; i++) {
menupopup.appendChild(this.createME("menuitem",this.abouts[i],"openTrustedLinkIn('"+this.abouts[i]+"','tab')","uProfMenu_about"),0);
}
} else {
// der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items"));
this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1);
}
}
// Ende Einbindung von abouts
// Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden
if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createElement('menuseparator'));
// Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen
if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0);
// Falls addRestartButton installiert ist, Neustart zur Verfuegung stellen (addRestartButton 1.0.20120105mod erforderlich)
if(typeof(ToolRstartMod) != "undefined" || this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart",
"try{ToolRstartMod.restartApp(false);} catch(e){alert(e);}","uProfMenu_restart"),0);
},
getDirSep:function() {
// Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln
var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
var dirsep="/";
switch(osString) {
case "WINNT":
dirsep="\\";
break;
case "Linux":
dirsep="/";
break;
case "Darwin":
dirsep="/";
break;
}
return dirsep;
},
edit:function(OpenMode,Filename){
var Path = "";
var dSep = this.getDirSep(); // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen
switch (OpenMode){
//Current is Chrome Directory
case 0:
var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
break;
//Current is Profile Directory
case 1:
var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename;
break;
//Current is Root
case 2:
var Path = Filename;
break;
}
this.launch(this.TextOpenExe,Path);
},
dirOpen:function(Path){
if (this.vFileManager.length != 0) {
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
var args=[Path];
file.initWithPath(this.vFileManager);
process.init(file);
// Verzeichnis mit anderem Dateimanager oeffnen
process.run(false, args, args.length);
} else {
// Verzeichnis mit Dateimanager des Systems oeffnen
var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
dir.initWithPath(Path);
dir.launch();
}
},
prefDirOpen:function(prefDir){
Path = this.getPrefDirectoryPath(prefDir);
this.dirOpen(Path);
},
getPrefDirectoryPath:function(str){
// get profile directory
var file = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get(str, Components.interfaces.nsIFile);
if (str == 'CurProcD') {
file = file.parent;
};
return file.path;
},
launch:function(RanPath,OpenPath){
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
var args = [OpenPath];
file.initWithPath(RanPath);
// falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen:
if (!file.exists()) {
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
RanPath=pref.getCharPref("view_source.editor.path");
file.initWithPath(RanPath);
}
proc.init(file);
proc.run(false, args, args.length);
},
stringComparison:function(a, b){
a = a.toLowerCase();
a = a.replace(/ä/g,"a");
a = a.replace(/ö/g,"o");
a = a.replace(/ü/g,"u");
a = a.replace(/ß/g,"s");
b = b.toLowerCase();
b = b.replace(/ä/g,"a");
b = b.replace(/ö/g,"o");
b = b.replace(/ü/g,"u");
b = b.replace(/ß/g,"s");
return(a==b)?0:(a>b)?1:-1;
},
getScripts:function(iType) {
// Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf
let ucJsScripts = [];
let ucXulScripts = [];
// Suchmuster, also die Dateierweiterungen uc.js und uc.xul
let extjs = /\.uc\.js$/i;
let extxul= /\.uc\.xul$/i;
let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path);
// files mit Eintraegen im Chrome-Ordner befuellen
let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
// Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind
while (files.hasMoreElements()) {
let file = files.getNext().QueryInterface(Ci.nsIFile);
// keine gewuenschte Datei, deshalb continue
if (!extjs.test(file.leafName) && !extxul.test(file.leafName)) continue;
// uc.js gefunden -> im Array ablegen
if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName);
// uc.xul gefunden -> im Array ablegen
if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName);
}
if (this.sortScripts) {
ucJsScripts.sort(this.stringComparison);
ucXulScripts.sort(this.stringComparison);
}
// Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen
if (iType==0) {
this.fillMenu("submenu-ucjs","submenu-ucjs-items", "uc.js",ucJsScripts,"uProfMenu_ucjs",0);
this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0);
} else {
var result=this.fillClipboardValue(ucJsScripts,ucXulScripts);
Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result);
}
},
fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) {
// Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen
var e = document.getElementById(whichsubmenu);
e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')');
var popup = document.getElementById(whichsubmenuitems);
// zunaechst Untermenue zuruecksetzen
while(popup.hasChildNodes()){
popup.removeChild(popup.firstChild);
}
// Untermenue endlich befuellen
for (var i = scriptArray.length-1; i > -1; i--) {
// bisher nur eine Typunterscheidung (userChromeJS-Skript oder about:)
if (sTyp==0){
var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0);
mitem.setAttribute("onclick","uProfMenu.openAtGithub(event,'"+scriptArray[i]+"')");
mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" \u00F6ffnen,\n Rechtsklick: Suche auf GitHub");
} else {
var mitem = this.createME("menuitem",scriptArray[i],"openTrustedLinkIn('"+scriptArray[i]+"','tab')",sClass,0);
}
popup.insertBefore(mitem, popup.firstChild);
}
},
fillClipboardValue:function(sArray,xArray) {
var retValue;
var s = 0;
var x = 0;
s = sArray.length;
x = xArray.length;
switch(this.enableScriptsToClip) {
case 1:
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n")+
"\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n");
break;
default:
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------";
for (var i = 0; i < s ; i++) {
j = i + 1;
retValue = retValue + "\n" + j + ". " + sArray[i];
}
retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------";
if (this.enableScriptsToClip==2) s = 0;
for (var i = 0; i < x ; i++) {
j = i + s + 1;
retValue = retValue + "\n" + j + ". " + xArray[i];
}
break;
}
return retValue;
},
createME:function(sTyp,sLabel,sCommand,sClass,sId) {
// Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var m = document.createElementNS(XUL_NS, sTyp);
switch (sTyp) {
case "menuitem":
// this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0)
m.setAttribute('label', sLabel);
m.setAttribute('oncommand',sCommand);
m.setAttribute('class',sClass);
break;
case "menu":
// this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues")
m.setAttribute('label', sLabel);
m.setAttribute('id', sId);
break;
case "menupopup":
//this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups");
m.setAttribute('id', sId);
break;
}
return m;
},
openAtGithub:function(e,sScript) {
if (e.button==1){
// Mittelklick - Seite auf GitHub oeffnen (funktionier nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen):
var sUrl="https://github.com/ardiman/userChrome.js/tree/master/"+this.cleanFileName(sScript);
openWebLinkIn(sUrl, 'tab');
}
if (e.button==2){
// Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist):
e.preventDefault();
var sUrl="https://github.com/search?langOverride=&language=&q="+sScript+"&repo=&start_value=1&type=Code";
openWebLinkIn(sUrl, 'tab');
}
},
cleanFileName:function(sName) {
sName=sName.toLowerCase();
/* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen:
/Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/
/ "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen
*/
var regs=[/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/];
for (var i = 0; i < regs.length; i++) {
sName=sName.replace(regs[i],"");
}
return sName;
}
};
uProfMenu.init();
Alles anzeigen
lüpt thx allen
uni
Bitte testet:CSS Alles anzeigen// ==UserScript== // @name extras_config_menu.uc.js // @compatibility Firefox 8.*, 9.*, 10.*, 11.*, 12.*, 13.*, 14.*, 15.*, 16.*, 17.*, 57.* // @include main // @version 1.0.20180113 // ==/UserScript== var uProfMenu = { // Beginn der Konfiguration // In der folgenden Zeile (11) den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen: TextOpenExe : 'C:\\Program Files (x86)\\Notepad++\\notepad++.exe', // Falls gewuenscht, in Zeile 15 einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele: // vFileManager: 'E:\\Total Commander\\Totalcmd.exe', // vFileManager: 'C:\\Program Files (x86)\\FreeCommander\\FreeCommander.exe' vFileManager: '', // In der folgenden Zeile (19) 'menu' eintragen, damit es unter "Extras" als Menue erscheint, sonst die id des gewuenschten // Elements *nach* dem der Button erscheinen soll (z.B. 'urlbar', 'searchbar', 'undoclosetab-button','abp-toolbarbutton') // Bitte nicht so etwas wie die Menue- oder Navigationsleiste (sondern einen Menuepunkt oder einen Button mit id auf diesen Leisten) eintragen: warpmenuto: 'searchbar', // Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht* beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen) sortScripts: 0, // 1 zum Erzwingen der Sortierung // Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]): gmOrdner: 0, // Einbindung CSS-Ordner (0: nein, 1: UserCSSLoader-Ordner im Chrome-Verzeichnis): cssOrdner: 0, // In Zeile 30 gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen. // - Zum Ausblenden: abouts: [], // - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein: // abouts: ['0','about:about','about:addons','about:cache','about:config','about:support'], abouts: ['about:about','about:addons','about:cache','about:config','about:crashes','about:home','about:memory','about:healthreport','about:plugins','about:support','about:preferences','about:performance'], // Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja): showNormalPrefs: 1, // Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0): enableScriptsToClip: 0, // Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen: enableRestart: 0, // Ende der Konfiguration init: function() { if (this.warpmenuto.toLowerCase() == 'menu') { // aufgrund des gewaehlten warpmenuto als Untermenue von Extras anlegen var zielmenu = document.getElementById('menu_ToolsPopup'); if (zielmenu==null) { userChrome.log("extras_config_menu.uc.js findet Zielmenue nicht, evtl. weil ein anderes Fenster als das Hauptfenster " + "geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " + "von 'zielmenu' kontrollieren."); return; } var menu = zielmenu.appendChild(this.createME("menu","Config Men\u00FC",0,0,"ExtraConfigMenu")); menu.setAttribute("class","menu-iconic"); menu.setAttribute("ondblclick","openTrustedLinkIn('about:config', 'tab');"); } else { // als Button nach dem per warpmenuto gewaehlten Element anlegen (s. Kommentar ueber warpmenuto im Konfigurationsabschnitt) var zielmenu = document.getElementById(this.warpmenuto); if (zielmenu==null) { userChrome.log("extras_config_menu.uc.js findet Zielpunkt '"+this.warpmenuto+"' nicht, evtl. weil ein anderes Fenster als das Hauptfenster " + "geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " + "von 'warpmenuto' kontrollieren."); return; } var menu = zielmenu.parentNode.insertBefore(document.createElement('toolbarbutton'), zielmenu.nextSibling); menu.setAttribute("id", "ExtraConfigMenu-button"); menu.setAttribute("class", "toolbarbutton-1"); menu.setAttribute("type", "menu"); menu.setAttribute("tooltiptext", "Extra Config Menü\nMittelklick \öffnet about:config"); menu.setAttribute("onclick", "if (event.button === 1 && !this.open) openTrustedLinkIn('about:config', 'tab');"); } //ab hier ist alles gleich, egal ob Button oder Menue var css = " \ #ExtraConfigMenu, #ExtraConfigMenu-button { \ list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=) !important; \ } \ #ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \ display: none !important; \ }"; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri,sss.AGENT_SHEET); menu.setAttribute("onpopupshowing","uProfMenu.getScripts(0)"); var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup")); menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(0,'userChrome.js');","uProfMenu_edit",0)); // Anlegen von Untermenues fuer die userChromeJS-Skripte (befuellt werden sie spaeter) var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-ucjs")); var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items")); var submenu=menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul")); var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items")); if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0)); // Ende Anlegen von Untermenues fuer die userChromeJS-Skripte menupopup.appendChild(document.createElement('menuseparator')); // Einbindung von Konfigdateien menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(0,'userChrome.css');","uProfMenu_edit",0)); menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(0,'userContent.css');","uProfMenu_edit",0)); menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0)); menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0); // Ende Einbindung von Konfigdateien menupopup.appendChild(document.createElement('menuseparator')); // Einbindung von Ordnern switch (this.gmOrdner) { case 1: menupopup.appendChild(this.createME("menuitem","GM Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0); break; case 2: menupopup.appendChild(this.createME("menuitem","USL Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0); break; case 3: menupopup.appendChild(this.createME("menuitem","Scriptish Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0); break; } if (this.cssOrdner) { menupopup.appendChild(this.createME("menuitem","CSS-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSS');","uProfMenu_folder"),0); } menupopup.appendChild(this.createME("menuitem","Chromeordner","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0); menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0); menupopup.appendChild(this.createME("menuitem","Addonordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0); menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0); menupopup.appendChild(this.createME("menuitem","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0); // Ende Einbindung von Ordnern // Einbindung von abouts if (this.abouts.length>0) { menupopup.appendChild(document.createElement('menuseparator')); // falls der erste Eintrag des arrays ='0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden if (this.abouts[0]=='0') { for (var i = 1; i < this.abouts.length; i++) { menupopup.appendChild(this.createME("menuitem",this.abouts[i],"openTrustedLinkIn('"+this.abouts[i]+"','tab')","uProfMenu_about"),0); } } else { // der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about")); var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items")); this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1); } } // Ende Einbindung von abouts // Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createElement('menuseparator')); // Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0); // Falls addRestartButton installiert ist, Neustart zur Verfuegung stellen (addRestartButton 1.0.20120105mod erforderlich) if(typeof(ToolRstartMod) != "undefined" || this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart", "try{ToolRstartMod.restartApp(false);} catch(e){alert(e);}","uProfMenu_restart"),0); }, getDirSep:function() { // Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS; var dirsep="/"; switch(osString) { case "WINNT": dirsep="\\"; break; case "Linux": dirsep="/"; break; case "Darwin": dirsep="/"; break; } return dirsep; }, edit:function(OpenMode,Filename){ var Path = ""; var dSep = this.getDirSep(); // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen switch (OpenMode){ //Current is Chrome Directory case 0: var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename; break; //Current is Profile Directory case 1: var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename; break; //Current is Root case 2: var Path = Filename; break; } this.launch(this.TextOpenExe,Path); }, dirOpen:function(Path){ if (this.vFileManager.length != 0) { var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); var args=[Path]; file.initWithPath(this.vFileManager); process.init(file); // Verzeichnis mit anderem Dateimanager oeffnen process.run(false, args, args.length); } else { // Verzeichnis mit Dateimanager des Systems oeffnen var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); dir.initWithPath(Path); dir.launch(); } }, prefDirOpen:function(prefDir){ Path = this.getPrefDirectoryPath(prefDir); this.dirOpen(Path); }, getPrefDirectoryPath:function(str){ // get profile directory var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get(str, Components.interfaces.nsIFile); if (str == 'CurProcD') { file = file.parent; }; return file.path; }, launch:function(RanPath,OpenPath){ var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile); var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); var args = [OpenPath]; file.initWithPath(RanPath); // falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen: if (!file.exists()) { var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); RanPath=pref.getCharPref("view_source.editor.path"); file.initWithPath(RanPath); } proc.init(file); proc.run(false, args, args.length); }, stringComparison:function(a, b){ a = a.toLowerCase(); a = a.replace(/ä/g,"a"); a = a.replace(/ö/g,"o"); a = a.replace(/ü/g,"u"); a = a.replace(/ß/g,"s"); b = b.toLowerCase(); b = b.replace(/ä/g,"a"); b = b.replace(/ö/g,"o"); b = b.replace(/ü/g,"u"); b = b.replace(/ß/g,"s"); return(a==b)?0:(a>b)?1:-1; }, getScripts:function(iType) { // Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf let ucJsScripts = []; let ucXulScripts = []; // Suchmuster, also die Dateierweiterungen uc.js und uc.xul let extjs = /\.uc\.js$/i; let extxul= /\.uc\.xul$/i; let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path); // files mit Eintraegen im Chrome-Ordner befuellen let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator); // Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind while (files.hasMoreElements()) { let file = files.getNext().QueryInterface(Ci.nsIFile); // keine gewuenschte Datei, deshalb continue if (!extjs.test(file.leafName) && !extxul.test(file.leafName)) continue; // uc.js gefunden -> im Array ablegen if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName); // uc.xul gefunden -> im Array ablegen if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName); } if (this.sortScripts) { ucJsScripts.sort(this.stringComparison); ucXulScripts.sort(this.stringComparison); } // Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen if (iType==0) { this.fillMenu("submenu-ucjs","submenu-ucjs-items", "uc.js",ucJsScripts,"uProfMenu_ucjs",0); this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0); } else { var result=this.fillClipboardValue(ucJsScripts,ucXulScripts); Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result); } }, fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) { // Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen var e = document.getElementById(whichsubmenu); e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')'); var popup = document.getElementById(whichsubmenuitems); // zunaechst Untermenue zuruecksetzen while(popup.hasChildNodes()){ popup.removeChild(popup.firstChild); } // Untermenue endlich befuellen for (var i = scriptArray.length-1; i > -1; i--) { // bisher nur eine Typunterscheidung (userChromeJS-Skript oder about:) if (sTyp==0){ var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0); mitem.setAttribute("onclick","uProfMenu.openAtGithub(event,'"+scriptArray[i]+"')"); mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" \u00F6ffnen,\n Rechtsklick: Suche auf GitHub"); } else { var mitem = this.createME("menuitem",scriptArray[i],"openTrustedLinkIn('"+scriptArray[i]+"','tab')",sClass,0); } popup.insertBefore(mitem, popup.firstChild); } }, fillClipboardValue:function(sArray,xArray) { var retValue; var s = 0; var x = 0; s = sArray.length; x = xArray.length; switch(this.enableScriptsToClip) { case 1: retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n")+ "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n"); break; default: retValue = "userChromeJS/uc.js ("+s+"):\n------------------------"; for (var i = 0; i < s ; i++) { j = i + 1; retValue = retValue + "\n" + j + ". " + sArray[i]; } retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------"; if (this.enableScriptsToClip==2) s = 0; for (var i = 0; i < x ; i++) { j = i + s + 1; retValue = retValue + "\n" + j + ". " + xArray[i]; } break; } return retValue; }, createME:function(sTyp,sLabel,sCommand,sClass,sId) { // Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var m = document.createElementNS(XUL_NS, sTyp); switch (sTyp) { case "menuitem": // this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0) m.setAttribute('label', sLabel); m.setAttribute('oncommand',sCommand); m.setAttribute('class',sClass); break; case "menu": // this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues") m.setAttribute('label', sLabel); m.setAttribute('id', sId); break; case "menupopup": //this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups"); m.setAttribute('id', sId); break; } return m; }, openAtGithub:function(e,sScript) { if (e.button==1){ // Mittelklick - Seite auf GitHub oeffnen (funktionier nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen): var sUrl="https://github.com/ardiman/userChrome.js/tree/master/"+this.cleanFileName(sScript); openWebLinkIn(sUrl, 'tab'); } if (e.button==2){ // Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist): e.preventDefault(); var sUrl="https://github.com/search?langOverride=&language=&q="+sScript+"&repo=&start_value=1&type=Code"; openWebLinkIn(sUrl, 'tab'); } }, cleanFileName:function(sName) { sName=sName.toLowerCase(); /* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen: /Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/ / "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen */ var regs=[/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/]; for (var i = 0; i < regs.length; i++) { sName=sName.replace(regs[i],""); } return sName; } }; uProfMenu.init();
so nun ich :wink:
startet erst garnicht :-?? (auch mit dem vom github nicht)
ob mit komplett neuem Profil oder so wie es ist (original Profil)
oder alles Einzel nach einander hinein kopiert
im mom vollkommen wursch was ich mache - es klappt nich :-???
nu da werde ich mal weiter testen und erst mal mit dem alten „funzenden“ weiterleben
gruß uni
Alles anzeigen
Da muss definitiv am Script etwas geändert werden.
Der Teil zum aufrufen der about Seiten geht ja seit Firefox 63 beta nicht mehr.
Auch der Aufruf von about:config mit Mittelklick auf die Schaltfläche vom Script
geht nicht. Habe auch die Version von universum123 getestet, damit funktioniert
es auch nicht. Mal sehen ob jemand sich das mal anschauen könnte.
Mfg.
Endor
nö keine drängelei
schon „jemand“ eine Idee woran es liegen könnte
is nur passiert als ich „aus versehen“ draufgelickt habe weil ich was machen wollte
gruß uni
Was die Einleitung auch bedeuten sollte... aber was heißt " nicht mehr gehen "?
Warum strickst du ein funktionierendes Script um? Ggf. besteht dort ein Kopierfehler, eine Klammer oder ähnliches fehlt, etc.etc....
moin
jep bisschen verwirrend geschrieben
meinte natürlich
- es kommt keine Ausführung/Öffnung der Unterpunkte in "about:"
und die Version startet erst gar nicht :-???
// ==UserScript==
// @name extras_config_menu.uc.js
// @compatibility Firefox 8.*, 9.*, 10.*, 11.*, 12.*, 13.*, 14.*, 15.*, 16.*, 17.*, 57.*
// @include main
// @version 1.0.20180113
// ==/UserScript==
var uProfMenu = {
gruß
moin
danke euch beiden
werde das mir gleich mal zu Gemüte ziehen
gruß uni
moin
da das „Problem“ mit de „Updates“ gelöst ist
Allgemeine Informationen
------------------------
Name: Firefox
Version: 63.0b4
Build-ID: 20180906162647
Update-Kanal: beta
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Betriebssystem: Windows_NT 6.1
Fenster mit mehreren Prozessen: 1/1 (aktiviert (Standard))
Web-Inhaltsprozesse: 5/4
Unternehmensrichtlinien: Inaktiv
Google-Schlüssel: Gefunden
Mozilla-Location-Service-Schlüssel: Gefunden
Abgesicherter Modus: false
Absturzberichte der letzten 3 Tage
----------------------------------
Alle Absturzberichte Firefox-Funktionen
-------------------------------------------
.... mußte ich kürzen Forum meckert! Dein Beitrag besteht aus 71132 Zeichen.
Es sind maximal 60000 Zeichen erlaubt.
Sicherheitssoftware
------------------- Typ:
Alles anzeigen
bin ich bei mir auf ein neues gestoßen
original von ardiman GitHub
// ==UserScript==
// @name extras_config_menu.uc.js
// @compatibility Firefox 8.*, 9.*, 10.*, 11.*, 12.*, 13.*, 14.*, 15.*, 16.*, 17.*, 57.*
// @include main
// @version 1.0.20180113
// ==/UserScript==
var uProfMenu = {
// Beginn der Konfiguration
// In der folgenden Zeile (11) den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen:
TextOpenExe : 'C:\\Program Files (x86)\\Notepad++\\notepad++.exe',
// Falls gewuenscht, in Zeile 15 einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele:
// vFileManager: 'E:\\Total Commander\\Totalcmd.exe',
// vFileManager: 'C:\\Program Files (x86)\\FreeCommander\\FreeCommander.exe'
vFileManager: '',
// In der folgenden Zeile (19) 'menu' eintragen, damit es unter "Extras" als Menue erscheint, sonst die id des gewuenschten
// Elements *nach* dem der Button erscheinen soll (z.B. 'urlbar', 'searchbar', 'undoclosetab-button','abp-toolbarbutton')
// Bitte nicht so etwas wie die Menue- oder Navigationsleiste (sondern einen Menuepunkt oder einen Button mit id auf diesen Leisten) eintragen:
warpmenuto: 'searchbar',
// Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht* beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen)
sortScripts: 0, // 1 zum Erzwingen der Sortierung
// Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]):
gmOrdner: 0,
// Einbindung CSS-Ordner (0: nein, 1: UserCSSLoader-Ordner im Chrome-Verzeichnis):
cssOrdner: 0,
// In Zeile 30 gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen.
// - Zum Ausblenden: abouts: [],
// - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein:
// abouts: ['0','about:about','about:addons','about:cache','about:config','about:support'],
abouts: ['about:about','about:addons','about:cache','about:config','about:crashes','about:home','about:memory','about:healthreport','about:plugins','about:support','about:preferences','about:performance'],
// Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja):
showNormalPrefs: 1,
// Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0):
enableScriptsToClip: 0,
// Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen:
enableRestart: 0,
// Ende der Konfiguration
init: function() {
if (this.warpmenuto.toLowerCase() == 'menu') {
// aufgrund des gewaehlten warpmenuto als Untermenue von Extras anlegen
var zielmenu = document.getElementById('menu_ToolsPopup');
if (zielmenu==null) {
userChrome.log("extras_config_menu.uc.js findet Zielmenue nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
"geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
"von 'zielmenu' kontrollieren.");
return;
}
var menu = zielmenu.appendChild(this.createME("menu","Config Men\u00FC",0,0,"ExtraConfigMenu"));
menu.setAttribute("class","menu-iconic");
menu.setAttribute("ondblclick","getBrowser (). selectedTab = getBrowser (). addTab ('about:config');");
} else {
// als Button nach dem per warpmenuto gewaehlten Element anlegen (s. Kommentar ueber warpmenuto im Konfigurationsabschnitt)
var zielmenu = document.getElementById(this.warpmenuto);
if (zielmenu==null) {
userChrome.log("extras_config_menu.uc.js findet Zielpunkt '"+this.warpmenuto+"' nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
"geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
"von 'warpmenuto' kontrollieren.");
return;
}
var menu = zielmenu.parentNode.insertBefore(document.createElement('toolbarbutton'), zielmenu.nextSibling);
menu.setAttribute("id", "ExtraConfigMenu-button");
menu.setAttribute("class", "toolbarbutton-1");
menu.setAttribute("type", "menu");
menu.setAttribute("tooltiptext", "Extra Config Menü\nMittelklick \öffnet about:config");
menu.setAttribute("onclick","if (event.button === 1 && !this.open) {getBrowser (). selectedTab = getBrowser (). addTab ('about:config')};");
}
//ab hier ist alles gleich, egal ob Button oder Menue
var css = " \
#ExtraConfigMenu, #ExtraConfigMenu-button { \
list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=) !important; \
} \
#ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \
display: none !important; \
}";
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri,sss.AGENT_SHEET);
menu.setAttribute("onpopupshowing","uProfMenu.getScripts(0)");
var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup"));
menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(0,'userChrome.js');","uProfMenu_edit",0));
// Anlegen von Untermenues fuer die userChromeJS-Skripte (befuellt werden sie spaeter)
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-ucjs"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items"));
var submenu=menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items"));
if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0));
// Ende Anlegen von Untermenues fuer die userChromeJS-Skripte
menupopup.appendChild(document.createElement('menuseparator'));
// Einbindung von Konfigdateien
menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(0,'userChrome.css');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(0,'userContent.css');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0);
// Ende Einbindung von Konfigdateien
menupopup.appendChild(document.createElement('menuseparator'));
// Einbindung von Ordnern
switch (this.gmOrdner) {
case 1:
menupopup.appendChild(this.createME("menuitem","GM Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0);
break;
case 2:
menupopup.appendChild(this.createME("menuitem","USL Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0);
break;
case 3:
menupopup.appendChild(this.createME("menuitem","Scriptish Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0);
break;
}
if (this.cssOrdner) {
menupopup.appendChild(this.createME("menuitem","CSS-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSS');","uProfMenu_folder"),0);
}
menupopup.appendChild(this.createME("menuitem","Chromeordner","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Addonordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0);
// Ende Einbindung von Ordnern
// Einbindung von abouts
if (this.abouts.length>0) {
menupopup.appendChild(document.createElement('menuseparator'));
// falls der erste Eintrag des arrays ='0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden
if (this.abouts[0]=='0') {
for (var i = 1; i < this.abouts.length; i++) {
menupopup.appendChild(this.createME("menuitem",this.abouts[i],"getBrowser (). selectedTab = getBrowser (). addTab ('"+this.abouts[i]+"')","uProfMenu_about"),0);
}
} else {
// der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items"));
this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1);
}
}
// Ende Einbindung von abouts
// Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden
if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createElement('menuseparator'));
// Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen
if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0);
// Falls addRestartButton installiert ist, Neustart zur Verfuegung stellen (addRestartButton 1.0.20120105mod erforderlich)
if(typeof(ToolRstartMod) != "undefined" || this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart",
"try{ToolRstartMod.restartApp(false);} catch(e){alert(e);}","uProfMenu_restart"),0);
},
getDirSep:function() {
// Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln
var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
var dirsep="/";
switch(osString) {
case "WINNT":
dirsep="\\";
break;
case "Linux":
dirsep="/";
break;
case "Darwin":
dirsep="/";
break;
}
return dirsep;
},
edit:function(OpenMode,Filename){
var Path = "";
var dSep = this.getDirSep(); // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen
switch (OpenMode){
//Current is Chrome Directory
case 0:
var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
break;
//Current is Profile Directory
case 1:
var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename;
break;
//Current is Root
case 2:
var Path = Filename;
break;
}
this.launch(this.TextOpenExe,Path);
},
dirOpen:function(Path){
if (this.vFileManager.length != 0) {
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
var args=[Path];
file.initWithPath(this.vFileManager);
process.init(file);
// Verzeichnis mit anderem Dateimanager oeffnen
process.run(false, args, args.length);
} else {
// Verzeichnis mit Dateimanager des Systems oeffnen
var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
dir.initWithPath(Path);
dir.launch();
}
},
prefDirOpen:function(prefDir){
Path = this.getPrefDirectoryPath(prefDir);
this.dirOpen(Path);
},
getPrefDirectoryPath:function(str){
// get profile directory
var file = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get(str, Components.interfaces.nsIFile);
if (str == 'CurProcD') {
file = file.parent;
};
return file.path;
},
launch:function(RanPath,OpenPath){
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
var args = [OpenPath];
file.initWithPath(RanPath);
// falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen:
if (!file.exists()) {
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
RanPath=pref.getCharPref("view_source.editor.path");
file.initWithPath(RanPath);
}
proc.init(file);
proc.run(false, args, args.length);
},
stringComparison:function(a, b){
a = a.toLowerCase();
a = a.replace(/ä/g,"a");
a = a.replace(/ö/g,"o");
a = a.replace(/ü/g,"u");
a = a.replace(/ß/g,"s");
b = b.toLowerCase();
b = b.replace(/ä/g,"a");
b = b.replace(/ö/g,"o");
b = b.replace(/ü/g,"u");
b = b.replace(/ß/g,"s");
return(a==b)?0:(a>b)?1:-1;
},
getScripts:function(iType) {
// Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf
let ucJsScripts = [];
let ucXulScripts = [];
// Suchmuster, also die Dateierweiterungen uc.js und uc.xul
let extjs = /\.uc\.js$/i;
let extxul= /\.uc\.xul$/i;
let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path);
// files mit Eintraegen im Chrome-Ordner befuellen
let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
// Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind
while (files.hasMoreElements()) {
let file = files.getNext().QueryInterface(Ci.nsIFile);
// keine gewuenschte Datei, deshalb continue
if (!extjs.test(file.leafName) && !extxul.test(file.leafName)) continue;
// uc.js gefunden -> im Array ablegen
if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName);
// uc.xul gefunden -> im Array ablegen
if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName);
}
if (this.sortScripts) {
ucJsScripts.sort(this.stringComparison);
ucXulScripts.sort(this.stringComparison);
}
// Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen
if (iType==0) {
this.fillMenu("submenu-ucjs","submenu-ucjs-items", "uc.js",ucJsScripts,"uProfMenu_ucjs",0);
this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0);
} else {
var result=this.fillClipboardValue(ucJsScripts,ucXulScripts);
Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result);
}
},
fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) {
// Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen
var e = document.getElementById(whichsubmenu);
e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')');
var popup = document.getElementById(whichsubmenuitems);
// zunaechst Untermenue zuruecksetzen
while(popup.hasChildNodes()){
popup.removeChild(popup.firstChild);
}
// Untermenue endlich befuellen
for (var i = scriptArray.length-1; i > -1; i--) {
// bisher nur eine Typunterscheidung (userChromeJS-Skript oder about:)
if (sTyp==0){
var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0);
mitem.setAttribute("onclick","uProfMenu.openAtGithub(event,'"+scriptArray[i]+"')");
mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" \u00F6ffnen,\n Rechtsklick: Suche auf GitHub");
} else {
var mitem = this.createME("menuitem",scriptArray[i],"getBrowser (). selectedTab = getBrowser (). addTab ('"+scriptArray[i]+"')",sClass,0);
}
popup.insertBefore(mitem, popup.firstChild);
}
},
fillClipboardValue:function(sArray,xArray) {
var retValue;
var s = 0;
var x = 0;
s = sArray.length;
x = xArray.length;
switch(this.enableScriptsToClip) {
case 1:
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n")+
"\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n");
break;
default:
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------";
for (var i = 0; i < s ; i++) {
j = i + 1;
retValue = retValue + "\n" + j + ". " + sArray[i];
}
retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------";
if (this.enableScriptsToClip==2) s = 0;
for (var i = 0; i < x ; i++) {
j = i + s + 1;
retValue = retValue + "\n" + j + ". " + xArray[i];
}
break;
}
return retValue;
},
createME:function(sTyp,sLabel,sCommand,sClass,sId) {
// Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var m = document.createElementNS(XUL_NS, sTyp);
switch (sTyp) {
case "menuitem":
// this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0)
m.setAttribute('label', sLabel);
m.setAttribute('oncommand',sCommand);
m.setAttribute('class',sClass);
break;
case "menu":
// this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues")
m.setAttribute('label', sLabel);
m.setAttribute('id', sId);
break;
case "menupopup":
//this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups");
m.setAttribute('id', sId);
break;
}
return m;
},
openAtGithub:function(e,sScript) {
if (e.button==1){
// Mittelklick - Seite auf GitHub oeffnen (funktionier nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen):
var sUrl="https://github.com/ardiman/userChrome.js/tree/master/"+this.cleanFileName(sScript);
getBrowser (). selectedTab = getBrowser (). addTab (sUrl);
}
if (e.button==2){
// Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist):
e.preventDefault();
var sUrl="https://github.com/search?langOverride=&language=&q="+sScript+"&repo=&start_value=1&type=Code";
getBrowser (). selectedTab = getBrowser (). addTab (sUrl);
}
},
cleanFileName:function(sName) {
sName=sName.toLowerCase();
/* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen:
/Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/
/ "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen
*/
var regs=[/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/];
for (var i = 0; i < regs.length; i++) {
sName=sName.replace(regs[i],"");
}
return sName;
}
};
uProfMenu.init();
Alles anzeigen
meine
// ==UserScript==
// @name extras_config_menu.uc.js
// @compatibility Firefox 8.*, 9.*, 10.*, 11.*, 12.*, 13.*, 14.*, 15.*, 16.*, 17.*, 57.*
// @include main
// @version 1.0.20170826
// ==/UserScript==
var uProfMenu = {
// Beginn der Konfiguration
// In der folgenden Zeile (11) den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen:
TextOpenExe : 'C:\\Program Files (x86)\\Ultra Edit 32\\UEDIT32.exe',
// Falls gewuenscht, in Zeile 15 einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele:
// vFileManager: 'E:\\Total Commander\\Totalcmd.exe',
// vFileManager: 'C:\\Program Files\\Totalcmd-9\\TOTALCMD64.EXE'
vFileManager: 'C:\\Program Files\\Totalcmd-9\\TOTALCMD64.EXE',
// In der folgenden Zeile (19) 'menu' eintragen, damit es unter "Extras" als Menue erscheint, sonst die id des gewuenschten
// Elements *nach* dem der Button erscheinen soll (z.B. 'urlbar', 'searchbar', 'undoclosetab-button','abp-toolbarbutton')
// Bitte nicht so etwas wie die Menue- oder Navigationsleiste (sondern einen Menuepunkt oder einen Button mit id auf diesen Leisten) eintragen:
warpmenuto: 'urlbar-container',
// Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht* beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen)
sortScripts: 0, // 1 zum Erzwingen der Sortierung
// Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]):
gmOrdner: 1,
// Einbindung CSS-Ordner (0: nein, 1: UserCSSLoader-Ordner im Chrome-Verzeichnis):
cssOrdner: 1,
// In Zeile 30 gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen.
// - Zum Ausblenden: abouts: [],
// - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein:
// abouts: ['0','about:about','about:addons','about:cache','about:config','about:support'],
abouts: ['about:about','about:addons','about:cache','about:config','about:crashes','about:home','about:memory','about:healthreport','about:plugins','about:support','about:preferences','about:performance'],
// Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja):
showNormalPrefs: 0,
// Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0):
enableScriptsToClip: 0,
// Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen:
enableRestart: 0,
// Ende der Konfiguration
init: function() {
if (this.warpmenuto.toLowerCase() == 'menu') {
// aufgrund des gewaehlten warpmenuto als Untermenue von Extras anlegen
var zielmenu = document.getElementById('menu_ToolsPopup');
if (zielmenu==null) {
userChrome.log("extras_config_menu.uc.js findet Zielmenue nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
"geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
"von 'zielmenu' kontrollieren.");
return;
}
var menu = zielmenu.appendChild(this.createME("menu","Config Men\u00FC",0,0,"ExtraConfigMenu"));
menu.setAttribute("class","menu-iconic");
menu.setAttribute("ondblclick","getBrowser (). selectedTab = getBrowser (). addTab ('about:config');");
} else {
// als Button nach dem per warpmenuto gewaehlten Element anlegen (s. Kommentar ueber warpmenuto im Konfigurationsabschnitt)
var zielmenu = document.getElementById(this.warpmenuto);
if (zielmenu==null) {
userChrome.log("extras_config_menu.uc.js findet Zielpunkt '"+this.warpmenuto+"' nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
"geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
"von 'warpmenuto' kontrollieren.");
return;
}
var menu = zielmenu.parentNode.insertBefore(document.createElement('toolbarbutton'), zielmenu.nextSibling);
menu.setAttribute("id", "ExtraConfigMenu-button");
menu.setAttribute("class", "toolbarbutton-1");
menu.setAttribute("type", "menu");
menu.setAttribute("tooltiptext", "Extra Config Men\u00FC\nMittelklick \\u00F6ffnet about:config");
menu.setAttribute("onclick","if (event.button === 1 && !this.open) {getBrowser (). selectedTab = getBrowser (). addTab ('about:config')};");
}
//ab hier ist alles gleich, egal ob Button oder Menue
var css = " \
#ExtraConfigMenu, #ExtraConfigMenu-button { \
list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=) !important; \
} \
#ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \
display: none !important; \
}";
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri,sss.AGENT_SHEET);
menu.setAttribute("onpopupshowing","uProfMenu.getScripts(0)");
var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup"));
menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(0,'userChrome.js');","uProfMenu_edit",0));
// Anlegen von Untermenues fuer die userChromeJS-Skripte (befuellt werden sie spaeter)
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-ucjs"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items"));
var submenu=menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items"));
if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0));
// Ende Anlegen von Untermenues fuer die userChromeJS-Skripte
menupopup.appendChild(document.createElement('menuseparator'));
// Einbindung von Konfigdateien
menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(0,'userChrome.css');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(0,'userContent.css');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0));
menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0);
// Ende Einbindung von Konfigdateien
menupopup.appendChild(document.createElement('menuseparator'));
// Einbindung von Ordnern
switch (this.gmOrdner) {
case 1:
menupopup.appendChild(this.createME("menuitem","GM Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0);
break;
case 2:
menupopup.appendChild(this.createME("menuitem","USL Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0);
break;
case 3:
menupopup.appendChild(this.createME("menuitem","Scriptish Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0);
break;
}
if (this.cssOrdner) {
menupopup.appendChild(this.createME("menuitem","CSS-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSS');","uProfMenu_folder"),0);
}
menupopup.appendChild(this.createME("menuitem","Chromeordner","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Addonordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0);
menupopup.appendChild(this.createME("menuitem","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0);
// Ende Einbindung von Ordnern
// Einbindung von abouts
if (this.abouts.length>0) {
menupopup.appendChild(document.createElement('menuseparator'));
// falls der erste Eintrag des arrays ='0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden
if (this.abouts[0]=='0') {
for (var i = 1; i < this.abouts.length; i++) {
menupopup.appendChild(this.createME("menuitem",this.abouts[i],"getBrowser (). selectedTab = getBrowser (). addTab ('"+this.abouts[i]+"')","uProfMenu_about"),0);
}
} else {
// der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about"));
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items"));
this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1);
}
}
// Ende Einbindung von abouts
// Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden
if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createElement('menuseparator'));
// Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen
if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0);
// Falls addRestartButton installiert ist, Neustart zur Verfuegung stellen (addRestartButton 1.0.20120105mod erforderlich)
if(typeof(ToolRstartMod) != "undefined" || this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart",
"try{ToolRstartMod.restartApp(false);} catch(e){alert(e);}","uProfMenu_restart"),0);
},
getDirSep:function() {
// Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln
var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
var dirsep="/";
switch(osString) {
case "WINNT":
dirsep="\\";
break;
case "Linux":
dirsep="/";
break;
case "Darwin":
dirsep="/";
break;
}
return dirsep;
},
edit:function(OpenMode,Filename){
var Path = "";
var dSep = this.getDirSep(); // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen
switch (OpenMode){
//Current is Chrome Directory
case 0:
var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
break;
//Current is Profile Directory
case 1:
var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename;
break;
//Current is Root
case 2:
var Path = Filename;
break;
}
this.launch(this.TextOpenExe,Path);
},
dirOpen:function(Path){
if (this.vFileManager.length != 0) {
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
var args=[Path];
file.initWithPath(this.vFileManager);
process.init(file);
// Verzeichnis mit anderem Dateimanager oeffnen
process.run(false, args, args.length);
} else {
// Verzeichnis mit Dateimanager des Systems oeffnen
var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
dir.initWithPath(Path);
dir.launch();
}
},
prefDirOpen:function(prefDir){
Path = this.getPrefDirectoryPath(prefDir);
this.dirOpen(Path);
},
getPrefDirectoryPath:function(str){
// get profile directory
var file = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get(str, Components.interfaces.nsIFile);
if (str == 'CurProcD') {
file = file.parent;
};
return file.path;
},
launch:function(RanPath,OpenPath){
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
var args = [OpenPath];
file.initWithPath(RanPath);
// falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen:
if (!file.exists()) {
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
RanPath=pref.getCharPref("view_source.editor.path");
file.initWithPath(RanPath);
}
proc.init(file);
proc.run(false, args, args.length);
},
stringComparison:function(a, b){
a = a.toLowerCase();
a = a.replace(/\u00E4/g,"a");
a = a.replace(/\u00F6/g,"o");
a = a.replace(/\u00FC/g,"u");
a = a.replace(/\u00DF/g,"s");
b = b.toLowerCase();
b = b.replace(/\u00E4/g,"a");
b = b.replace(/\u00F6/g,"o");
b = b.replace(/\u00FC/g,"u");
b = b.replace(/\u00DF/g,"s");
return(a==b)?0:(a>b)?1:-1;
},
getScripts:function(iType) {
// Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf
let ucJsScripts = [];
let ucXulScripts = [];
// Suchmuster, also die Dateierweiterungen uc.js und uc.xul
let extjs = /\.uc\.js$/i;
let extxul= /\.uc\.xul$/i;
let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path);
// files mit Eintraegen im Chrome-Ordner befuellen
let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
// Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind
while (files.hasMoreElements()) {
let file = files.getNext().QueryInterface(Ci.nsIFile);
// keine gewuenschte Datei, deshalb continue
if (!extjs.test(file.leafName) && !extxul.test(file.leafName)) continue;
// uc.js gefunden -> im Array ablegen
if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName);
// uc.xul gefunden -> im Array ablegen
if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName);
}
if (this.sortScripts) {
ucJsScripts.sort(this.stringComparison);
ucXulScripts.sort(this.stringComparison);
}
// Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen
if (iType==0) {
this.fillMenu("submenu-ucjs","submenu-ucjs-items", "uc.js",ucJsScripts,"uProfMenu_ucjs",0);
this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0);
} else {
var result=this.fillClipboardValue(ucJsScripts,ucXulScripts);
Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result);
}
},
fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) {
// Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen
var e = document.getElementById(whichsubmenu);
e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')');
var popup = document.getElementById(whichsubmenuitems);
// zunaechst Untermenue zuruecksetzen
while(popup.hasChildNodes()){
popup.removeChild(popup.firstChild);
}
// Untermenue endlich befuellen
for (var i = scriptArray.length-1; i > -1; i--) {
// bisher nur eine Typunterscheidung (userChromeJS-Skript oder about:)
if (sTyp==0){
var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0);
mitem.setAttribute("onclick","uProfMenu.openAtGithub(event,'"+scriptArray[i]+"')");
mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" \u00F6ffnen,\n Rechtsklick: Suche auf GitHub");
} else {
var mitem = this.createME("menuitem",scriptArray[i],"getBrowser (). selectedTab = getBrowser (). addTab ('"+scriptArray[i]+"')",sClass,0);
}
popup.insertBefore(mitem, popup.firstChild);
}
},
fillClipboardValue:function(sArray,xArray) {
var retValue;
var s = 0;
var x = 0;
s = sArray.length;
x = xArray.length;
switch(this.enableScriptsToClip) {
case 1:
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n")+
"\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n");
break;
default:
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------";
for (var i = 0; i < s ; i++) {
j = i + 1;
retValue = retValue + "\n" + j + ". " + sArray[i];
}
retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------";
if (this.enableScriptsToClip==2) s = 0;
for (var i = 0; i < x ; i++) {
j = i + s + 1;
retValue = retValue + "\n" + j + ". " + xArray[i];
}
break;
}
return retValue;
},
createME:function(sTyp,sLabel,sCommand,sClass,sId) {
// Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var m = document.createElementNS(XUL_NS, sTyp);
switch (sTyp) {
case "menuitem":
// this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0)
m.setAttribute('label', sLabel);
m.setAttribute('oncommand',sCommand);
m.setAttribute('class',sClass);
break;
case "menu":
// this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues")
m.setAttribute('label', sLabel);
m.setAttribute('id', sId);
break;
case "menupopup":
//this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups");
m.setAttribute('id', sId);
break;
}
return m;
},
openAtGithub:function(e,sScript) {
if (e.button==1){
// Mittelklick - Seite auf GitHub oeffnen (funktionier nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen):
var sUrl="https://github.com/ardiman/userChrome.js/tree/master/"+this.cleanFileName(sScript);
getBrowser (). selectedTab = getBrowser (). addTab (sUrl);
}
if (e.button==2){
// Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist):
e.preventDefault();
var sUrl="https://github.com/search?type=Everything&language=&q="+sScript+"&repo=&langOverride=&start_value=1";
getBrowser (). selectedTab = getBrowser (). addTab (sUrl);
}
},
cleanFileName:function(sName) {
sName=sName.toLowerCase();
/* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen:
/Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/
/ "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen
*/
var regs=[/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/];
for (var i = 0; i < regs.length; i++) {
sName=sName.replace(regs[i],"");
}
return sName;
}
};
uProfMenu.init();
Alles anzeigen
und zwar das darin die unter „Punkte“ "about" --> nicht mehr gehen
[attachment=0]extras_config_menu.uc.js.png[/attachment]
ist das nur bei mir so?
hat zeit - brauche das nicht so oft!
gruß uni
moin
Firefox
Version 63.0b4
Build-ID 20180906162647
Update-Chronik
Update-Kanal beta
User-Agent Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Betriebssystem Windows_NT 6.1
frage
wo ist der Punkt
„Nicht nach Updates suchen (nicht empfohlen)“ geblieben
weil ich mach das alle paar Tage (soweit vorhanden) selbst
[attachment=0]Wo ist - Nicht nach Updates suchen - geblieben (kleiner).png[/attachment]
Antwort hat zeit!
da ich bis Montag eh nix mache an Fx
gruß uni
„alles nur geklaut“
wer will kann das mal probieren (bei mir hats bis jetzt kein schaden verursacht)
ZitatAlles anzeigenAm 30.03.2018 veröffentlicht
Altes YouTube-Design zurück in unter einer Minute!
Du willst das ältere YouTube Aussehen wiederherstellen? Das geht ganz schnell mit diesem Tutorial! Es geht auch noch 2018!auf YouTube
Rechts-klick in/auf Hintergrund
klick auf (Element) Untersuchen
in „Konsole“ auf/in Eingabefeld das eingeben
Codedocument.cookie = document.cookie.split(' ').filter(o=>o.indexOf('PREF=')!==-1)[0].replace(';','')+'&f5=30030&f6=8;domain=.youtube.com;path=/';
Neuladen (F5) oder Neustart
wie gesagt „ohne Gewähr“
wenn nicht gewünscht löschen
gruß
:-??
brauch man nich nur auf Classic zurück stellen?
>>Creator Studio Classic<<< unten links ??
oder verstehe ich da was falsch?
wenn ich die WE dazu nehme zur Classic wirds arsch lahm :traurig:
gruß