在运行同一网站的两个不同浏览器之间轻松共享文本

我正在制作一个网站,该网站需要具有一个界面,我可以在其中选择一个选项并推送该选项,以更新在不同浏览器中运行的同一网站上的文本。到目前为止,我已经有了可以在第一个浏览器上更新文本的代码,但在另一个浏览器上却没有。

的HTML

<select id="currentEvent">
  <option value="" disabled selected>Current Event</option>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>
<button type="button" onclick="GetSelectedText()">Push Changes</button>

JS

function GetSelectedText() {
  var e = document.getElementById("currentEvent");
  var result = e.options[e.selectedIndex].text;
  document.getElementById("selectedEvent").innerHTML = result;
}

我只需要在每个浏览器上更新一行文本,所以请尽量简化,因为我仍在学习HTML并且是Web开发的新手。

提前致谢 :)

炸弹小队

我花了一点时间..用repl.it了一个例子..不要介意C文件,我就像自由环境下的C ..专注于backend.jsfrontend.html

其概念是,每个选项卡/客户端都获得一个新密钥,客户端发送其密钥,并循环查找数据,当有数据时,它将document.getElementById("selectedEvent") .innerHTML带有响应文本的元素放入但是,在该按钮中,它将发送一个帖子,该帖子会将文本放入共享输入密钥server object's的选项卡的密钥中。搜寻数据和放置数据的结合使它像魅力一样工作

backend.js

var http=require('http')
var fs=require('fs')
function randomChar(){
  var m=Math.random; var f=Math.floor
  var arr=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
  0,1,2,3,4,5,6,7,8,9,"!","@","$","&","*","(","-","_","=","+","[","]","'","~"]
  var newChar=""
  for(var i=0; i<f(m()*100+20); i++){newChar+=arr[f(m()*arr.length)]}
  return newChar
}
var obj={}
function frontEnd(){
  var specialChar=randomChar(); obj[specialChar]=""
  return `<script>window.key="${specialChar}"</script>`+
  fs.readFileSync(__dirname + '/frontend.html')
  .toString().split('')
  .map(a=>{if(a=="\\"){return(specialChar)}return(a)})
  .join('')
}
//server stuff below
var server=http.createServer((req,res)=>{
  if(req.method=="GET"){res.write(frontEnd())}
  else if(req.method=="POST"){
    if(req.headers.pw&&req.headers.inp){
      if(obj[req.headers.pw]!=undefined){obj[req.headers.pw]=req.headers.inp}
    }
    else if(req.headers.receive&&req.headers.key){
      res.write(obj[req.headers.key]||"")
    }
    else if(req.headers.end=="yes"&&req.headers.key){
      delete(obj[req.headers.key])
      console.log(`a key ${req.headers.key} was deleted`)
    }
  }
  res.end()
})
server.listen(8080)

frontend.html

<html>
<h3>for this tab manipulation, so that you cannot edit all tabs connected to this site, you need to know the <bold>KEY</bold> of someone else's tab</h3>
<p>your key is <bold>\</bold></p>
<input placeholder="enter other tab's key here" id="inp" />
<select id="currentEvent">
  <option value="" disabled selected>Current Event</option>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>
<button type="button" onclick="GetSelectedText()">Push Changes</button>
<h4 id="selectedEvent"></h4>
<script>
//loop checking for incoming changes (empty input("") means it would me treated as no input)
var select=document.getElementById("selectedEvent");
(async()=>{
  var options={
    method:'POST',
    headers:{'receive':'true','key':key}
  }
  while(true){
    let x=await fetch(location.href,options)
    let text=await x.text()
    if(text){select.innerHTML=text}
  }
})()
//now for the button
function GetSelectedText() {
  var e = document.getElementById("currentEvent");
  var result = e.options[e.selectedIndex].text;
  select.innerHTML = result;
  //sends an outgoing request that will edit the other tab
  var xhr=new XMLHttpRequest()
  xhr.open('POST',location.href,true)
  var inp=document.getElementById('inp')
  xhr.setRequestHeader('pw',inp.value)
  xhr.setRequestHeader('inp',result)
  xhr.send()
}
//now for a listener that will attempt to delete the key from the server as it closes
window.onbeforeunload = async function(){
  await fetch(location.href,{method:'POST',headers:{'end':'yes'}})
  //put return in front of the 'await' word in line above
  //and a confirm would appear when you try to close
}
</script>
</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Analytics(分析),使用两个不同的帐户跟踪同一网站,该怎么办?

来自分类Dev

比较同一网站的两个版本

来自分类Dev

试图了解同一网络上两个不同子网之间的交互

