`
}
const initializeChat=(root)=>{
// Get the data-bot-src attribute from the script tag
const scriptTag = document.getElementById('chatbot-iframe');
const botSrc = scriptTag.getAttribute('data-bot-src');
// Add chat icon
root.insertAdjacentHTML("beforeend",chatButtonHtml)
// Add chat container with the correct URL
root.insertAdjacentHTML('beforeend',getChatContainerHtml(botSrc))
// 按钮元素
const chat_button=root.querySelector('.aibox-chat-button')
const chat_button_img=root.querySelector('.aibox-chat-button > img')
// 对话框元素
const chat_container=root.querySelector('#aibox-chat-container')
const viewport=root.querySelector('.aibox-openviewport')
const closeviewport=root.querySelector('.aibox-closeviewport')
const close_func=()=>{
chat_container.style['display']=chat_container.style['display']=='block'?'none':'block'
chat_button.style['display']=chat_container.style['display']=='block'?'none':'block'
}
close_icon=chat_container.querySelector('.aibox-chat-close')
chat_button.onclick = close_func
close_icon.onclick=close_func
const viewport_func=()=>{
if(chat_container.classList.contains('aibox-enlarge')){
chat_container.classList.remove("aibox-enlarge");
viewport.classList.remove('aibox-viewportnone')
closeviewport.classList.add('aibox-viewportnone')
}else{
chat_container.classList.add("aibox-enlarge");
viewport.classList.add('aibox-viewportnone')
closeviewport.classList.remove('aibox-viewportnone')
}
}
const drag=(e)=>{
if (['touchmove','touchstart'].includes(e.type)) {
chat_button.style.top=(e.touches[0].clientY-25)+'px'
chat_button.style.left=(e.touches[0].clientX-25)+'px'
} else {
chat_button.style.top=(e.y-25)+'px'
chat_button.style.left=(e.x-25)+'px'
}
chat_button.style.width =chat_button_img.naturalWidth+'px'
chat_button.style.height =chat_button_img.naturalHeight+'px'
}
if(true){
console.dir(chat_button_img)
chat_button.addEventListener("drag",drag)
chat_button.addEventListener("dragover",(e)=>{
e.preventDefault()
})
chat_button.addEventListener("dragend",drag)
chat_button.addEventListener("touchstart",drag)
chat_button.addEventListener("touchmove",drag)
}
viewport.onclick=viewport_func
closeviewport.onclick=viewport_func
}
/**
* 第一次进来的引导提示
*/
function initializeAIBox(){
const aibox=document.createElement('div')
const root=document.createElement('div')
root.id="aibox"
initializeAIBoxStyle(aibox)
aibox.appendChild(root)
document.body.appendChild(aibox)
initializeChat(root)
}
// 初始化全局样式
function initializeAIBoxStyle(root){
style=document.createElement('style')
style.type='text/css'
style.innerText= `
/* 放大 */
#aibox .aibox-enlarge {
width: 50%!important;
height: 100%!important;
bottom: 0!important;
right: 0 !important;
}
@media only screen and (max-width: 768px){
#aibox .aibox-enlarge {
width: 100%!important;
height: 100%!important;
right: 0 !important;
bottom: 0!important;
}
}
/* 引导 */
#aibox .aibox-mask {
position: fixed;
z-index: 999;
background-color: transparent;
height: 100%;
width: 100%;
top: 0;
left: 0;
}
#aibox .aibox-mask .aibox-content {
width: 64px;
height: 64px;
box-shadow: 1px 1px 1px 2000px rgba(0,0,0,.6);
position: absolute;
right: 0;
bottom: 30px;
z-index: 1000;
}
#aibox-chat-container {
width: 450px;
height: 600px;
display:none;
}
@media only screen and (max-width: 768px) {
#aibox-chat-container {
width: 100%;
height: 70%;
right: 0 !important;
}
}
#aibox .aibox-chat-button{
position: fixed;
bottom: 4rem;
right: 1rem;
cursor: pointer;
max-height:500px;
max-width:500px;
}
#aibox #aibox-chat-container{
z-index:10000;position: relative;
border-radius: 8px;
border: 1px solid #ffffff;
background: linear-gradient(188deg, rgba(235, 241, 255, 0.20) 39.6%, rgba(231, 249, 255, 0.20) 94.3%), #EFF0F1;
box-shadow: 0px 4px 8px 0px rgba(31, 35, 41, 0.10);
position: fixed;bottom: 16px;right: 16px;overflow: hidden;
}
#aibox #aibox-chat-container .aibox-operate{
top: 18px;
right: 15px;
position: absolute;
display: flex;
align-items: center;
}
#aibox #aibox-chat-container .aibox-operate .aibox-chat-close{
margin-left:5px;
cursor: pointer;
}
#aibox #aibox-chat-container .aibox-operate .aibox-openviewport{
cursor: pointer;
}
#aibox #aibox-chat-container .aibox-operate .aibox-closeviewport{
cursor: pointer;
}
#aibox #aibox-chat-container .aibox-viewportnone{
display:none;
}
#aibox #aibox-chat-container #aibox-chat{
height:100%;
width:100%;
border: none;
}
#aibox #aibox-chat-container {
animation: appear .4s ease-in-out;
}
@keyframes appear {
from {
height: 0;;
}
to {
height: 600px;
}
}`
root.appendChild(style)
}
function embedAIChatbot() {
initializeAIBox()
}
window.onload = embedAIChatbot