Cross-document messaging or XDM

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>