Web Messaging ដែលគេអាចហៅបានម៉្យាងទៀតថា cross-document messaging គឺជាបច្ចេកវិទ្យាថ្មីមួយទៀត ដែលត្រូវបានបញ្ចូលទៅក្នុង HTML5 ។ តាមរយៈបច្ចេកវិទ្យានេះ កូដសរសេរជាភាសា JS ទាំងឡាយនៅក្នុង browser អាចទាក់ទងរវាងគ្នាបាន ទោះបីជាកូដទាំងនោះមកពី server ខុសៗគ្នា យ៉ាងណាក៏ដោយ។
មុនពេលបច្ចេកវិទ្យា cross-document messaging ត្រូវបានបង្កើតឡើង browser មិនបានអនុញ្ញាតអោយកូដជាភាសា JS មកពី domain ខុសៗគ្នា អាចមានទំនាក់ទំនងជាមួយគ្នាបានឡើយ ដោយសារបញ្ហាសុវត្ថិភាព។
ក៏ប៉ុន្តែ ដើម្បីរក្សាសុវត្ថិភាព ទោះជាមិនបានរឹងមាំយ៉ាងណាក៏ដោយ ក៏បច្ចេកវិទ្យា cross-document messaging ផ្តល់លទ្ធភាពអោយអ្នកសរសេរកូដ អាចត្រួតពិនិត្យនិងផ្ទៀងផ្ទាត់មើល domain និងឬទិន្នន័យទាំងឡាយជាមុនសិន មុននឹងអនុញ្ញាតអោយកូដនៅក្នុង domain ខុសៗគ្នាទាំងនោះ អាចមានទំនាក់ទំនងជាមួយគ្នាបាន។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
<!DOCTYPE html> <html> <head> </head> <body style="font:14px/1.5 'Odor Mean Chey'"> <form id="form"> <input type="text" placeholder="បញ្ចូលសារ" name="message"> <input type="submit" value="បញ្ជូន"> </form> <iframe src="http://localhost:9000/iframe.html" id="iframe" style="display:block;height:80px"></iframe> <script> form.onsubmit = function() { var origin = document.getElementsByTagName('iframe')[0]; var val = document.forms["form"]["message"].value; origin.contentWindow.postMessage(val, 'http://localhost:9000'); return false; }; window.addEventListener('message', function(event) { if(event.origin == 'http://localhost:9000'){ alert(`ទិន្នន័យដែលផ្ញើរមកវិញពី domain ${event.origin} គឺ៖ ${event.data}`); } }); </script> </body> </html>
<!DOCTYPE html> <html> <head> </head> <body style="font:14px/1.5 'Odor Mean Chey'"> <script> window.addEventListener('message', function(event) { if (event.origin == 'http://localhost:9000') { if(event.data == 'needed data'){ alert(`ទិន្នន័យដែលផ្ញើរមកពី domain ${event.origin} ពិតជាត្រឹមត្រូវ!`); event.source.postMessage('sent back data', event.origin); }else{ alert(`ទិន្នន័យដែលផ្ញើរមកពី domain ${event.origin} មិនត្រឹមត្រូវទេ!`); } } }); </script> </body> </html>