diff --git a/index.html b/index.html index f1b1824..ca1265f 100644 --- a/index.html +++ b/index.html @@ -185,20 +185,79 @@ }); }); - // Function to open Windows Explorer with a specific path using our integrated Go server + // Function to open Windows Explorer with a specific path using multiple methods for compatibility function openWindowsFolder(path) { - // Call our Go server to open the folder in Windows Explorer - fetch(`/open?path=${encodeURIComponent(path)}`) - .then(response => { - if (!response.ok) { - throw new Error('Failed to open folder'); - } - console.log('Folder opened successfully'); - }) - .catch(error => { - console.error('Error opening folder:', error); - alert('Could not open folder. Make sure the server is running.'); - }); + // Method 1: Try using ActiveX (works in Internet Explorer) + if (window.ActiveXObject !== undefined) { + try { + const shell = new ActiveXObject("Shell.Application"); + shell.Explore(path); + console.log('Folder opened via ActiveX'); + return; + } catch (e) { + console.log("ActiveX failed or not supported: " + e.message); + } + } + + // Method 2: Try using the file:// protocol + try { + // Format the path for the file:// protocol + const formattedPath = path.replace(/\\/g, '/'); // Replace backslashes with forward slashes + const fileUrl = 'file:///' + formattedPath; + + // Open in a new window + const newWindow = window.open(fileUrl, '_blank'); + + // Check if window was blocked by popup blocker + if (newWindow) { + console.log('Folder opened via file:// protocol'); + return; + } else { + console.log('Popup was blocked'); + } + } catch (e) { + console.log("file:// protocol failed: " + e.message); + } + + // Method 3: Fallback to server-side approach if available + try { + fetch(`/open?path=${encodeURIComponent(path)}`) + .then(response => { + if (!response.ok) { + throw new Error('Server method failed'); + } + console.log('Folder opened via server'); + }) + .catch(error => { + // If all methods fail, show instructions to the user + console.error('All methods failed:', error); + showFolderInstructions(path); + }); + } catch (e) { + // If fetch isn't available or fails immediately + showFolderInstructions(path); + } + } + + // Show instructions to the user when all automatic methods fail + function showFolderInstructions(path) { + const instructions = ` +
Automatické otevření složky selhalo. Zkuste jeden z následujících postupů:
+