您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Insert User Details into the Custom Tab URLS
// ==UserScript== // @name tawkToCustomTabParams // @namespace http://tampermonkey.net/ // @version 0.2 // @description Insert User Details into the Custom Tab URLS // @author Anthony van Orizande // @match https://dashboard.tawk.to/ // @grant none // ==/UserScript== (function() { 'use strict'; var contactEmail = null; // Assume that jQuery is loaded by the Tawk.to client. // Activity loop to look for detail changes. setInterval(function () { $('div.chat-content-container').width('calc(50% - 10px)'); $('div.chat-details-container.ui-resizable').width('calc(50% - 10px)'); try { var $detailsForm = $('#details-form table tr'); if (!$detailsForm) { $detailsForm = $('#conversation-details-container table tr'); } // If we have a detail form then capture the details. if ($detailsForm && $detailsForm.length) { // Save the contact information. for(var i = 0; i < $detailsForm.length; i++) { var fieldNameRaw = $detailsForm[i].firstChild.innerText; var fieldName = (fieldNameRaw) ? String(fieldNameRaw).trim().toLowerCase(): null; var fieldValueRaw = $detailsForm[i].lastChild.innerText; var fieldValue = (fieldValueRaw) ? String(fieldValueRaw).trim() : null; switch(fieldName) { case 'email': contactEmail = fieldValue; break; } } } else { // Chat Form var chatEmailRaw = $('input.visitor-email-input').attr('value'); if (chatEmailRaw) { contactEmail = String(chatEmailRaw).trim(); } } // Update the Custom Tabs if any parameters found. var $customIFrames = $(".details-container .custom-view iframe"); if ($customIFrames && $customIFrames.length) { // Assume that a new iFrame will be injected if a new ticket or user is opened. for(var j = 0; j < $customIFrames.length; j++) { var $iframe = $customIFrames[j]; var iframeSrc = $iframe.src; if (contactEmail && $iframe.src.indexOf("($email$)") > -1) { iframeSrc = iframeSrc.replace("($email$)", contactEmail); } // Allow for otherwise invalid domain names by stripping 'https://tawk.to/' if found. // A local "HTTP:" address is invalid. // e.g. INVALID "http://localhost/dbFront/default.aspx?k=ew4dsjguxxtx94u1hy4qiu1ejw&t=clients&s=($email$)" // So we prefix it with "https://tawk.to/" which makes it look valid to the Tawk.to UI. // e.g. VALID "https://tawk.to/http://localhost/dbFront/default.aspx?k=ew4dsjguxxtx94u1hy4qiu1ejw&t=clients&s=($email$)" // At runtime this script will strip the "https://tawk.to/" iframeSrc = iframeSrc.replace('https://tawk.to/', ''); // Make the final update to the iFrame Source. if ($iframe.src != iframeSrc) { $iframe.src = iframeSrc; } } } } catch(ex) { console.error('Custom Tabs Error: ' + (typeof ex == 'string') ? ex : ex.message); } }, 100); })();