来自分类Dev

在同一网络中运行两个DHCP服务器

来自分类Dev

将指向同一台服务器的不同域重定向到同一网站的不同版本

来自分类Dev

将指向同一服务器的不同域重定向到同一网站的不同版本

来自分类Dev

检测两个浏览器窗口是否已打开到同一站点

来自分类Dev

Bootstrap:在同一浏览器中使用相同代码的两个文件结果不同

来自分类Dev

如何使两个接口在同一网络中使用同一网关?

来自分类Dev

如何运行同一Rails应用程序的两个不同版本

来自分类Dev

使用Safari的iPhone iOS 7在本地主机和远程服务器上同一网站的外观不同

来自分类Dev

Swift:在两个设备之间发送自定义数据(不在同一网络上)

来自分类Dev

如何检查是否从同一浏览器和IP触发了两个不同的页面或URL

来自分类Dev

如何在同一网站中同时使用Blazor客户端和服务器

来自分类Dev

不在同一网络中的两台服务器之间的scp

来自分类Dev

Qt在两个不同的线程中运行同一对象的2个方法

来自分类Dev

在 iis 上使用两个不同的 ssl 端口运行同一个站点

来自分类Dev

两台路由器,同一网络,不同的SSID和密码

来自分类Dev

同一网络适配器的两个IP

来自分类Dev

同一网络上的两个网关

来自分类Dev

ASP.NET MVC 运行同一网页的多个实例

来自分类Dev

CSS工具提示箭头在浏览器之间处于两个不同的位置

来自分类Dev

我患有“ Tab-itus”,在多个标签中打开同一网站

来自分类Dev

1Password中同一网站的多个帐户

来自分类Dev

如何在同一网站的iframe中显示会导致URL出现的onSubmit?

来自分类Dev

如何将Google Chrome浏览器作为两个唯一的Google Chrome浏览器运行?

来自分类Dev

如何查找是否从同一台计算机使用不同的浏览器访问了两个不同的帐户?

来自分类Dev

GreaseMonkey-在同一选项卡中运行的两个脚本之间共享数据

来自分类Dev

当 OpenShift 应该在 pod 内运行两个不同的容器时,它会运行同一个容器两次

Related 相关文章

  1. 1

    Google Analytics(分析),使用两个不同的帐户跟踪同一网站,该怎么办?

  2. 2

    比较同一网站的两个版本

  3. 3

    试图了解同一网络上两个不同子网之间的交互

  4. 4

    在同一网络中运行两个DHCP服务器

  5. 5

    将指向同一台服务器的不同域重定向到同一网站的不同版本

  6. 6

    将指向同一服务器的不同域重定向到同一网站的不同版本

  7. 7

    检测两个浏览器窗口是否已打开到同一站点

  8. 8

    Bootstrap:在同一浏览器中使用相同代码的两个文件结果不同

  9. 9

    如何使两个接口在同一网络中使用同一网关?

  10. 10

    如何运行同一Rails应用程序的两个不同版本

  11. 11

    使用Safari的iPhone iOS 7在本地主机和远程服务器上同一网站的外观不同

  12. 12

    Swift:在两个设备之间发送自定义数据(不在同一网络上)

  13. 13

    如何检查是否从同一浏览器和IP触发了两个不同的页面或URL

  14. 14

    如何在同一网站中同时使用Blazor客户端和服务器

  15. 15

    不在同一网络中的两台服务器之间的scp

  16. 16

    Qt在两个不同的线程中运行同一对象的2个方法

  17. 17

    在 iis 上使用两个不同的 ssl 端口运行同一个站点

  18. 18

    两台路由器,同一网络,不同的SSID和密码

  19. 19

    同一网络适配器的两个IP

  20. 20

    同一网络上的两个网关

  21. 21

    ASP.NET MVC 运行同一网页的多个实例

  22. 22

    CSS工具提示箭头在浏览器之间处于两个不同的位置

  23. 23

    我患有“ Tab-itus”,在多个标签中打开同一网站

  24. 24

    1Password中同一网站的多个帐户

  25. 25

    如何在同一网站的iframe中显示会导致URL出现的onSubmit?

  26. 26

    如何将Google Chrome浏览器作为两个唯一的Google Chrome浏览器运行?

  27. 27

    如何查找是否从同一台计算机使用不同的浏览器访问了两个不同的帐户?

  28. 28

    GreaseMonkey-在同一选项卡中运行的两个脚本之间共享数据

  29. 29

    当 OpenShift 应该在 pod 内运行两个不同的容器时,它会运行同一个容器两次

热门标签

归档